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.
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
| Area | 1.0.0 | 1.1.0 | Action |
|---|---|---|---|
| Admin config address | Written in lib/core/config/app_config.dart | Build setting ADMIN_CONFIG_URL, empty by default (Remote Config only) | Move it |
| Firebase settings | lib/firebase_options.dart in the package | A placeholder ships; you run flutterfire configure | Keep yours |
| Swap fee cap | Presets up to 2 %, but the code accepted higher values | 200 bps (2 %) enforced in the admin, the app and the functions | Check your fee |
| Fee wallets | One wallet | EVM wallet (fee_wallet_address) and Solana wallet (solana_fee_wallet_address) | Fill the Solana wallet |
| Fee records | Any fee event accepted | recordFeeEvent requires fee_bps from 1 to 200 and a transaction hash or Solana signature | Redeploy functions; old app versions' events without a hash are refused |
| Admin demo login | Default demo credentials in source | Only in builds made with the demo switch, with credentials you choose | None, unless you host a demo |
| Flutter | No lower bound declared | Flutter 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 admin | bootstrapFirstAdmin open while admin_users was empty | Needs the ADMIN_SETUP_TOKEN secret (or the OWNER_UID account) and locks itself after the first success | Set the secret before you deploy the functions (how); an existing admin is unaffected |
| Portfolio Brain | Any signed-in caller, free-text prompt | App Check, server-verified paid PRO (not the free trial), structured input, per-user and global daily caps | Register App Check; set the caps if the defaults do not suit you |
| Referral screen and settings, Stripe checkout, bridge fee setting | Present, not active | Removed | Delete 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 PRO | Any valid receipt activated PRO for the caller | Only 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 → Users | Purchases 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 |
| Typeface | Inter 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
- Snapshot the admin configAdmin → Publish Config → Save Version Snapshot.
- Save a copy of Remote Config
cd crypto_wallet firebase remoteconfig:get -o remoteconfig.before-1.1.0.json - Commit your current codeThen follow the merge steps in How to update: unpack 1.1.0 on your
vendorbranch and merge.
03Build settings
- Admin config addressIf you had changed
kAdminConfigUrlinlib/core/config/app_config.dart, take your address and put it incrypto_wallet/.env:
Leave it empty to use Remote Config only. EveryADMIN_CONFIG_URL=https://<your-admin-site>/config.jsonflutter runandflutter buildmust include--dart-define-from-file=.env. - Demo switchDo not set
SUPERWALLET_DEMOin a real build. A build with--dart-define=SUPERWALLET_DEMO=trueis a demo: it ignoresADMIN_CONFIG_URLand shows sample data. - Admin Config Status cardOptional: build the admin with
--dart-define=ADMIN_RUNTIME_CONFIG_URL=https://<your-admin-site>/config.jsonso the Overview checks the right address (details). - Version
crypto_wallet/pubspec.yamlis1.1.0+10, the admin1.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.dartandcrypto_wallet_admin/lib/firebase_options.dartcrypto_wallet/android/app/google-services.jsonandcrypto_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.
| Field | In 1.1.0 |
|---|---|
fee_bps | 0 to 200. Higher values are clamped by the app and refused by the admin and publishAdminRemoteConfig. |
fee_enabled | The fee applies only when this is true and fee_bps is above 0. |
fee_wallet_address | EVM fee wallet for 0x and 1inch. |
solana_fee_wallet_address | New. Solana fee wallet for Jupiter. Empty means no fee on Solana. |
- Open Admin → MonetizationIf your fee was above 2 %, pick 2.0 % or lower.
- Fill the Solana fee walletOptional. Create its token accounts first (how).
- Apply Fee Config, then Publish to mobile app
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
- Install the backend packages
cd crypto_wallet/functions npm ci npm run build - Rules, indexes, functions
cd crypto_wallet firebase deploy --only firestore:rules,firestore:indexes,functions - Admin panel
cd crypto_wallet_admin firebase deploy --only hosting:admin - Web wallet (if you host one)
1.1.0'scd crypto_wallet flutter build web --release --dart-define-from-file=.env firebase deploy --only hosting:appfirebase.jsonaddsconnect-src 'self' https: wss:so WalletConnect works on the web. Copy it into your own headers if you host elsewhere. - 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.0if you want everyone to update.
07After the upgrade
firebase functions:log -n 50shows 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 accountline for it. - The admin panel shows no demo badge.