The future of SQLite

Apple has announced that the next version of Safari will no longer support SQLite. This has been confirmed in the beta of iOS 13 – it’s gone.

There’s no need to panic. There are workarounds, which I’ll get to later in this post. Also, there are no indications that Google will do the same with Chrome.

Some History

SQLite was introduced into browsers many years ago as WebSQL. It was a great idea: SQLite is small, powerful and solid. You can make great apps with it. The problem came from the standards committee. W3C prefers a clear standard with alternative implementations: saying “Just use SQLite” isn’t good enough. They decided, in 2009, to deprecate WebSQL and replace it with IndexedDB.

(Behind the scenes, I hear there were some heavy politics going on. Microsoft and Oracle were both very unhappy with WebSQL using SQLite – they each had their own established database software and did not want an upstart competitor to become standard.)

Regardless, Safari and Google continued to include WebSQL in their browsers. FireFox and IE did not. https://caniuse.com/#search=websql

The suggested replacement, IndexedDB, is not a SQL database. It’s more of an indexed file system. It’s been criticized for being slow, clumsy and inconsistently implemented. For more information, see this article: https://developers.google.com/web/ilt/pwa/working-with-indexeddb

Alternatives

Web Apps on Android: No problem – Chrome continues to support WebSQL.

Web Apps on iOS: Either use Chrome to run your app, or make your app a native app.

Native Apps for iOS and Android: Use the PhoneGap plugin for SQLite (as you probably have been). Just as this to your config.xml – no changes to your code.

<plugin name="cordova-sqlite-evcore-extbuild-free" source="npm" />

Desktop Apps: Another reason to use Electron. Use the SQLite plugin https://www.npmjs.com/package/sqlite

Web Sharing

On your mobile device, sharing something is usually as simple as clicking the Share button, choosing which app you want to send it to, and then who you to share it with. Now you can add this capability to your own apps.

Here’s what the share button looks like on iOS:

Click on it, and you’ll see something like this:

Use the navigator.share() function in your app to bring up the Web Share picker. Not all browsers have this function, so check if it exists before calling.

You’ll need to put the data you want to pass to the app share in the argument to the share() function. For more details, see this Tech Note: https://wiki.appstudio.dev/Web_Sharing

Setting your app as a Web Share Target

On Android, you can add your app to the Web Share picker, so other apps can call yours. Your app has to be a PWA (which AppStudio now makes automatically) and needs to register itself.

It will now appear on the Web Share picker:

You can see the code to do this in this Tech Note: https://wiki.appstudio.dev/Web_Sharing.

AppStudio and jqWidgets

We’re happy to announce a partnership agreement with jqWidgets. It’s in the form of additional documentation, extra support and discounts for using one product with the other.

jqWidgets Ltd. provides controls for building professional web sites and mobile apps. It is built entirely on open standards and technologies like HTML5, CSS, JavaScript and jQuery. jQWidgets enables responsive web development and helps you create apps and websites that look beautiful on desktops, tablets and smart phones.

These controls work well with AppStudio. More that 2 dozen of them are built into AppStudio’s ToolBox.

The two companies have a similar approach to looking after their customers. Quick support on web boards, near instant bug fixes and regular new releases. The initial release of each product was at about the same time: 2011 and 2010, with major updates every year or so.

Both products are constantly updated to the latest web standards, so you will be able to keep your apps up to date.

For more information, see https://www.nsbasic.com/app/jqWidgets.php

As part of the agreement, AppStudio users can get jqWidgets licenses for 20% off. Contact sales@jqwidgets.com.

2019 Contest Results!

We’re pleased to announce the results of our 2019 programming contest.

We had three categories: Business, Non Commercial and Education. All registered NSB/AppStudio users were welcome to participate in the contest. Prizes were $100 USD in each category.

Judging was by NSB’s experts. All judging was arbitrary and final. We looked for quality, performance, ease of use, sophistication and overall coolness. Apps could be anything: Enterprise, business, commercial, education, games or even something whimsical.

All programs had to be created using NSB/AppStudio. Entries could be commercial, shareware or freeware, and for iPhone, iPad, Android or multiple platforms. Code could be written in JavaScript or Basic, HTML5 and css.

Without further ado, here are our winners: (full results are here)

Continue reading “2019 Contest Results!”

Progressive Web App (PWA) Support

AppStudio 7.4 brings support for Progressive Web Apps (PWA). The idea behind PWAs is to give users a more native app like experience when using Web Apps.

One of the important features of PWAs is the ability to run when there is no internet connection. To do this, the app needs to save all its components locally when it initially loads from the website. The app can then load those instead of going to the web each time you run the app.

Before version 7.4, AppStudio did this using Application Caching. Each app had a manifest containing the list of files to be cached. It worked fairly well, but was not perfect. PWA was designed to fix the problems with Application Caching. The Chrome and Safari teams have announced that Application Caching will be deprecated in future releases of their browsers.

With iOS 12, Apple now supports PWAs (Chrome has for a while), so it was time to update AppStudio to use the new standard.

The good thing is that the change is mostly transparent to AppStudio developers and their users. AppStudio takes care of all the code that is needed to implement a PWA automatically. There are two changes you’ll need to be aware of:
1. You’ll need to provide icons called 72.png, 192.png and 512.png. Put them in the ‘icons folder of your app.
2. The old ‘manifest’ property has been renamed ‘extrafiles’. Put the names of any extra files or folders your app needs here. They will then be deployed with your app. Files named in your old manifest property are automatically carried over.

