# react-native-rename: one command to change a React Native app's name and bundle ID

> react-native-rename rewrites the iOS and Android project files that carry your app's name and bundle identifier. It works on projects created with react-native init or the Expo bare workflow, and it deliberately leaves build artifacts alone.

**junedomingo/react-native-rename** — Rename react-native app with just one command

- Repository: https://github.com/junedomingo/react-native-rename
- Stars: 2,777 · Forks: 266
- Language: JavaScript
- License: MIT
- Published: 2026-09-28 · Updated: 2026-09-28 · Language: en
- Canonical page: https://hysenlabs.com/projects/junedomingo-react-native-rename

## What react-native-rename changes, and what it refuses to touch

Renaming a React Native app by hand means editing the Xcode project, the Android package directory, the manifest, the Gradle files, and any string that carries the old name. Miss one and the build either fails or ships with the previous identity. react-native-rename is a Node CLI that performs that sweep from a single argument: the new name.

The README is explicit about the boundary. It states the package "does not attempt to properly rename build artifacts such as ios/build or Cocoa Pod installation targets." That is the most useful sentence in the document, because it tells you the tool's job ends at source and configuration. After a rename you are expected to clean, build, and reinstall third party dependencies. Anyone who runs the command, sees a successful exit, and immediately starts the simulator will likely be looking at stale artifacts.

The audience is narrow and clear. The README says the package "assumes that you created your react-native project using react-native init or expo bare workflow." A project scaffolded some other way, or one whose native folders were generated by a tool the package does not know about, is outside the stated contract.

## The bundle identifier flags and the pathContentStr escape hatch

The default rename changes the display name and derives the rest. When you need control over the identifier, the CLI takes -b or --bundleID with a value such as com.example.app, and that value applies to both platforms. If iOS and Android need different identifiers, --iosBundleID and --androidBundleID set them separately.

The option that deserves the most caution is -p or --pathContentStr. The README describes it as a "path and content string that can be used in replacing folders, files and their content," with the warning to make sure it includes no special characters. That is a string used in path matching, so a value containing characters your shell or the filesystem treats specially is a problem waiting to happen. There is also --skipGitStatusCheck, which bypasses the git repository status check. The existence of that check implies the tool prefers to run against a committed tree, and skipping it removes the safety net rather than the risk.

The package.json lists commander for argument parsing and cheerio among the dependencies, which is consistent with a tool that parses project files rather than doing blind text substitution. The build itself is bundled with esbuild into lib/index.js, and the bin entry points at that file.

## Installing react-native-rename and running a first rename

The README's primary usage is through npx, which avoids a global install entirely. The command below renames the app to "Travel App"; the README shows this exact form. Quote the name because it contains a space.

```bash
npx react-native-rename@latest "Travel App"
```

To set the bundle identifier at the same time, pass -b with a reverse-domain value. The README gives com.junedomingo.travelapp as the example.

```bash
npx react-native-rename@latest "Travel App" -b "com.junedomingo.travelapp"
```

If you prefer a persistent binary, the README documents both package managers. With Yarn it is yarn global add react-native-rename, and with npm it is npm install react-native-rename -g. The package.json engines field requires Node.js 20.19.0 or newer, so check that before either install.

```bash
yarn global add react-native-rename
```

The README recommends switching to a new branch first, showing git checkout -b rename-app. Do that. The tool edits files in place, and a branch is the cheapest way to inspect the diff before committing it. After the command finishes, clean your build directories and reinstall dependencies as the README instructs, then build both platforms before trusting the result.

## React Native 0.77+ is the tested window, and older versions are best effort

The README defines the support window as React Native 0.77 and above, tested against 0.77.1, 0.81.6, and 0.85.3. Three point releases is a thin matrix for a tool that edits generated native project files, and the README acknowledges this by calling older versions "best effort" and asking users who need them to open an issue with a reproducible fixture or sample project.

That is an honest framing, but it shifts real work onto the user. If your app is on an older React Native release, you are not merely outside support; you are responsible for producing the reproduction before anyone will look at it. For a project pinned to an older release for reasons outside its control, that is a meaningful cost.

