Saving & versioning
Saving in the builder is publishing. There is no separate review step. Your config goes live to all app users on their next open, with no App Store submission and no user update required.
Save is publish
When you hit Save in the builder, the current config is written to your Shopify store's metafields via the Appolar API. That is the only step. There is no staging environment, no approval queue, and no separate Publish button.
This keeps the workflow simple and direct. If you want to test a change before it goes live, use the live preview in the builder. The preview shows you exactly what the app will look like with the new config before you save.
If you want to be cautious with a big layout change, save it, open your actual app on your own phone, and verify it looks right. If it does not, restore the previous version from version history. The whole round trip takes under a minute.
OTA updates
The Appolar engine fetches its config from the server on every app open. This is the over-the-air (OTA) update model. It means that config changes, including theme tokens, block layouts, content, and screen order, all propagate to your users the next time they launch the app. There is nothing to submit and nothing for users to install.
The config fetch happens in the background on app open. Users on a slow connection see the previous cached config while the fetch completes, then the updated config is applied on the next open. In practice the fetch is fast enough that the vast majority of users see the new config on the same open that it is fetched.
What updates via OTA
Brand color, font family, border radius, block order, block visibility, block properties, hero images, section headings, and any content value in the config.
What requires a build
Native module additions, React Native version upgrades, new app permissions, and changes to the engine binary itself.
When builds are needed
OTA handles everything in the config layer. The engine binary itself is a different matter. Native changes, the kind that require App Store and Play Store submissions, include:
- React Native engine version upgrades
- Adding a new native module (for example, a barcode scanner or AR feature)
- Changes to the app permissions declared in the Info.plist or AndroidManifest
- New deep link schemes or universal link domains
Appolar manages engine upgrades centrally. When a new engine version is available, you will see a notification in the admin. You review the change notes, approve the upgrade, and trigger the build from the Engine section. Appolar handles the compile, QA, and submission pipeline from there.
Day-to-day builder changes, which is the overwhelming majority of what you will do, never require a build. Layout changes, seasonal content updates, new product grids, and brand color refreshes all ship via OTA in seconds.
Version history
Every time you save, a snapshot of the full config is stored. The admin keeps the 30 most recent snapshots. Each entry in the history shows:
- The timestamp of the save
- The user who triggered it (relevant for stores with multiple team members)
- A brief diff summary showing which sections changed
To restore a previous version, open the Version history panel in the admin, find the entry you want, and click Restore. The selected config is immediately written as the active config and served to app users on their next open. A restore also creates a new history entry, so you can undo a restore the same way.
Snapshots are retained on a rolling 30-entry basis. The oldest entry is dropped when a 31st save is made. If you are about to do a significant redesign, note the timestamp of your current stable config so you can find it later if needed.
No auto-save
The builder does not auto-save. This is intentional. Because saving is the same as publishing, auto-saving would push half-finished layouts to live users while you are still editing.
The benefit of no auto-save is freedom to experiment. You can drag blocks around, try different brand colors, and test different font combinations without any of it going live. If you want to discard everything and start from your last saved state, reload the builder page. Your saved config is untouched.
Hit Save only when you are ready for users to see the change.