There are more details about PWAs in our wiki: https://wiki.appstudio.dev/Progressive_Web_Apps.

AppStudio 7.4 released!

We’re pleased to announce that 7.4.0 has been released.

The biggest new feature is that AppStudio now produces Progressive Web Apps (PWAs). This is a new standard for saving web apps so they can run offline and as standalone apps. Here’s an article with more details.

Here’s what is new and fixed in the new release:

  1. PWA: Progressive Web App caching replaces Application Cache
  2. PWA: New manifest.json property
  3. BS4: Add link to Bootstrap 4 Theme Customizer: Bootstrap.Build
  4. BS4: Card display options now shown for text fields
  5. BS4: Card Footer can now be styled
  6. BS4: Datatable: recover gracefully if no value for lengthMenu
  7. BS4: Hamburger has a title when you hover over icon
  8. BS4: Select was emitting an extra character
  9. Deploy: Babel option removed.
  10. Deploy: Google Lighthouse now supported.
  11. Deploy: MakeEXE stuff removed – replaced by Electron
  12. Deploy: old Application Cache removed
  13. jQM: Error in List control fixed.
  14. Project: MakeExe properties removed (obsolete)
  15. Project: Properties removed: newVersionWarning, iconAndroid, exeicon, manifestFile, ManifestName

The easiest way to get the update is on the Help menu – “Check for Updates…”

AppStudio 7.3.3 Released!

We’re pleased to announce that 7.3.3 has been released.

This release has new features and bug fixes.

Google has a newish tool called Lighthouse. You can run it in the Chrome Developer Tools, in the Audits tab. It checks your app for a number of good practices. This build has a number of features to improve your score.

Here’s what is new and fixed in the new release:

  1. Controls: Allow multiple GoogleMaps in one project
  2. Deploy: png files were sometimes being translated to .js.
  3. Electron: Fix already declared variable.
  4. Installer: Installer enhanced for new MacOS requirements
  5. Project Properties: manifest has been renamed extraFiles. It still works the same way.
  6. PWA: infrastructure roughed in – not usable yet
  7. Runtime: Add HTML lang attribute (For Lighthouse)
  8. Runtime: Add meta description and theme-color (for Lighthouse)
  9. Runtime: Fix error in SQLite error handling
  10. Runtime: Improvements for Google Lighthouse audit
  11. Samples: Add BASIC library to some samples which need it.
  12. Samples: New PhoneGapZebraPrint sample, showing Bluetooth printing.
  13. Samples: PhotoGallery updated

The easiest way to get the update is on the Help menu – “Check for Updates…”

AppStudio 7.3.2 released!

We’re pleased to announce that 7.3.2 has been released.

This release has new features and housekeeping. A few bugs have been squashed, links updated and the offline Wiki has been improved.

Web Assembly modules are now supported. Just drag and drop them into the Project Explorer and they will be deployed with your app.

Here’s what is new and fixed in the new release:

  1. IDE: Web Assembly modules now supported.
  2. BS4: datalist property added to Input control.
  3. BS4: inputmode property added to Input and Textarea controls.
  4. BS4: Dropdown and Hamburger: items can now be disabled, active or a heading.
  5. BS4: Input now allows quote characters in placeholder property.
  6. Deploy: .wasm files dragged into the Project Explorer will be properly deployed.
  7. Documentation: Wiki updated.
  8. IDE: Allow unicode characters in css files added to the project.
  9. IDE: Link to icon/splashscreen utility updated – old provider ceased operations.
  10. Libraries: The BASIC functions library can be added to JavaScript apps.
  11. avaScript: The format() function is usable without needing BASIC.
  12. Register: Correct server path

The easiest way to get the update is on the Help menu – “Check for Updates…”

New Bootstrap 4 Input features

With the release iOS 12.2, we are able to add a couple of new features to the Bootstrap 4 Input control. (These features are in Chrome 69+ as well). You’ll need AppStudio 7.3.1.2.

These new features will help users enter information more quickly and accurately.

DataList

DataList lets you control the hints the keyboard brings up as the user type into an Input control.

Suppose our datalist is the following: Bob, Carol, Ted, Alice and Caroline. Here how it will look on iOS:


Continue reading “New Bootstrap 4 Input features”

2019 Programming Contest

Our sixth NSB/AppStudio Programming Contest is underway! We’re looking forward to cool entries which take advantage of the capabilities of devices, desktops and AppStudio.

We have three categories:

  • Business – apps for business, government or non profit organizations
  • Fun – Games, hobbies, entertainment or whimsical creations.
  • Education – Apps written by students or teachers (or for them to use)

All registered AppStudio users are welcome to participate. Prizes are $100 USD in each category.
You may enter more than one program. Judging will be by our experts. All judging is arbitrary and final. We will be looking for quality, performance, ease of use, sophistication and overall coolness. Apps can be whatever you like: Enterprise, business, commercial, education, games or even something whimsical.

All programs must be written using NSB/AppStudio. Entries may be commercial, shareware or freeware, and for iPhone, iPad, Android, the desktop or multiple platforms. Please indicate with your entry whether we can share your program or screenshots with the public.

NSB/AppStudio is an easy to use tool for creating iOS, Android and Desktop apps. Use the Design Screen to layout your app, then add code in JavaScript or BASIC. AppStudio runs on Mac and Windows computers. Apps can be distributed directly or through app stores.

Send your questions and entries to support@appstudio.dev.

The deadline for entries has been is Monday, May 6, 2019 at 12:00 midnite EST.

Have fun!