No-code changes
what the admin changes live.
What you can change from the admin panel without touching code or publishing a new app version, what the admin stores but this version of the app does not use yet, and what always needs a new build.
01How a live change works
Change a value in the admin, click that page's save button, then Publish to mobile app. Apps pick it up on their next start (at most once an hour in release builds) or straight away while they are open. The full path is on Architecture.
Anything users see inside the app can usually change live. Anything the phone or the store shows outside the app (icon, name under the icon, store listing) needs a new build and a store update.
02Live: no rebuild needed
Each row was checked against the code that reads it in the wallet.
| What | Admin page | Where users see it |
|---|---|---|
| App name | Branding | Window and tab title, Settings → About App (lib/app/super_wallet_app.dart, lib/features/settings/about_settings_screen.dart) |
| Tagline, support URL, website, X / Discord / Telegram links | Branding | Settings → About App |
| Logo (an HTTPS image URL) | Branding | About App and onboarding (lib/screens/onboard_screen.dart) |
| Primary colour | Branding | Buttons, tabs, switches and charts across the app |
| Swap fee, EVM and Solana fee wallets, PRO fee waiver | Monetization | Swap quotes. 2 % (200 bps) at most. |
| PRO price shown, trial days, PRO features on or off | Monetization | PRO screens. The price charged is the one you set in the stores. |
| Crypto PRO payment (wallet, token, chain, amount) | System Config | PRO purchase screen in the iOS and Android apps |
| Transak on or off, key, staging or production | Monetization → On-Ramp | Buy screen |
| Feature switches: swap, bridge, buy, sell, send, WalletConnect, Discover, push | Remote Config | The feature disappears or reappears |
| Maintenance mode and message, minimum app version, announcement banner | Remote Config, Campaigns | Maintenance screen, update prompt, banner |
| Chains (RPC URL, explorer, router), tokens, featured and default home tokens | Chains, Tokens | Network list, token lists, swap token picker |
| dApps and NFT collections | DApps, NFT Collections | Discover, browser, NFT gallery |
| Campaigns: zero fee, promo banner | Campaigns | Fee on matching swaps; banner on the home screen |
| Swap routing order, slippage default and maximum, auto-slippage, gas speed | Swap Config | Swap screen |
| API keys: Etherscan, 0x, 1inch, Helius, Moralis, Alchemy, Reown project ID | System Config → Remote API Keys | Each app stores the key on the device and uses it instead of the built-in one. These keys are public (why). |
| Push messages | Notifications | Phone notifications |
03Saved, but not used by the app in this version
The admin lets you fill these in and keeps them, but the wallet code in this version does not read or show them. Do not rely on them yet.
| Field | Admin page | What happens instead |
|---|---|---|
| About Text, Swap Disclaimer | Branding | Not displayed in the wallet. |
| App Store URL, Google Play URL | Branding, System Config | Not displayed in the wallet. |
| Show "Powered by SuperWallet" | Branding | Changes only the admin's phone preview. The wallet has no such line. |
| Support email, Terms URL, Privacy URL | System Config | The wallet's Privacy and Terms links in Settings are written in the code (lib/features/settings/settings_screen.dart, _privacyUrl and _termsUrl). Change them there and rebuild (how). |
| Compliance → Controls | Compliance | Layout only (details). |
04Needs a new app build
| What | Where to change it |
|---|---|
| Bundle / application ID | Xcode project and android/app/build.gradle.kts (how) |
| Name under the icon, store name | Info.plist, AndroidManifest.xml, web/manifest.json; the store listing in App Store Connect and Play Console |
| App icon, splash screen, background colours, font | Rebranding |
| Fallback name before settings load | appName in lib/utils/constants.dart |
| Privacy and Terms links in Settings | lib/features/settings/settings_screen.dart |
| Name and website the wallet shows to dApps over WalletConnect | appName and appUrl defaults of init() in lib/features/wallet_connect/reown_wallet_service.dart |
| Firebase project | flutterfire configure (writes lib/firebase_options.dart and the platform files) |
ADMIN_CONFIG_URL, the other .env keys, store product IDs (IAP_PRO_*) | crypto_wallet/.env. The API keys in the table above can also be changed live. |
| Web push key | --dart-define=WEB_PUSH_VAPID_KEY=… and web/firebase-messaging-sw.js |
| Deep-link scheme | Rebranding |
After a new build you upload it to the stores and users update. To push everyone to the new version, raise Minimum App Version in Admin → Remote Config once the update is live.
05Needs a backend redeploy (no app build)
| What | Command |
|---|---|
functions/.env: APP_NAME, ANDROID_PACKAGE_NAME, store credentials, PRO product IDs, WEBHOOK_SECRET | firebase deploy --only functions |
Secrets OWNER_UID, CLAUDE_API_KEY, ADMIN_SETUP_TOKEN | firebase functions:secrets:set <NAME>, then deploy the functions |
| Database rules and indexes | firebase deploy --only firestore:rules,firestore:indexes |
Run them in crypto_wallet. See Configuration → Backend settings.