Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>React Native Version BumperNew to Visual Studio Code? Get it now.
React Native Version Bumper

React Native Version Bumper

Sandip Shiwakoti

|
3 installs
| (0) | Free
One-click version bumping for React Native and Expo projects.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

React Native Version Bumper Logo

React Native Version Bumper

Marketplace Version Downloads GitHub Stars

⚡ One-click version bumping for React Native and Expo projects
CodeLens integration • Git automation • Cross-platform sync • Batch preview


✨ Features

  • 📱 Version Bumping: Increment versions across Android (build.gradle), iOS (Info.plist), and package.json with semantic versioning (major, minor, patch)
  • 🔍 Smart CodeLens: Click ↑ links above version lines for instant updates with intelligent auto-detection of project files
  • 🔄 Git Workflow Integration: Create branches, commit changes, tag releases, and push to remote with smart commit messages
  • 📋 Interactive Batch Mode: Preview all file changes and Git operations before execution, then apply everything atomically
  • 📊 Version Overview Dashboard: View current versions across all platforms in a unified interface
  • ⚙️ Intelligent Auto-Detection: Automatically finds Android, iOS, and package.json files with support for custom paths and platform skipping
  • 🚀 Expo Support: Also works with Expo projects (app.json, app.config.js, app.config.ts) with optional native file synchronization
  • 🔗 Release Automation: Generate release notes and provide links to create GitHub/GitLab releases and pull requests

🚀 Installation

Get it from the VS Code Marketplace or install it manually:

code --install-extension sandipshiwakoti.vscode-react-native-version-bumper

Requirements: A React Native project with android/ and/or ios/ folders. Also supports Expo projects with app.json, app.config.js, or app.config.ts. Package.json is optional.


⚡ Quick Start

  1. Install from VS Code Marketplace
  2. Open your React Native or Expo project
  3. Press Ctrl+Shift+P (or Cmd+Shift+P)
  4. Type "Version Bumper" and choose your action
  5. Done! All platforms updated and synced with clean commit messages

🎥 See It In Action

⚡ CodeLens: One-Click Version Updates

Click the ↑ arrows above version lines for instant bumps

CodeLens Demo

🔄 Bump All Platforms

Update Android, iOS, and package.json simultaneously

Bump All Demo

⚒️ Complete Git Workflow

Branch creation, commits, tags, and release automation

Bump All Git Demo

🔀 Sync All Platforms

Synchronize versions across all platforms to match

Sync All Demo

📊 Version Overview

Monitor all platform versions at a glance

Version Overview Demo

🚀 Expo Support

Supports Expo projects: configure via app.json, app.config.js/ts with option to sync native Android/iOS files

Expo Demo

📋 Usage

1. Open Your Project

Open a React Native or Expo project in VS Code.

2. Run Commands

Access commands via the Command Palette (Ctrl+Shift+P or Cmd+Shift+P on macOS):

  • Version Bumper: Bump All
    Bumps versions for selected platforms without Git operations.

    • Choose bump type (Major, Minor, Patch) for Android/iOS.
    • Choose package.json bump type or skip it entirely for this operation.
    • Updates version code (Android/iOS) and version name (all platforms).
    • View results in a webview (success/failure details).
  • Version Bumper: Bump All + Git
    Bumps versions and performs Git operations.

    • Same version bump process as above (with option to skip package.json).
    • Additional steps:
      • Create a branch (optional, customizable name).
      • Commit changes (customizable message).
      • Create a tag (optional, customizable format).
      • Push to remote (optional).
    • Webview results include links to:
      • Create a Release: For the new tag (e.g., on GitHub or GitLab).
      • Create a Merge Request: For the new branch (e.g., on GitHub or GitLab).
  • Version Bumper: Sync All
    Sync all platforms to the same version.

    • Choose source version (package.json, Android, iOS, or custom).
    • Preview changes before confirming.
    • Updates all platforms simultaneously.
  • Version Bumper: Sync All + Git
    Same as "Sync All" with Git workflow automation.

    • Syncs all platforms to the same version.
    • Creates branch, commits, tags, and pushes to remote.
  • Version Bumper: Version Overview
    Displays current versions for all platforms in a webview.

  • Version Bumper: Bump Patch (Current File)
    Bumps patch version in the currently active file only (package.json, build.gradle, or Info.plist).

  • Version Bumper: Bump Minor (Current File)
    Bumps minor version in the currently active file only.

  • Version Bumper: Bump Major (Current File)
    Bumps major version in the currently active file only.

3. CodeLens (Click ↑ to Bump)

