SuperWallet docs
v1.1.0
Wallet demoAdmin demo Get help
● Ship · Migration

Upgrade to 1.1.0
from a 1.0.0 install.

Everything a 1.0.0 owner has to change: build settings, Firebase files, the Remote Config fields, the fee cap, and the order in which to redeploy. Allow about an hour, plus store review.

1.0.0 → 1.1.0
On Windows

The commands on this page are written for macOS and Linux shells. On Windows, run them in Git Bash or WSL, where they work as written. In PowerShell, set a variable with $env:NAME="value" instead of export. Flutter, Node.js and the Firebase and FlutterFire CLIs run natively on Windows; iOS and macOS builds need a Mac.

01What changes for you

Area1.0.01.1.0Action
Admin config addressWritten in lib/core/config/app_config.dartBuild setting ADMIN_CONFIG_URL, empty by default (Remote Config only)Move it
Firebase settingslib/firebase_options.dart in the packageA placeholder ships; you run flutterfire configureKeep yours
Swap fee capPresets up to 2 %, but the code accepted higher values200 bps (2 %) enforced in the admin, the app and the functionsCheck your fee
Fee walletsOne walletEVM wallet (fee_wallet_address) and Solana wallet (solana_fee_wallet_address)Fill the Solana wallet
Fee recordsAny fee event acceptedrecordFeeEvent requires fee_bps from 1 to 200 and a transaction hash or Solana signatureRedeploy functions; old app versions' events without a hash are refused
Admin demo loginDefault demo credentials in sourceOnly in builds made with the demo switch, with credentials you chooseNone, unless you host a demo
FlutterNo lower bound declaredFlutter 3.41.3 or newer on your PATH in both apps (pubspec.yaml and pubspec.lock require flutter: ">=3.41.3" and Dart 3.11.1+)flutter upgrade
First adminbootstrapFirstAdmin open while admin_users was emptyNeeds the ADMIN_SETUP_TOKEN secret (or the OWNER_UID account) and locks itself after the first successSet the secret before you deploy the functions (how); an existing admin is unaffected
Portfolio BrainAny signed-in caller, free-text promptApp Check, server-verified paid PRO (not the free trial), structured input, per-user and global daily capsRegister App Check; set the caps if the defaults do not suit you
Referral screen and settings, Stripe checkout, bridge fee settingPresent, not activeRemovedDelete STRIPE_* and APPLE_SHARED_SECRET from functions/.env; add APPLE_BUNDLE_ID. Delete the Stripe functions after deploying: firebase functions:delete createStripeCheckoutSession createStripePortalSession validateAppleReceipt validateGoogleReceipt --region europe-west1
Store PROAny valid receipt activated PRO for the callerOnly for the account that bought it (account token checked against Apple / Google). A restore on a new device files a transfer request you approve in Admin → UsersPurchases made by an app older than 1.1.0 carry no token: they move to the account that restores them. Add APP_STORE_ALLOW_SANDBOX to functions/.env only while testing
TypefaceInter requested but not bundled (system font shown)Inter bundled in crypto_wallet/assets/google_fonts/ (SIL OFL 1.1)None

Sources: Changelog 1.1.0 and the release/1.1.0 history of both apps.

02Before you start

  1. Snapshot the admin configAdmin → Publish Config → Save Version Snapshot.
  2. Save a copy of Remote Config
    cd crypto_wallet
    firebase remoteconfig:get -o remoteconfig.before-1.1.0.json
  3. Commit your current codeThen follow the merge steps in How to update: unpack 1.1.0 on your vendor branch and merge.

03Build settings

  1. Admin config addressIf you had changed kAdminConfigUrl in lib/core/config/app_config.dart, take your address and put it in crypto_wallet/.env:
    ADMIN_CONFIG_URL=https://<your-admin-site>/config.json
    Leave it empty to use Remote Config only. Every flutter run and flutter build must include --dart-define-from-file=.env.
  2. Demo switchDo not set SUPERWALLET_DEMO in a real build. A build with --dart-define=SUPERWALLET_DEMO=true is a demo: it ignores ADMIN_CONFIG_URL and shows sample data.
  3. Admin Config Status cardOptional: build the admin with --dart-define=ADMIN_RUNTIME_CONFIG_URL=https://<your-admin-site>/config.json so the Overview checks the right address (details).
  4. Versioncrypto_wallet/pubspec.yaml is 1.1.0+10, the admin 1.1.0+2. Your store build number must be higher than your last upload; raise the part after + if needed.

04Firebase files

The 1.1.0 package contains placeholder lib/firebase_options.dart files in both apps. When you merge, keep your own versions of:

  • crypto_wallet/lib/firebase_options.dart and crypto_wallet_admin/lib/firebase_options.dart
  • crypto_wallet/android/app/google-services.json and crypto_wallet/ios/Runner/GoogleService-Info.plist

Or run flutterfire configure again in each app (how). The 1.1.0 wallet expects one extra line in its file; see isPlaceholder isn't defined if the build complains.

05Remote Config fields and the fee

The admin_config value gains or changes these fields. You do not have to edit JSON; the admin writes them when you save Monetization and publish.

FieldIn 1.1.0
fee_bps0 to 200. Higher values are clamped by the app and refused by the admin and publishAdminRemoteConfig.
fee_enabledThe fee applies only when this is true and fee_bps is above 0.
fee_wallet_addressEVM fee wallet for 0x and 1inch.
solana_fee_wallet_addressNew. Solana fee wallet for Jupiter. Empty means no fee on Solana.
  1. Open Admin → MonetizationIf your fee was above 2 %, pick 2.0 % or lower.
  2. Fill the Solana fee walletOptional. Create its token accounts first (how).
  3. Apply Fee Config, then Publish to mobile app
Do not redeploy the template over your settings

firebase deploy --only remoteconfig replaces your live Remote Config with the 1.1.0 template, which has the fee off and empty wallets. Use the admin instead. If it happened, roll back: firebase remoteconfig:versions:list, then firebase remoteconfig:rollback -v <number>.

06Redeploy, in this order

  1. Install the backend packages
    cd crypto_wallet/functions
    npm ci
    npm run build
  2. Rules, indexes, functions
    cd crypto_wallet
    firebase deploy --only firestore:rules,firestore:indexes,functions
  3. Admin panel
    cd crypto_wallet_admin
    firebase deploy --only hosting:admin
  4. Web wallet (if you host one)
    cd crypto_wallet
    flutter build web --release --dart-define-from-file=.env
    firebase deploy --only hosting:app
    1.1.0's firebase.json adds connect-src 'self' https: wss: so WalletConnect works on the web. Copy it into your own headers if you host elsewhere.
  5. Mobile appsBuild and upload as in Deployment. When the update is live in the stores, raise Minimum App Version in Admin → Remote Config to 1.1.0 if you want everyone to update.

07After the upgrade

  • firebase functions:log -n 50 shows no repeating errors.
  • Admin → Monetization shows two fee wallet fields and your fee, at most 2.0 %.
  • A small test swap on an EVM chain shows your fee; it appears in Admin → Revenue.
  • A Solana swap into a token whose fee account exists carries your fee; the debug log has no [Jupiter] no usable operator fee token account line for it.
  • The admin panel shows no demo badge.