Ionic with offline use and data-driven architecture

I’m reseaching tecnologies to develop a solution for the following use cases:

  • A user goes to a construcion site in where probably there is no internet connection. There the user the take some photos e and notes using an application;
  • He can do such offline work using a phone or a laptop;
  • Back in the office, where there is internet connection, the offline collected information is synced to services and made available to all other users.
    In your experience, this requirements are reacheble with Ionic?
    At first glance, I’m planning to use ionic/angular/capacitor to build PWA and Android apps. Desktop is in later milestone. Initially iOS users would have access using PWA.
    Other question: Ionic’s offline storage are paid? It’s a bit confusing to me whether its possible to use it with no cost at all - of course, alwo with no support at all. Still about offline storage, docs says explicitly that it works for Android and iOS. Does It means that offline storage won’t work for PWA and Desktop?

So a few things…

Offline Storage: There’s 2 versions of the plugin

This is the free key/value storage API. It uses localforage under the hood, and can use indexedDB, localStorage, or sqlite adapter in native envs. Important thing to note is that it is only key/value pairs. You cannot do full sql statements. This can work on native and browser envs (so pwas). This is free and open source.

This plugin uses a full sqlite DB and you interface with it using sql statements. You have more control here, though you loose the simplicity of a key/value pair mechanism. This is a paid plugin that only works in Native.

Now for the other questions. Yes, this type of app is pretty common in Ionic’s env. I’ve seen many people build this type of app. They challenges they face tend to be more on the DB side of things and handling race conditions once multiple transactions are made to the DB at the same time.

1 Like

@mhartington, Are the Ionic offline storage plugin ready for PWA and Desktop applications? Or is it for Android and iOS only?