How can I change the app display name build with Flutter?
Master System Design with Codemia
Enhance your system design skills with over 120 practice problems, detailed solutions, and hands-on exercises.
Introduction
In Flutter, app display name is configured in native platform files, not in Dart code. Changing it correctly means updating Android and iOS metadata, then rebuilding the app. If you support localization, you also need per-language name resources to keep launcher text consistent for users.
Where Display Name Is Defined
Flutter projects contain separate platform folders:
- Android metadata under
android/app/src/... - iOS metadata under
ios/Runner/...
The visible app name in launcher or home screen comes from those native files. pubspec.yaml does not control display name for installed apps.
Android Configuration
The application label in AndroidManifest.xml usually references a string resource.
Open:
android/app/src/main/AndroidManifest.xml
Typical entry:
Then set value in:
android/app/src/main/res/values/strings.xml
Using string resource is preferred because it supports localization and flavor-specific overrides.
Android Product Flavors
If you use flavors, each flavor can have its own display name by creating flavor-specific resource files.
Example path for staging flavor:
android/app/src/staging/res/values/strings.xml
This avoids confusion when both staging and production builds are installed on one device.
iOS Configuration
For iOS, app name is controlled by CFBundleDisplayName in Info.plist.
Open:
ios/Runner/Info.plist
Set key:
If this key is missing, iOS may fall back to bundle name. Explicitly setting it is clearer and safer.
iOS Localization
For localized app names, use InfoPlist.strings files in language-specific directories.
Example:
ios/Runner/en.lproj/InfoPlist.stringsios/Runner/fr.lproj/InfoPlist.strings
This lets launcher name match system language.
Rebuild and Verify
After updating native files:
For release artifacts:
On devices, uninstall old build if launcher cache shows stale name. Some launchers keep icon labels cached across quick reinstalls.
Automating with Build Variants
Teams often automate naming by build mode or environment.
Android Gradle example:
iOS variants can be handled via Xcode build settings or separate xcconfig files tied to schemes.
Automation prevents accidental shipping of test app labels.
App Store and UX Considerations
Name changes can affect discoverability and user recognition. Before release:
- Confirm name complies with Google Play and App Store policies.
- Keep icon and naming consistent across platforms.
- Verify truncation behavior on small screens.
- Check right-to-left and non-Latin locales if localized.
A long display name may be clipped on home screen, so test on multiple device sizes.
Troubleshooting Checklist
If the name does not change:
- Confirm correct file was edited for active flavor or scheme.
- Ensure Android label points to intended resource key.
- Verify iOS
CFBundleDisplayNamein built app bundle. - Rebuild from clean state.
- Reinstall app and clear launcher cache when needed.
For CI pipelines, include a step that prints resolved Android string resources and iOS plist values before signing.
Common Pitfalls
- Editing Dart files and expecting launcher name to update. Fix by changing native Android and iOS metadata.
- Hardcoding Android label in manifest without resource indirection. Fix by using
@string/app_namefor maintainability. - Forgetting flavor-specific resources. Fix by setting per-flavor names where needed.
- Updating iOS plist but ignoring localized
InfoPlist.strings. Fix by aligning localization strategy. - Skipping clean rebuild after metadata changes. Fix by running
flutter cleanbefore verification.
Summary
- Flutter app display name is defined in native platform configuration files.
- Android usually uses
@string/app_namein manifest plusstrings.xmlvalues. - iOS uses
CFBundleDisplayNameand optional localizedInfoPlist.stringsfiles. - Flavors and schemes should set explicit names to avoid build confusion.
- Rebuild, reinstall, and validate on real devices before release.