When CodeLens is enabled (default), editing package.json, build.gradle, or Info.plist shows CodeLens links above version fields:

  • Click ↑ links to bump versions:

    • Android/iOS: Shows build numbers (e.g., "↑ Patch (1.0.1 (24))")
    • Package.json: Shows version only (e.g., "↑ Patch (1.0.1)")
    • Auto-detects: Project files and custom paths
  • Toggle CodeLens: Use the editor title bar button (circle with upward arrow for enabled, slashed for disabled) to show/hide CodeLens for a cleaner editor view.

📱 Expo Support

The extension also works with Expo projects, supporting:

  • Configuration Files: app.json, app.config.js, and app.config.ts
  • CodeLens Integration: Click ↑ arrows above version lines in Expo config files
  • Native File Sync: Optional sync with Android/iOS files (enable expo.syncNativeFiles)
  • Clean Git Messages: Simple commit messages like chore: bump version to v1.2.0

Example:

// ↑ Patch (1.0.1) | ↑ Minor (1.1.0) | ↑ Major (2.0.0)
{
    "expo": {
        "version": "1.0.0"
    }
}
  1. Push changes to your repository

Example CodeLens in action:

// ↑ Patch (1.0.1) | ↑ Minor (1.1.0) | ↑ Major (2.0.0)
{
    "version": "1.0.0"
}
// ↑ Patch (1.0.1 (24)) | ↑ Minor (1.1.0 (24)) | ↑ Major (2.0.0 (24))
versionName "1.0.0"
versionCode 23
<!-- ↑ Patch (1.0.1 (24)) | ↑ Minor (1.1.0 (24)) | ↑ Major (2.0.0 (24)) -->
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>

4. Auto-Detection & What Gets Updated

Android (android/app/build.gradle)

  • Auto-detects: android/app/build.gradle file
  • Updates: versionName "1.0.0" and versionCode 23
  • Custom path: Configure via reactNativeVersionBumper.android.buildGradlePath

