Yes. OutSystems provides all the tools you need to build applications that run offline or in poor network conditions. Applications built with OutSystems automatically store all of the application's content on the user’s device for performance and offline access, and the OutSystems visual language gives everything you need to control which data goes to the device.
With OutSystems, you can quickly and easily model all offline requirements for everything from a very simple app that just caches data and content for performance to very complex apps that do offline calculations and require complex conflict resolution.
The offline challenge
Offline apps have a series of challenges that need to be overcome:
- Limited space for storing data locally
- Data synchronization between devices and the server
- Data conflicts
- Outdated client-side code
To address limited space on data stored locally, OutSystems gives you the ability to visually define the information you want to store on the device. This means you have total control over which data should be stored offline without losing the speed and flexibility of the visual language.
Likewise, all data synchronization is done with the OutSystems visual language. You have control over when the synchronization process occurs, and you have full flexibility to use the synchronization pattern that matches your business specification, regardless of how complex they may be.
To learn more about the synchronization patterns, check Offline Data Sync Patterns document.
The following diagram outlines the runtime architecture of a typical application built using OutSystems with offline support:
The native application includes all the resources required to run standalone from the server without any connectivity. When connectivity is available, the application will automatically check for newer versions of the resources and update itself.
Data on the device is stored on a local database, using SQLite as an underlying technology. There are no limits to how much data is stored other than the physical size of the storage, and data is persisted even if the app is closed, the device is rebooted, or power is lost.
If there is a need to to secure sensitive information, you simply activate the data encryption module on your application. This will ensure secure 256-bit AES encryption of your data on the device.
With the OutSystems visual language, you have total control over the synchronization process between the device and the server. This process can be started by your application at any time or automatically at specific instances, for instance at user login, when the application starts, or when connectivity to the server is restored.
On the back-end, REST APIs are automatically generated and exposed to enable the client to send and receive data from the server. These are secure APIs that ensure only authenticated users can start the synchronization process, and all connections run over SSL so data remains secure.