Deployment
web, Google Play, App Store.
Build TIDE for release and publish it. There is no server to deploy: you ship the app, and optionally a web build and a config file on any static host.
01Version numbers
The version is in pubspec.yaml: version: 0.1.0+1. The part before + is what users see; the number after it is the build number. Raise the build number for every store upload, for example 0.1.1+2.
02Web
flutter build web --release --dart-define=TIDE_HOST=<your-host>
The result is in build/web/. Upload the contents of that folder to any static host (Vercel, Netlify, Firebase Hosting, your own server). This build was run for these docs with Flutter 3.41.4 and finished without errors.
Use the web build as a demo and review surface, not as the place users keep a balance. A browser has no Keychain or Keystore: the vault is kept in the browser's storage, encrypted by TIDE with AES-256-GCM, but the wrapping key material is in the same storage. The browser profile is the security boundary. On the web build, SPL token balances also need your own RPC endpoint (why). Neither limit applies to the Android and iOS apps.
If you host a shared config document, put it on the same or any HTTPS host and wire the fetcher (Configuration → Remote document).
03Google Play
- Set your application ID and upload keySee Rebranding and Installation → Signing. Play refuses debug-signed uploads.
- Build the app bundle
The file isflutter build appbundle --release --dart-define=TIDE_HOST=<your-host>build/app/outputs/bundle/release/app-release.aab. - UploadPlay Console → your app → Testing or Production → Create release → upload the
.aab. - Complete the listingData safety, content rating, privacy policy URL, and the declarations Play asks for crypto wallet apps.
The appbundle build was not run for these docs (unverified on this machine); it is the standard Flutter command.
04App Store
- Register the bundle IDIn your Apple Developer account (organisation enrolment), under Identifiers.
- Pick your Team in XcodeOpen
ios/Runner.xcworkspace→ Runner → Signing & Capabilities. - Build the archive
The result is influtter build ipa --release --dart-define=TIDE_HOST=<your-host>build/ios/ipa/. - UploadWith Apple's Transporter app, or from Xcode → Window → Organizer → Distribute App. Then test through TestFlight before you submit for review.
The ipa build was not run for these docs (unverified on this machine); it is the standard Flutter command.
05After release
- Open the released app, then Operator panel → In force right now: the values come from the layer you expect.
- Run one small swap and check App fee on the confirm sheet and the fee in your wallet.
- Settings → About shows no fee warning.
- For an important fix, set Minimum app version once the new version is live in the stores.