Change the App Name
Change the user-visible name of a React Native app on iOS and Android, and why it is not the same as the bundle identifier.
This guide covers changing the user-visible display name of a React Native app, as distinct from its bundle identifier/application ID or its npm package name.
Quick Answer
In an Expo project, set name (and usually slug) in app.json; in a bare React Native project, set CFBundleDisplayName in ios/*/Info.plist and app_name in android/app/src/main/res/values/strings.xml; then do a full rebuild, not just a Metro reload.
1. Three Different "Names" Are Easy to Confuse
- the display name shown under the home screen icon, which this guide changes;
- the bundle identifier / application ID (e.g.
com.yourcompany.yourapp), a permanent machine identifier covered in Change the Bundle Identifier and Application ID; - the npm package name in
package.json, which is purely internal to your JS tooling and invisible to users.
Changing one does not change the others.
2. Expo Projects
Edit app.json:
{
"expo": {
"name": "Your App Name",
"slug": "your-app-slug"
}
}
name is the display name; slug is used in Expo/EAS URLs and project identification, changing it is a bigger, separate decision than a display name change.
3. Bare React Native: iOS
Edit CFBundleDisplayName in ios/<AppName>/Info.plist, or set it via Xcode's target General settings under Display Name.
4. Bare React Native: Android
Edit android/app/src/main/res/values/strings.xml:
<string name="app_name">Your App Name</string>
5. Rebuild, Don't Just Reload
The app name is baked into the native build, not the JS bundle. Metro's fast refresh will not pick this up; you need a full rebuild (corepack yarn ios / corepack yarn android, or for Expo, npx expo prebuild --clean first if you edited native files directly instead of app.json).
Common Issues
Name changed in app.json but the old name still shows native folders were generated before the change and weren't regenerated; run npx expo prebuild --clean (Expo) or reinstall the app after a clean rebuild.
Renamed on iOS but not Android, or vice versa each platform's name lives in a different file; both must be edited.
Old name persists after everything looks correct the OS is showing a cached icon/label; uninstall and reinstall the app rather than just rebuilding over it.
Verification Checklist
- the display name is updated on both iOS and Android;
- a full rebuild (not just a Metro reload) has been run;
- the app was uninstalled and reinstalled if a cached name persists;
- the bundle identifier / application ID was not accidentally changed at the same time.