iOS (ios/*/Info.plist)

  • Auto-detects: Info.plist in ios/YourAppName/ or ios/ folder
  • Updates: CFBundleShortVersionString (version) and CFBundleVersion (build number)
  • Smart Variables: Automatically detects and handles iOS variables like $(MARKETING_VERSION), $(CURRENT_PROJECT_VERSION) - updates project.pbxproj when variables are found
  • Flexible: Works with direct values or any $(...) variable pattern
  • Custom path: Configure via reactNativeVersionBumper.ios.infoPlistPath

Package.json (optional)

  • Auto-detects: package.json in project root
  • Updates: "version": "1.0.0"
  • Skip: Set reactNativeVersionBumper.skipPackageJson: true

5. Status Bar

Click the status bar item to quickly see the current package.json version or trigger the "Version Overview" command.


⚙️ Configuration

Adjust settings in settings.json to fit your workflow:

Setting Description Default
reactNativeVersionBumper.skipPackageJson Skip package.json version bump false
reactNativeVersionBumper.skipAndroid Skip Android version bump false
reactNativeVersionBumper.android.buildGradlePath Path to build.gradle "android/app/build.gradle"
reactNativeVersionBumper.skipIOS Skip iOS version bump false
reactNativeVersionBumper.ios.infoPlistPath Custom path to Info.plist (auto-detected if null) null
reactNativeVersionBumper.ios.projectPbxprojPath Custom path to project.pbxproj (auto-detected if null) null
reactNativeVersionBumper.git.commitMessagePrefix Commit message prefix (system adds smart version suffix) "chore: bump version to "
reactNativeVersionBumper.git.syncCommitMessagePrefix Commit message prefix for sync operations (system adds smart version suffix) "chore: sync version to "
reactNativeVersionBumper.expo.syncNativeFiles Sync Expo version changes to native Android and iOS files false
reactNativeVersionBumper.git.skipBranch Skip branch creation false
reactNativeVersionBumper.git.autoCreateBranch Auto-create branch false
reactNativeVersionBumper.git.branchNameTemplate Branch name template "release/{version}"
reactNativeVersionBumper.git.skipTag Skip tag creation false
reactNativeVersionBumper.git.autoCreateTag Auto-create tag false
reactNativeVersionBumper.git.tagNameTemplate Tag name template "v{version}"
reactNativeVersionBumper.git.skipPush Skip pushing to remote false
reactNativeVersionBumper.enableCodeLens Enable or disable CodeLens for version bumping true
reactNativeVersionBumper.showInStatusBar Show version information in the status bar true
reactNativeVersionBumper.batchMode Preview all operations before execution - shows file modifications, version changes, and Git operations in an interactive preview before applying (recommended) true

Smart Commit Messages

The extension uses a commit message prefix approach for cleaner, more predictable commit messages:

How It Works

  • You configure: Just the prefix (e.g., "chore: bump version to ")
  • System adds: Smart version suffix based on your project type
  • Result: Clean, contextual commit messages

Project-Aware Behavior

Project Type Example Result
Expo Projects chore: bump version to v1.2.0
React Native (Same Versions) chore: bump version to v1.2.0
React Native (Different Versions) chore: bump version to Android v1.2.0, iOS v1.2.1
Package.json Only chore: bump version to package.json v1.2.0
Single Platform chore: bump Android version to v1.2.0

Sync Operations

Sync operations use a separate configurable prefix:

  • Regular: chore: bump version to v1.2.0 (uses git.commitMessagePrefix)
  • Sync: chore: sync version to v1.2.0 (uses git.syncCommitMessagePrefix)

Template Placeholders

For branch names and tag names:

  • {type}: Bump type (e.g., "patch", "minor", "major")
  • {version}: Latest version (from Git tag or package.json)
  • {date}: Current date in YYYY-MM-DD format
  • {androidVersion}: Android version number (e.g., "1.0.1")
  • {iosVersion}: iOS version number (e.g., "1.0.1")
  • {androidBuildNumber}: Android build number (e.g., "2")
  • {iosBuildNumber}: iOS build number (e.g., "3")

Release Notes

The extension automatically generates release notes with the following behavior:

1. Uses existing project templates (if found):

  • .github/RELEASE_TEMPLATE.md
  • .github/release_template.md
  • .github/RELEASE_NOTES_TEMPLATE.md
  • .gitlab/RELEASE_TEMPLATE.md
  • Similar variations

2. Appends version information at the end (only if not already present):

**Version Updates:**

- Android: 1.0.0 → 1.0.1 (build 123)
- iOS: 1.0.0 → 1.0.1 (build 456)

**Full Changelog**: https://github.com/user/repo/compare/v1.0.0...v1.0.1

3. Falls back to simple default if no template exists:

**What's Changed:**

<!-- Add your changes here -->

-
- **Version Updates:**

- Android: 1.0.0 → 1.0.1 (build 123)
- iOS: 1.0.0 → 1.0.1 (build 456)

**Full Changelog**: https://github.com/user/repo/compare/v1.0.0...v1.0.1

To customize release notes: Create a .github/RELEASE_TEMPLATE.md file in your project with your preferred format. The extension will automatically use it and append version information at the end.


❓ FAQ

Q: How do I create a release or merge request?
A: Use the "Bump All + Git" command. After a successful bump, the webview shows buttons to:

  • Create a release for the new tag (e.g., on GitHub or GitLab).
  • Create a merge request for the new branch (e.g., on GitHub or GitLab). These open in your browser for the configured Git remote.

Q: How do I toggle CodeLens?
A: Click the editor title bar button when editing package.json, build.gradle, or Info.plist. The button shows a circle with an upward arrow (enabled) or a slashed version (disabled), toggling CodeLens instantly.

Q: What if my project structure is different?
A: Customize file paths in the settings (e.g., android.buildGradlePath, ios.infoPlistPath, ios.projectPbxprojPath). The extension auto-detects Info.plist and project.pbxproj for iOS if not specified, ensuring compatibility with non-standard React Native project structures.

Important: Custom iOS paths are fully supported - if you configure ios.infoPlistPath to point to a custom location (e.g., custom/Info.plist), all version operations including CodeLens will respect this custom path.

Q: Can I use this with monorepos?
A: Yes! You can skip package.json updates and focus on platform-specific files, or configure custom paths for monorepo structures.

Q: What's the difference between the "Skip" option and the skipPackageJson setting?
A: The "Skip" option appears during the interactive bump process and lets you skip package.json for that specific operation. The skipPackageJson setting permanently disables package.json updates. Use "Skip" for occasional exclusions, use the setting for permanent workflow preferences.

Q: Why not a CLI tool instead of a VS Code extension?
A: There are already excellent CLI solutions for CI/CD automation like Fastlane, semantic-release, and standard-version. This extension focuses on a different use case: developer experience during active development. It provides visual feedback, interactive previews, CodeLens integration, and seamless IDE workflow - things that are perfect for when you're actively coding but not ideal for automated pipelines. Think of it as complementary to CLI tools rather than competing with them.


🛠️ Development Setup

  • Tools: Bun, VS Code, TypeScript.
  • Build: bun run compile
  • Test: bun run test
  • Package: bun run package (creates .vsix)
  • Publish: bun run publish (for maintainers)

🙌 Contributing

Contributions are welcome! Please see Contributing Guidelines for details.


📜 License

This project is licensed under the MIT License.


Made with ❤️ for the React Native & Expo community
@sandipshiwakoti

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft