Onboarding · Dashboard Guide
Code Push
Deploy a completely custom offer layout to your players — no app store review, no update prompt. Players get the new design the next time they open the game.
OTA Theme vs Code Push — which do you need?
⚡ OTA Theme
Instant · Colours only
- ✅ Change colours, radius, background style
- ✅ Live within 60 seconds
- ✅ No LiveSync setup needed
- ❌ Cannot change card layout or widget structure
Use when: brand refresh, seasonal colour change, Figma import
🚀 Code Push
2-5 min · Full layout control
- ✅ Custom card layout and widget tree
- ✅ New UI components (video, animation, etc.)
- ✅ No app store review required
- ❌ Requires LiveSync account + app_id configured
Use when: new offer card design, custom interactive elements
How Code Push works end-to-end
You write or generate the offer UI code
Write a Experience Dart widget, or use the Figma Import wizard to generate one automatically. The code always targets one fixed file: custom_offer_registry.dart.
Paste the code and click Deploy
Go to Operations → Code Push. Paste the Dart code into the editor and click "Deploy Patch". You can also trigger a patch from the Figma Import wizard with one click.
Platform builds and tests it automatically
GitHub Actions runs flutter analyze on the code. If there are no errors, LiveSync packages it as a patch for your game's release version.
Players download the patch silently
The next time a player opens your game, the SDK checks for a new patch. It downloads in the background (<100KB typically). No update prompt appears.
New offer layout is live
On the next app launch after the patch applies, the custom offer card appears instead of the default. All players on the patched version see the new design.
⚠️ Prerequisites — do this before your first Code Push
- Create a free account at console.shorebird.dev
- Create an app in LiveSync for your game. Copy the app_id (looks like a UUID).
- In the gamemantra dashboard → Settings → Theme → scroll to LiveSync App ID → paste your app_id → Save.
- Your engineering team adds
SHOREBIRD_TOKENto the GitHub repository secrets.
After this one-time setup, all future code pushes happen in one click from the dashboard.
How to deploy a Code Push
Go to Operations → Code Push in the sidebar.
Check the current patch status
The page shows the patch history for your game — each row is a previous push with its status:
Submitted — waiting for GitHub Actions to start
GitHub Actions running flutter analyze + shorebird patch
Patch live — players will download on next launch
Build error — check the error message, fix the code, retry
Click "New Patch" and enter the version
Enter the release version this patch targets — must exactly match the version that was submitted to the app store (e.g. 1.0.0+1). LiveSync only applies patches to players running that exact release version.
Paste or generate the Dart code
You have two options:
- Figma Import wizard — generates the complete Dart file automatically from your Figma colours. Use this if you don't write code.
- Paste manually — paste your custom Dart widget into the editor. The code must export a function called
buildCustomOffer(type, offer).
Click "Deploy" and watch the status
Click Deploy Patch. The status changes from queued → building → published in 2–5 minutes. The page auto-refreshes every 5 seconds so you don't need to reload.
Each game gets its own patch
Every game in your studio has a separate LiveSync app_id, stored in the games table. When you deploy a patch for Game A, Game B is completely unaffected — even if they share the same codebase. This means you can customise the offer card appearance per game without any cross-game risk.
Pixel Raiders
Dark orange
app_id: aaa-111Brain Twist
Glassmorphism cyan
app_id: bbb-222WordBlitz
Neon pink
app_id: ccc-333Safety rules
Patches apply on game launch only
The SDK never applies a patch mid-session. A player in the middle of a level will not see a UI change. The new design appears on the next app open.
flutter analyze runs before every deploy
If your Dart code has syntax errors or type mismatches, the build fails before it reaches players. Check the error message in the patch status row.
Revert by deploying the original code
To undo a code push, deploy a new patch with the original default code (which returns null from buildCustomOffer). Players revert to the SDK default offer cards.
File size limit: ~4MB per patch
LiveSync patches only include the changed Dart code — not assets, images, or native libraries. Keep the custom offer file focused on layout only.
💡 AI prompt you can use