MarketPlace Logo

Jan 06, 2026

Dot

4 min read

How to Change Application Name in React Native The Right Way

Author

Suraj Ahmed

How to Change Application Name in React Native The Right Way

Swapping out an app's name might seem simple on the surface, but in a React Native project, it touches just about everything. One wrong move with a display name or a package identifier, and you're suddenly staring down broken builds and a long night of debugging. This guide is your roadmap to getting it right the first time.

Your App Naming Blueprint: Why This Guide Matters

When you're working with a modern stack like Expo, TypeScript, and NativeWind—which is standard for our gluestack market templates—you learn quickly that everything is connected. A tiny mistake in app.json can cause a ripple effect, leading to build failures. Forgetting to update a native identifier can get your app rejected from the stores.

It really boils down to two key pieces:

  • The Display Name: This is the name everyone sees on their home screen, like "WealthWise." It’s your app's public identity.
  • The Unique Identifiers: These are the bundleIdentifier for iOS and the package name for Android. Think of them as the app's permanent social security number, like com.wealthwise.app.

Nailing this from the get-go is a massive time-saver. I've seen developers burn 4-6 hours trying to hunt down all the right files and fix build errors from a botched rename, mostly due to patchy documentation and weird platform quirks. Thankfully, tools like Expo have made this process much smoother, often taking it from a half-day headache to a task you can knock out in under 30 minutes. That's a huge win when you consider React Native already cuts development costs by 30-35% compared to building fully native apps.

The Renaming Roadmap

To get through this without any hiccups, you need a clear map of the files you'll be editing. Each one has a specific job in defining your app's identity across platforms. This flow diagram gives you the basic sequence: start with your main config file, and let the changes trickle down to the native iOS and Android projects.

A process flow diagram showing how to rename an application across App.json, iOS, and Android platforms.

The key takeaway here is that app.json (or app.config.js) is your starting point. Its changes get pushed into the native iOS and Android projects when you run your build.

One of the most common mistakes I see is developers manually editing native files like Info.plist or AndroidManifest.xml before updating app.json. This almost always leads to your changes being overwritten during the next build. Always treat app.json as the single source of truth and let Expo's tooling do the heavy lifting.

This guide will walk you through the whole process, step by step. Whether you're rebranding a project you've been working on for months or just customizing a new template, mastering this skill will set you up for a clean, professional, and error-free launch.

Key Files for Renaming Your React Native App

Here's a quick look at the essential files you'll be working with. Understanding what each one does will make the process much smoother.

File or Location What It Controls Platform
app.json or app.config.js The main configuration: display name, slug, bundle/package IDs Both (Source of Truth)
ios/[project-name]/Info.plist iOS display name (CFBundleDisplayName) and bundle identifier iOS
android/app/build.gradle Android package name (applicationId) Android
android/app/src/main/res/values/strings.xml Android display name (app_name) Android
package.json Project metadata, mainly the name field for dependencies Both

Getting familiar with this handful of files is the first step toward a successful and stress-free app rename.

Mastering Your Core Configuration in app.json

The command center for any modern Expo project is its app.json or app.config.js file. When you're renaming your app, this is ground zero. Getting this right from the very beginning saves you from a world of headaches and overwritten changes down the line.

At its core, the process is simple: you just need to update two key properties, name and slug. It’s really important to understand that they do two completely different things. The name is what your users will actually see on their home screen. The slug, on the other hand, is the URL-friendly handle used in your app's public URL for Expo Go.

The Difference Between Name and Slug

Think of it like this: if your app was a book, the name is the title printed on the cover. The slug is the unique ISBN on the back. They're both essential, but they serve different audiences and have different jobs.

Let's run through a quick, real-world scenario. Imagine you started your project with a template named 'FinanceTracker' and now you're ready to rebrand it as 'WealthWise'.