The second constraint is the one the README states up front: build artifacts and Cocoa Pod installation targets are not renamed. A project with a committed ios/Pods directory, or one that relies on cached build output, will need cleanup that the tool does not perform. Neither of these is a bug. They are the shape of the tool, and they define when it is the wrong choice.

## How react-native-rename differs from a codemod or a manual rename

The closest alternative is doing the rename yourself with a codemod or a scripted find-and-replace. A codemod gives you a transformation you can read, review, and re-run; react-native-rename gives you a bundled binary with flags and a git status check. The trade is control versus coverage. A hand-written codemod will do exactly what you wrote and nothing more, which means it will also miss the files you did not think of. The bundled approach covers the files the maintainer enumerated, and you cannot see that list without reading src/.

Another alternative is regenerating the project under the new name and porting your source across. That sidesteps stale artifacts entirely because there are none, at the cost of redoing native configuration and any manual native changes. For a project with heavy native customization, regeneration is often the more predictable path. For a project that is mostly JavaScript on a stock scaffold, the one-command rename is the smaller operation.

Note that the related search terms people use include react-native-reanimated, react-native-firebase, and react-native-bootsplash. Those are unrelated libraries that share the react-native prefix, not alternatives to this tool.

## Maintenance, licence, and what a rename costs you later

The repository is not archived, and the last push was on 2026-08-04. The most recent release is v3.3.2, published on 2026-05-31, with v3.3.1 and v3.3.0 earlier the same day. That is a recent enough cadence that the tested React Native window includes 0.85.3, which matters more here than release frequency: a rename tool is only useful while it tracks the scaffold it edits.

The licence is MIT, which permits use, modification, and redistribution with the licence and copyright notice retained. That is the whole of the licence implication here; anything about your organisation's obligations is a question for your own counsel.

The upgrade cost is the part people underestimate. Every React Native release can change the shape of the generated iOS and Android projects, and this tool's correctness depends on that shape. The support statement in the README, tested against 0.77.1, 0.81.6, and 0.85.3, is effectively a promise that those three are known good. If you upgrade React Native, re-check that your version is in the window before running a rename, and keep the branch so you can discard the result.

## Conclusion

Adopt react-native-rename if your app came from react-native init or the Expo bare workflow, you are on React Native 0.77 or newer, and you can clean your build directories afterwards. Do not adopt it if you need a rename to survive a fresh pod install without manual cleanup, or if your project predates the tested React Native window and you cannot produce a fixture for an issue. Before running it, verify three things: that Node is at least 20.19.0, that your git tree is clean or you are passing --skipGitStatusCheck knowingly, and that you have a branch to fall back to. If the rename leaves stale entries, the README's own instruction is to clean, build, and reinstall third party dependencies, so treat that step as part of the operation rather than a fix.

## FAQ

### How do I rename a React Native project with react-native-rename?

Run npx react-native-rename@latest followed by the new name in quotes. The README recommends creating a branch first with git checkout -b rename-app, and after the command finishes you should clean, build, and reinstall third party dependencies.

### Can I rename the app name and bundle identifier at the same time?

Yes. Pass -b or --bundleID with a reverse-domain value such as com.junedomingo.travelapp, and it applies to both iOS and Android. The separate --iosBundleID and --androidBundleID flags set the identifier per platform.

### Does react-native-rename work with any React Native project?

No. The README states the package assumes the project was created with react-native init or the Expo bare workflow, and the tested support window is React Native 0.77 and above.

### Does react-native-rename rename iOS build artifacts and Cocoa Pod targets?

No. The README states the package does not attempt to properly rename build artifacts such as ios/build or Cocoa Pod installation targets, and that you should clean, build, and reinstall third party dependencies after renaming.

### What Node.js version does react-native-rename require?

The package.json engines field requires Node.js 20.19.0 or newer.

## Sources

- [Issues](https://github.com/junedomingo/react-native-rename/issues)
- [junedomingo/react-native-rename on GitHub](https://github.com/junedomingo/react-native-rename)
- [License: MIT](https://github.com/junedomingo/react-native-rename/blob/master/LICENSE)
- [README](https://github.com/junedomingo/react-native-rename/blob/master/README.md)
- [Releases](https://github.com/junedomingo/react-native-rename/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/junedomingo-react-native-rename
