Mobile Regular Release
Perform a regular mobile release. This skill handles the full release workflow from the dev branch.
Pre-flight checks
- •Confirm the current branch is
dev. If not, abort with a warning. - •Run
git pull --rebasein the repo root to ensure the local branch is up to date. - •Read
apps/mobile/package.jsonto get the currentversion.
Step 1: Gather changes since last release
- •Find the last release tag (both old
mobile@and newmobile/vprefixes exist):bashgit tag --sort=-creatordate | grep -E '^mobile[@/]' | head -1
- •If no tag found, find the last release commit by matching only the subject line:
bash
git log --format="%H %s" | grep "^[a-f0-9]* release(mobile): release v" | head -1 | awk '{print $1}' - •Get all commits since the last release on the current branch:
bash
git log <last-tag-or-commit>..HEAD --oneline --no-merges
- •Categorize commits into:
- •Shiny new things (feat: commits, new features)
- •Improvements (refactor:, perf:, chore: improvements, dependency updates)
- •No longer broken (fix: commits, bug fixes)
- •Thanks (identify external contributor GitHub usernames from commits)
Step 2: Update changelog
- •
Read
apps/mobile/changelog/next.md. - •
Present the categorized changes to the user and draft the changelog content.
- •
Wait for user confirmation or edits before writing.
- •
Write the final content to
apps/mobile/changelog/next.md, following the template format:markdown# What's New in vNEXT_VERSION ## Shiny new things - description of new feature ## Improvements - description of improvement ## No longer broken - description of fix ## Thanks Special thanks to volunteer contributors @username for their valuable contributions
- •
Keep
NEXT_VERSIONas the placeholder - it will be replaced byapply-changelog.tsduring bump.
Step 3: Execute bump
- •Change directory to
apps/mobile/and run the bump:bashcd apps/mobile && pnpm bump
- •This is an interactive
nbumpcommand that prompts for version selection. It will:- •Pull latest changes
- •Apply changelog (rename next.md to {version}.md, create new next.md from template)
- •Format package.json with eslint + prettier
- •Bump version in
package.json - •Update
ios/Folo/Info.plist:- •Set
CFBundleShortVersionStringto the new version - •Increment
CFBundleVersion(build number) by 1
- •Set
- •Commit with message
release(mobile): release v{NEW_VERSION} - •Create branch
release/mobile/{NEW_VERSION} - •Push branch and create PR to
mobile-main
Step 4: Verify
- •Confirm the PR was created successfully by checking the output.
- •Report the new version number and PR URL to the user.
- •Summarize:
- •New version: v{NEW_VERSION}
- •Changelog highlights
- •PR URL
Post-release (manual steps, inform user)
After the release PR is merged to mobile-main:
- •Trigger production builds via GitHub Actions
workflow_dispatch:- •Go to "Build iOS" workflow, select
mobile-mainbranch, profile =production - •Go to "Build Android" workflow, select
mobile-mainbranch, profile =production
- •Go to "Build iOS" workflow, select
- •Production builds auto-submit to App Store (via
eas submit) and Google Play (as draft). - •After submission, go to App Store Connect and Google Play Console to complete the review/release process.
Reference
- •Bump config:
apps/mobile/bump.config.ts - •Changelog dir:
apps/mobile/changelog/ - •Changelog template:
apps/mobile/changelog/next.template.md - •Apply changelog script:
apps/mobile/scripts/apply-changelog.ts - •EAS config:
apps/mobile/eas.json - •App config:
apps/mobile/app.config.ts - •iOS Info.plist:
apps/mobile/ios/Folo/Info.plist - •CI build iOS:
.github/workflows/build-ios.yml - •CI build Android:
.github/workflows/build-android.yml