Here’s how you’d update your app.json: { "expo": { "name": "WealthWise", "slug": "wealthwise-app", // ... other configurations } } You can see what changed:

  • name: This is now "WealthWise," the polished, user-facing display name.
  • slug: I've changed this to "wealthwise-app". My personal rule is to always keep the slug simple, lowercase, and free of special characters to avoid any weird issues.

Making these tweaks in app.json is incredibly powerful because Expo treats this file as the single source of truth. When you kick off a build, Expo automatically pushes these values into the native iOS and Android config files, like Info.plist and AndroidManifest.xml. This alone saves you from having to manually dig through those files yourself.

Avoiding Common Configuration Pitfalls

A smooth name change really comes down to avoiding a few common mistakes. One of the biggest blunders I see is using special characters or spaces in the slug. That can easily break your deep linking and cause over-the-air (OTA) updates to fail because the URL just won't be valid.

Botched app name changes have been a major source of frustration for developers for years. In fact, simple configuration errors once caused an estimated 12% of Expo build failures in surveys among freelance developers, often delaying MVP launches by up to 48 hours. By centralizing this in app.json, Expo has slashed that inefficiency by over 90%. That’s a huge win in a market where React Native's developer adoption sits at a strong 14.51%, powering a massive part of the app economy. You can find more stats on the React Native developer ecosystem on Binmile.

My go-to rule for the slug is to keep it squeaky clean: lowercase letters, numbers, and hyphens only. So, if your app name is 'My Awesome App 2.0', a safe slug would be something like 'my-awesome-app-2'. This simple habit prevents an entire category of bugs.

Once your app.json is updated, you’ve built a solid foundation for the rest of the renaming process. You can explore how to build on this by checking out our complete Expo and React Native tutorial. Nailing this first step ensures that as you move into platform-specific identifiers, your core configuration is locked in and totally reliable.

Updating Native Identifiers for iOS and Android

A person works on a laptop displaying code, with office supplies and 'EDIT App Json' text.

While the display name is what users see on their home screens, the app stores care about a much more permanent identity: the Bundle Identifier for iOS and the Package Name for Android.

Think of these as your app's permanent digital fingerprint. Once you publish to the App Store or Google Play, they are locked in. You can't change them.

This is a step you absolutely have to nail before your first release, especially when you're starting from a template that likely has placeholder identifiers. Mess this up, and you could be forced to unpublish your app and start over with a brand new store listing, kissing all your hard-earned ratings and user data goodbye.

Setting Your App's Permanent Identity

Thankfully, Expo saves us from the headache of digging through native project files. You can manage these critical identifiers right from your app.json or app.config.js file using two specific keys: ios.bundleIdentifier and android.package.

The standard convention here is reverse domain name notation. So, if your company website is wealthwise.com and your app's slug is wealthwise-app, you'd set them up like this:

  • iOS Bundle Identifier: com.wealthwise.app
  • Android Package Name: com.wealthwise.app

Keeping them identical across both platforms is a solid best practice. It makes life so much easier when you're setting up third-party services like Firebase, push notifications, or in-app payments.

Here’s what that looks like inside your app.json: { "expo": { "name": "WealthWise", "slug": "wealthwise-app", "ios": { "bundleIdentifier": "com.wealthwise.wealthwise-app" }, "android": { "package": "com.wealthwise.wealthwise-app" } } } With this setup, every time Expo generates your native project files, it'll inject the correct identifiers automatically. Understanding these nuances is crucial, and if you want to go deeper, it's worth exploring the differences between React Native and native app development.

Generating and Verifying the Native Files

Once your app.json is updated, the next move is to apply those changes by regenerating the native ios and android directories. For this, we turn to the expo prebuild command. It’s a powerful tool that reads your configuration and builds the entire native project structure from the ground up.

To avoid any weird caching issues or leftover artifacts from the old configuration, always run it with the --clean flag. Pop open your terminal in the project root and run:

npx expo prebuild --clean

This command wipes your existing ios and android folders and rebuilds them based on your latest settings. It might take a minute, but it's a non-negotiable step for verification.

Don't skip the --clean flag. I've seen developers pull their hair out over old identifiers sticking around because of caching. A clean prebuild is your insurance policy—it guarantees every file is fresh and based on your new config.

After the prebuild finishes, it's time to play detective and confirm the changes were applied correctly. This is your last chance to spot-check everything before you commit your code or kick off a build.

Here’s where you need to look:

  1. For iOS: Open up ios/[YourProjectName]/Info.plist. You can use a text editor or just open the ios folder in Xcode. Find the CFBundleIdentifier key. Its value should be an exact match for what you put in ios.bundleIdentifier.

  2. For Android: Crack open the android/app/build.gradle file. You’re looking for the applicationId inside the defaultConfig block. Make sure its value matches your android.package setting.

Verifying these files yourself provides that final peace of mind. You know for sure that your app’s core identity is correctly wired up, preventing those dreaded, last-minute build rejections from the app stores.

Your app’s new identity has to go beyond the code. A successful rebrand means making sure your new name is front and center on your web presence and in the app stores where users first discover you.

I’ve seen it happen more times than I can count: a team executes a flawless rebrand in the code, only to launch with the old name lingering in a browser tab or, worse, on the actual App Store listing. It’s a small detail that can make a polished app feel unprofessional and confuse potential users right out of the gate.

Aligning Your Web Presence

If you're building a universal app with Expo, your web build deserves the same attention as your native ones. The browser tab title is often the very first thing a user sees. Luckily, you can manage this right inside your app.json.

Just pop a web key into the expo object and set the title. This simple move ensures the <title> tag in your generated HTML is always on-brand.

{ "expo": { "name": "WealthWise", "slug": "wealthwise-app", "web": { "title": "WealthWise - Your Personal Finance Tracker" } // ... other configurations } }

This little tweak doesn't just clean up the browser tab. It also affects how your app looks in search results and when it’s shared on social media, making it a tiny but mighty detail for brand consistency.

A huge part of understanding how to change application name is recognizing that it's your first marketing tool. Your app store listing drives 74% of top App Store downloads for hybrid apps. In the past, I've seen A/B tests where mismatched names led to 15-20% higher bounce rates simply due to user confusion. Thankfully, modern tooling has cut these kinds of renaming errors by an impressive 85%, making it easier to maintain that crucial brand consistency from day one. You can dig into more insights on the impact of branding in hybrid apps on Springsapps.

Updating Your App Store Listings

With your code ready to go, the final frontier is the app stores themselves. Both App Store Connect and the Google Play Console have their own metadata fields that you have to update manually. This part is completely separate from your codebase.

Here’s your checklist for each platform:

  • App Name: The main title people see in the store. This must match the name you set in app.json.
  • Subtitle (iOS) / Short Description (Android): That punchy one-liner that sits right under your app’s name in search results.
  • Promotional Text (iOS) / Full Description (Android): Your detailed marketing copy—this is where you sell your app’s features and benefits.

Updating these fields is easy but absolutely essential. On App Store Connect, you’ll roll these changes into a new app version for review. On the Google Play Console, you can usually update your store listing anytime, and the changes often appear within a few hours.

A cohesive name across every touchpoint—from the device home screen to the browser tab to the store listing—is what builds trust and drives downloads. It’s the final polish that separates a good app launch from a great one.

App Name Consistency Checklist

To help you keep track of everything, I've put together a quick checklist. Running through this before you ship will help you catch any lingering instances of the old name and ensure your new brand is represented perfectly everywhere.

Location Key Field to Update Purpose
app.json / app.config.js name Sets the display name on the user's device. The primary source of truth.
app.json / app.config.js slug Defines the URL-friendly name for your app on Expo's services.
app.json / app.config.js expo.web.title Sets the HTML <title> for your web build, visible in browser tabs.
iOS Native Files Info.plist Contains the CFBundleDisplayName and CFBundleName for the native iOS build.
Android Native Files strings.xml Holds the app_name string resource used by the Android build.
build.gradle (Android) applicationId The unique package name for your app on the Google Play Store.
project.pbxproj (iOS) PRODUCT_BUNDLE_IDENTIFIER The unique bundle ID for your app on the Apple App Store.
App Store Connect App Name & Subtitle The public-facing name and tagline on the Apple App Store.
Google Play Console App Name & Short Description The public-facing name and tagline on the Google Play Store.

Nailing the consistency across these key spots is what gives your app a professional, trustworthy feel. It’s the difference between an app that feels thrown together and one that feels thoughtfully crafted from top to bottom.

Verification and Troubleshooting Common Hurdles

Laptop on a wooden desk displaying an app store, with phones and coffee cup. Overlay text: 'UPDATE STORE LISTING'.

You’ve painstakingly updated every config file and lined up your store listings. Now for the moment of truth: verification. Skipping this part is a one-way ticket to the classic "it works on my machine" nightmare, where caching gremlins and identifier mismatches only show up after you’ve shipped to users.

Thorough testing isn't just a suggestion; it's the final quality gate. This is how you confirm your rebranding effort is a solid success, not a ticking time bomb of bugs and broken builds. It’s all about making sure the new name and identifiers have actually stuck everywhere they need to.

Creating a Clean Slate for Testing

Your number one enemy after a name change? Caching. Build tools, simulators, and even your package manager can stubbornly cling to old artifacts, making you think your changes failed. The only way forward is to start with a completely clean slate.

Before you even think about building, run through this decontamination protocol:

  1. Uninstall the Old App: Don't just install over the old version. Drag the app icon to the trash on your simulator or physical device and make sure it's gone for good.
  2. Clear Package Manager Cache: Run npm cache clean --force or yarn cache clean. This stops old dependencies from sneaking back in.
  3. Wipe Native Directories: This is a big one. As we touched on earlier, npx expo prebuild --clean is your best friend. It nukes the ios and android folders and rebuilds them from scratch based on your app.json—the single source of truth.

Following these steps ensures that your next build is truly fresh, using only the new configuration.

I can't count the number of hours I've lost debugging an issue that was just a stale value in a cached build folder. Make this cleanup process a reflex. It will save you an unbelievable amount of frustration down the line.

With a clean environment, you're ready to build and verify. Go ahead and run npx expo run:ios or npx expo run:android to compile the app and fire it up on your device.

Common Hurdles and How to Fix Them

Even with the best preparation, you might hit a few speed bumps. Knowing what to look for can turn a moment of panic into a quick fix. If your app builds successfully but still shows the old name somewhere, it's almost guaranteed to be a caching issue you missed. Go back and be ruthless with your cleanup.

What if the build fails completely? Your terminal is now your treasure map. The error messages will point you in the right direction. Most build failures after a rename trace back to an identifier mismatch. Dig into the native build logs—they’ll often tell you exactly which file is still referencing the old package or bundle ID.

A sneakier problem is broken deep links. If your app used a custom URL scheme tied to the old name or identifier (my-old-app://), those links will now fail silently. You have to manually test every single deep link path to make sure they still navigate to the right screen in your rebranded app.

Looking to level up your debugging game? Our guide on how to debug React Native apps is a great place to start, covering everything from inspecting native logs to using more powerful tools.

Your Final Verification Checklist

Once the app boots up, it's time for one last visual and functional check. This is your final opportunity to catch any lingering ghosts of the old name before you ship.

  • Home Screen Icon: Look at your device's home screen. Does the correct new app name appear under the icon?
  • In-App Displays: Check the app switcher, system settings menus, and any permission pop-ups. The new name should be consistent across all system-level UI.
  • Build Logs: Take a quick scan of the final few lines of your build output. Double-check that the logs reference the new bundle identifier and package name.

Getting through this verification process means you’ve done more than just learn how to change application name. You’ve mastered the full lifecycle of a fundamental development task. This systematic approach ensures your app not only works perfectly but also presents a polished, consistent brand to your users from the very first install.

Advanced Scenarios and Automation Tips

A person's hands typing on a keyboard with code on a computer screen and 'VERIFY AND TEST' text.

Let's be real: manually renaming a project is a drag. It’s a huge bottleneck, especially if you're juggling multiple apps or white-labeling a template for different clients. This kind of repetitive grunt work is the perfect candidate for automation.

Why spend hours poking around in config files when you could just run a single, repeatable command? The key is to get comfortable with scripting. With a custom script, you can programmatically tweak JSON files, update native configs, and even swap out assets like splash screens from one central place. This is how you really unlock the power of using a template.

Automating with Community Packages

A great place to start is with a trusted community package. One of the most popular tools out there is react-native-rename. It’s a solid choice, but you have to be a bit careful when using it in an Expo-managed project because it directly messes with native files that Expo usually handles for you.

To use it safely, I stick to this workflow:

  1. Run npx expo prebuild first. This command makes sure your ios and android directories are generated and ready to be modified.
  2. Use the renaming tool. Kick off the package's command, something like npx react-native-rename "NewAppName" -b com.company.newappname.
  3. Verify the changes. This is crucial. Always pop open Info.plist, build.gradle, and strings.xml to make sure the updates went through correctly.

This approach handles the most tedious parts of the job, but it’s on you to double-check its work.

My personal rule is to treat automation tools as assistants, not replacements. They handle 80% of the repetitive work, but I always perform a final manual audit. This simple check has saved me from committing broken native files more times than I can count.

Creating Custom Renaming Scripts

For total control, particularly in a white-labeling setup, nothing beats writing your own script. Picture a simple Node.js script that pulls from a config.json file. This file could hold everything: the new app name, bundle ID, and even the file paths to client-specific logos and splash screens.

From there, your script could automatically:

  • Read the new configuration values.
  • Update app.json with the new name, slug, and identifiers.
  • Find and replace placeholder text in files like strings.xml.
  • Copy over the new logo and splash screen image files.

Suddenly, figuring out how to change application name transforms from a manual checklist into a slick, error-proof part of your workflow. You’ll have a reliable system that lets you launch customized apps for clients faster than you ever thought possible.

Frequently Asked Questions

Even with a step-by-step guide, renaming an app can throw a few curveballs your way. Let's tackle some of the most common questions and tricky situations that developers run into during this process.

Can I Change My Application Name After Publishing?

Yes and no. It really depends on what you mean by "name."

The display name—the one your users see on their home screen—is totally flexible. You can update it anytime by simply submitting a new version of your app to the App Store and Google Play. It’s a common way to refresh your brand or clarify your app's purpose.

The real point of no return is the core identifiers: the iOS Bundle Identifier and the Android Package Name. These are set in stone the moment you publish. Think of them as your app's permanent social security number. If you try to change them later, the app stores will see it as a completely new application. You’d have to unpublish your current app and start from scratch, losing every single user, rating, and review you've earned.

Finalizing your bundle and package identifiers before your first release is non-negotiable. Treat them like a foundation; once the house is built, you can’t change it without tearing everything down and starting over.

Why Is My Old App Name Still Showing Up?

This is a classic headache, and the culprit is almost always caching. To make your development process faster, various tools—from the simulator to your package manager—hold onto old build artifacts. When you rename things, these stale bits can get stuck, causing the old name to pop up like a ghost in the machine.

When this happens, you need to do a full, deep clean:

  1. First, completely delete the app from your simulator or physical device. Don't just overwrite it.
  2. Next, force Expo to regenerate the native project files by running npx expo prebuild --clean. This wipes the old ios and android directories.
  3. Finally, clear out any lingering cached packages with npm cache clean --force or yarn cache clean.

After that, a fresh build should pull in all the new configurations, and the old name will finally be gone for good.

Do I Need to Update Third-Party Service Configurations?

Absolutely. This is a critical step that’s easy to miss, and it can silently break key features of your app.

Many third-party SDKs for services like analytics, push notifications, or crash reporting are tied directly to your app's unique identifiers. Firebase, for instance, uses your Android Package Name and iOS Bundle Identifier to link your mobile app to the correct project in their cloud.

If you change those identifiers in your app.json or app.config.js, you have to sync those changes with Firebase. That means you'll need to:

  • Go into your Firebase project settings and update the app details there.
  • Download the new google-services.json (for Android) and GoogleService-Info.plist (for iOS) files.
  • Replace the old config files in your project with these new ones.

Forgetting to do this will sever the connection between your app and the service, causing things to fail without any obvious errors. It's a good practice to audit all your integrated services anytime you make a change to your app's core identifiers.


Ready to build your next app without the boilerplate? gluestack market offers a huge collection of production-ready React Native templates to help you launch faster. Check out our templates and UI kits today!