web app with local offline database


I am considering again xojo to create a web app to accesses google sheets. One key requirement is to have a relative large table downloaded to an android web client with reference information. Ideally, this should be downloaded only once, and then selectively changed. Best if it can be kept in an offline database available for whenever a browser based web app on android is run.

Can this be done in xojo?

thank you,



Well, technically anything is possible, you could use the Web SDK to add a bunch of client side JS that saves/loads the client stored data and interfaces with the Xojo app.

Xojo web apps at present are very much server side beasts, this is possibly changing somewhat in the next overhaul of Web projects, but we don’t know the details of that yet and it may or may not make what you want to do easier.


As Ian wrote it’s not easy. Web Apps today are server side.

How large is the table ? Can it be hold in memory ?
Some times we think data is to big, when really is just a few KB.

By downloading what are you trying to achieve ? Is it latency related, roud trip to get info from Google Sheets API ? Do you need all information for every user operation ?

Any way, forget about holding it between sessions, even if the user doesn’t close the page when memory is low the browser will discard your data and is up to you to re-load it.

Three paths to explore:

  1. Use Google API directly from the browser, you probably need to bundle some javascript library to your Xojo Web App. The total amount of data you are able to display in a mobile browser is very small, request it as you need it.

  2. Javascript library for in memory database to hold the data. One single download to fill the database and again some javascript to make the data available to the user.

  3. If each user operation needs lots of information than download the information to Xojo Web App server and create the necessary functions/methods to off load the heavy processing to the server.

You really need to define what user experience are aiming.