A new Flutter project.
This project is a starting point for a Flutter application.
A few resources to get you started if this is your first Flutter project:
For help getting started with Flutter development, view the online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.
main is always shippable. Releases are cut by pushing a version tag; merging to main never
releases anything.
- Branch from
main:feat/<name>orfix/<name>. - Open a PR into
main. The iOS build and Android build checks must pass (unsigned release builds; Android also runs analyze and tests). - Squash-merge.
- Open a
release/<version>PR that changes only:pubspec.yaml: bumpversion(for example1.1.5+13). Only the part before+matters; CI sets the build number (100 + run number).ios/metadata/en-US/release_notes.txt: the "What's New" text for this version. Android uses it too, so keep it under 500 characters.
- Merge it, then tag a release candidate on
main:git checkout main && git pull git tag v1.1.5-rc1 && git push origin v1.1.5-rc1
- CI uploads Android to the Play internal track (tester list "Cris QA") and iOS to TestFlight. The run prints the build number; post it in the QA thread.
- Bug found: fix it in a PR, merge, tag
v1.1.5-rc2. Repeat until QA approves. - Approved: run Actions → Android promote to production (
version_code) and iOS submit for review (build_number). Each store reviews, then it goes public.
The version must be higher than the one live on the App Store, or the submit step fails. Details, tester opt-in link and setup: QA loop and release candidates.
git checkout -b hotfix/1.1.6 v1.1.5-rc3 # branch from the RC tag that shipped
# fix, bump version to 1.1.6, update release notes, commit
git tag v1.1.6-rc1 && git push origin v1.1.6-rc1 # then QA and promote as aboveThen open a PR from hotfix/1.1.6 into main so the fix isn't lost.
The signed .ipa is saved on the run page under Artifacts for 7 days. Upload it with
Transporter; it lands in TestFlight like a CI upload.
For Android, the signed .aab is saved the same way; upload it in Play Console → Test and release →
Internal testing → Create new release.
Signing secrets, renewal (certificate and profile expire Oct 10, 2027) and the full setup:
docs/release_ci.md.