You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
iOS build fails with "Could not find target" for app names with accented characters on SDK 58 (bundled @expo/config-plugins sanitizes names differently) #4715
Since SDK 58, iOS builds of managed projects whose name contains accented characters fail in the "Configure Xcode project" step:
Assigning provisioning profile '*[expo] com.fotto.fotografos AppStore ...' to target 'FottoFotgrafos'
Could not find target 'FottoFotgrafos' in project.pbxproj
The app name is Fotto Fotógrafos. Two different versions of IOSConfig.XcodeUtils.sanitizedName produce two different target names:
Where
@expo/config-plugins
sanitizedName('Fotto Fotógrafos')
expo prebuild (project, SDK 58)
58.0.9
FottoFotografos
eas-cli 25.3.0 (bundled)
55.0.7
FottoFotgrafos
expo/expo#49143 changed the sanitizer to NFKD-normalize before stripping, so ó now becomes o instead of being dropped. That change shipped in @expo/config-plugins 58.0.x, but eas-cli still bundles 55.0.7. So eas-cli resolves the target name with the old algorithm (for example in build/project/ios/scheme.js and the targetName === sanitizedName(exp.name) assertion in bundleIdentifier.js), while the generated Xcode project uses the new one.
#4395 would bump the bundled stack to 56.0.16, which still has the old sanitizer, so it wouldn't fix this.
Any name whose old and new sanitized forms differ is affected (for example Skráning, Árbók, Bjørn, Straße). ASCII-only names are not affected.
Managed or bare?
Managed (CNG, ios/ is gitignored and generated by prebuild on EAS)
Environment
eas-cli 25.3.0 (latest at time of writing), bundles @expo/config-plugins 55.0.7
expo 58.0.16, @expo/config-plugins 58.0.9
Build triggered via EAS Workflows, production profile
Project also has an iOS widget extension target (expo-widgets), which is resolved correctly
Error output
Configuring Xcode project
Assigning provisioning profile '[expo] com.fotto.fotografos.ExpoWidgetsTarget AppStore 2026-07-23T19:44:32.192Z' (Apple Team ID: 4GYFGE5BQ8) to target 'ExpoWidgetsTarget'
Assigning provisioning profile '[expo] com.fotto.fotografos AppStore 2026-06-09T02:01:20.196Z' (Apple Team ID: 4GYFGE5BQ8) to target 'FottoFotgrafos'
Could not find target 'FottoFotgrafos' in project.pbxproj
Reproducible demo or steps to reproduce from a blank project
npx create-expo-app@latest repro (SDK 58)
Set "name": "Fotto Fotógrafos" (or any name with an accented letter) and an iOS bundleIdentifier in app.json
eas build -p ios --profile production
The build fails in "Configure Xcode project" with Could not find target 'FottoFotgrafos'
Workaround: use an ASCII name (for example Fotto Fotografos), so both algorithms agree, and restore the accented display name with a config plugin that sets CFBundleDisplayName (iOS) and app_name in strings.xml (Android).
Suggested fix: bump the bundled @expo/config-plugins to a version that includes expo/expo#49143. Alternatively, resolve the target name from the generated project.pbxproj / the project's own @expo/config-plugins instead of recomputing it from exp.name.
Could not find target 'Assigam' in project.pbxproj
The SDK 58 prebuild created the target Assigame.
Build: 594e4024-6bf0-4c6d-b017-7f6558292d69 (managed, production profile, run from GitHub Actions)
eas-cli 25.3.0, which bundles @expo/config-plugins 55.0.7
expo 58.0.14, project @expo/config-plugins 58.0.9
The workaround in the issue works for us: name: 'Assigame', with CFBundleDisplayName and Android app_name set to Assigamé. Note that it changes the fingerprint, so builds made before the change get no later OTA updates on the new runtime.
Activity
mrkpatchaa commentedon Oct 23, 2026
Same failure here, with the app name
Assigamé:The SDK 58 prebuild created the target
Assigame.594e4024-6bf0-4c6d-b017-7f6558292d69(managed, production profile, run from GitHub Actions)The workaround in the issue works for us:
name: 'Assigame', withCFBundleDisplayNameand Androidapp_nameset toAssigamé. Note that it changes the fingerprint, so builds made before the change get no later OTA updates on the new runtime.