Skip to main content

PWA Setup

Last updated 10/04/2026

Setting up PWA With Offline Support in Five​

Follow these steps to implement offline functionality using Five's PWA capabilities, starting from a custom action plugin (.zip).

Step 1 - Create a Custom Action Plugin​

Begin by creating a new custom action in Five and exporting it as a .zip plugin. This plugin will contain your client-side code where offline functionality is implemented.

  • Use this plugin as your working environment for PWA logic
  • Ensure your code runs on the client-side

Step 2 - Initialize Offline Tables on Load​

At the very start of your plugin, for example, on component mount or initialization, you must initialize all required offline tables.

This ensures IndexedDB is properly set up before any read/write operations occur.

Example:
JavaScript
five.initializeRequiredTables(['CheckIns', 'Users'], () => {
five.log('Offline tables ready');
});

Key Notes:
  • This step is mandatory
  • All tables you plan to use offline must be included in the array
  • This should only be called once during initialization

Step 3 - Structure Your Data With a Key​

Before storing any data offline, ensure every record includes a

key
property.

Example:
JavaScript
{
key: '123',
name: 'John Doe',
status: 'Checked In'
}

Key Notes:
  • The
    key
    is required for indexing in IndexedDB
  • It must be unique per record
  • It must match the key used in record-level operations

Step 4 - Save Data Offline​

You can store data either as a full dataset or individual records.

Save a single record:
JavaScript
five.saveRecordOffline(
'CheckIns',
'123',
{ key: '123', name: 'John Doe' }
);

Save multiple records:
JavaScript
five.saveTableOffline('CheckIns', [
{ key: '1', name: 'John'},
{ key: '2', name: 'Jane'}
]);

Step 5 - Retrieve Offline Data​

Use the provided functions to load data from local storage.

Get a single record:
JavaScript
five.getRecordOffline('Checkins', '123', (record) => {
console.log(record);
});
Get all records:
JavaScript
five.getTableOffline('CheckIns', (data) => {
console.log(data);
});

Step 6 - Handle Connectivity Changes​

Register a listener to detect when the application goes online or offline.

JavaScript
const unsubscribe = five.registerOnlineStatusCallback((online) => {
five.log(`Online: ${online}`);
});
Common use cases:
  • Trigger data sync when connection is restored
  • Update UI to indicate offline mode

Step 7 - Sync Data When Back Online​

When connectivity is restored:

  • Push locally stored data to your backend
  • Refresh local storage using
    saveTableOffline()
    if needed

This ensures consistency between offline and server data.

Step 8 - Deploy as a PWA​

To enable offline capability:

  • Ensure your application is configured as a Progressive Web App
  • Install it on a device
  • Run your custom action within this PWA environment
Important:
  • Offline functionality will only work inside the PWA
  • Running inside standard Five (non-PWA) will still require connectivity

Summary of Flow​

  1. Create custom action plugin.
  2. Initialize tables with
    initializeRequiredTables()
    .
  3. Ensure all records include a
    key
    .
  4. Save and retrieve data using offline APIs.
  5. Monitor online status.
  6. Sync when reconnected.
  7. Run the solution as a PWA.

This approach ensures your Five application can operate reliably in offline scenarios while maintaining full data integrity and sync capabilities.