CLI tool to bump version, iOS build number, and Android versionCode in Expo app config files
npm install expo-build-bump

A lightweight CLI tool to bump your Expo app's version, iOS build number, and Android versionCode directly inside your app.config.ts, app.config.js, or app.json.
Perfect for automating version management during releases or inside CI/CD pipelines.
---
โ
Auto-increment or set explicit version numbers
โ
Supports app.config.ts, app.config.js, and app.json
โ
Separate control for iOS and Android builds
โ
Works seamlessly in CI/CD (GitHub Actions, GitLab, Bitrise, etc.)
โ
Supports dry-run and JSON output modes
โ
Input validation to prevent invalid values
โ
Automatic backup creation for safety
โ
Simple flag-based CLI โ no configuration required
---
``bashUsing npx (npm)
npx expo-build-bump
$3
`bash
npm install -g expo-build-bump
`$3
`bash
npm install --save-dev expo-build-bump
`Then run it with:
`bash
npx expo-build-bump
`---
โก Quick Start
`bash
Bump iOS and Android build numbers (default)
npx expo-build-bumpBump version, iOS, and Android all together
npx expo-build-bump --allSet specific version
npx expo-build-bump --versionNumber 2.5.10Bump only iOS build
npx expo-build-bump --iosSee what would change without modifying files
npx expo-build-bump --dry-run
`---
๐ Usage
$3
Auto-increment iOS build and Android versionCode (default):
`bash
npx expo-build-bump
`Increment only the app version:
`bash
npx expo-build-bump --versionNumber
`Increment only iOS build number:
`bash
npx expo-build-bump --ios
`Increment only Android versionCode:
`bash
npx expo-build-bump --android
`Increment everything:
`bash
npx expo-build-bump --all
`---
๐ง Setting Explicit Values
Set a specific app version:
`bash
npx expo-build-bump --versionNumber 2.5.10
`Set iOS and Android build numbers explicitly:
`bash
npx expo-build-bump --ios 45 --android 120
`---
๐ง Flags & Options
| Flag | Alias | Description |
| ------------------------- | ----- | ------------------------------------------------- |
|
--versionNumber [x.x.x] | -v | Increment or set app version |
| --buildNumber | -b | Increment both iOS & Android builds (legacy flag) |
| --ios [n] | -i | Increment or set iOS build number |
| --android [n] | -a | Increment or set Android versionCode |
| --all | -A | Update version + iOS + Android all together |
| --config | -c | Specify a custom config file path |
| --json | -j | Output changes as JSON (great for CI/CD) |
| --quiet | -q | Suppress console logs (useful in pipelines) |
| --dry-run | -d | Show what would change, but don't write to file |
| --help | -h | Show help info |---
๐งฉ Examples
$3
`bash
npx expo-build-bump
`$3
`bash
npx expo-build-bump --android
`$3
`bash
npx expo-build-bump --versionNumber 1.5.2 --ios 30 --android 45
`$3
`bash
npx expo-build-bump --all --dry-run
`$3
`bash
npx expo-build-bump --json
`Example JSON output:
`json
{
"file": "app.config.ts",
"version": "2.5.10",
"iosBuild": 45,
"androidCode": 120
}
`---
โ๏ธ CI/CD Integration
$3
`yaml
name: Bump App Versionon:
push:
branches:
- main
jobs:
bump-version:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Bump version & build
run: npx expo-build-bump --all --json > bump.json
- name: Show new versions
run: cat bump.json
- name: Commit changes
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git add app.config.*
git commit -m "chore: bump version [skip ci]"
git push
`$3
`yaml
bump-version:
stage: deploy
script:
- npx expo-build-bump --all
- git add app.config.*
- git commit -m "chore: bump version [skip ci]"
- git push
`$3
`bash
Install bun if you haven't
curl -fsSL https://bun.sh/install | bashRun with bunx
bunx expo-build-bump --all
`---
๐งช Example Outputs
CLI Output (default):
`
Version and build numbers upgraded in app.config.ts: Version: 2.5.10
iOS Build Number: 45
Android Version Code: 120
`Dry-Run Mode:
`
Version and build numbers upgraded in app.config.ts: Version: 2.5.10
iOS Build Number: 45
Android Version Code: 120
(Dry run mode: no file was written)
`JSON Output (
--json flag):`json
{
"file": "app.config.ts",
"version": "2.5.10",
"iosBuild": 45,
"androidCode": 120
}
`---
๐ก๏ธ Safety Features
- Input Validation: Validates version format (semver) and build numbers (positive integers)
- Automatic Backups: Creates temporary backup before writing, removes on success
- Change Detection: Only writes file if content actually changed
- Failure Warnings: Shows warnings if fields couldn't be found or updated
- Error Handling: Graceful error messages for file read/write issues
---
๐ Supported Config Files
The tool automatically detects and works with:
-
app.config.ts (TypeScript)
- app.config.js (JavaScript)
- app.json (JSON)You can also specify a custom config file:
`bash
npx expo-build-bump --config ./custom-config.json
`---
๐งฐ Development
$3
`bash
git clone https://github.com/Subhashish-Mishra/expo-build-bump.git
cd expo-build-bump
npm install
npm link
`Now you can use:
`bash
expo-build-bump
`$3
`bash
node expo-build-bump.js --help
`---
๐ค Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
1. Fork the repository
2. Create your feature branch (
git checkout -b feature/amazing-feature)
3. Commit your changes (git commit -m 'Add some amazing feature')
4. Push to the branch (git push origin feature/amazing-feature)
5. Open a Pull Request---
๐ License
MIT ยฉ 2025 Subhashish Mishra
---
๐ก Why expo-build-bump?
Manually editing version numbers in
app.config.ts` is tedious and error-prone. This tool:- Saves time: No more manual edits
- Prevents errors: Input validation ensures valid values
- CI/CD ready: Perfect for automated workflows
- Safe: Automatic backups and change detection
- Flexible: Works with all Expo config formats
---
Subhashish Mishra
GitHub: @Subhashish-Mishra
---
Found a bug or have a feature request? Please open an issue.
---
If this tool helped you, please consider giving it a star on GitHub!
---
Happy versioning! ๐