🔥 [iOS][Crashlytics] dSYM input uses TARGET_NAME when product name differs; pod install restores incorrect path
Los mantenedores suelen responder en 1 día
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Issue
The generated iOS Crashlytics build phase uses TARGET_NAME for the dSYM DWARF filename. When the target name differs from the product/executable name, the input points to a nonexistent file. Manually correcting it in Xcode is temporary: pod install regenerates the phase and restores TARGET_NAME. Regeneration is expected; the incorrect generated filename is the bug.
Reproduced with RNFirebase 26.4.0. The same input is present on main:
https://github.com/invertase/react-native-firebase/blob/main/packages/crashlytics/react-native.config.js
Steps to reproduce
- Use a CocoaPods-based React Native iOS app with RNFirebase app and Crashlytics 26.4.0.
- Set target name to
ExampleApp, PRODUCT_NAME toExample Development, and leave EXECUTABLE_NAME at its default$(PRODUCT_NAME). - Run
pod install. - Inspect Input Files in
[RNFB] Crashlytics Configuration:
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}
The dSYM contains Contents/Resources/DWARF/Example Development, but this input resolves to Contents/Resources/DWARF/ExampleApp.
- Change TARGET_NAME to PRODUCT_NAME in that input in Xcode.
- Run
pod installagain: TARGET_NAME is restored.
Verified in an existing application; names above are sanitized examples. No standalone reproduction repository is attached.
Expected behavior / proposed fix
Generate a path matching the DWARF executable filename. Firebase documents PRODUCT_NAME:
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}
https://firebase.google.com/docs/crashlytics/ios/get-deobfuscated-reports
EXECUTABLE_NAME could also be considered for custom executable names.
Workaround and scope
An application-level react-native.config.js override of this dependency’s iOS scriptPhases, preserving the phase settings and replacing TARGET_NAME with PRODUCT_NAME, survives pod install. Verified without a duplicate phase.
This report establishes an incorrect declared input, not that every affected archive fails to upload symbols; impact can depend on Xcode dependency analysis and sandbox settings.
Historical context: https://github.com/invertase/react-native-firebase/pull/4520
Project Files
Relevant sanitized configuration only.
Javascript
package.json:
{
"dependencies": {
"react": "19.2.3",
"react-native": "0.87.1",
"@react-native-firebase/app": "26.4.0",
"@react-native-firebase/crashlytics": "26.4.0"
}
}
firebase.json for react-native-firebase v6:
Not relevant to generation of build phase inputs.
iOS
ios/Podfile:
- I am not using Pods
- I am using Pods
Static frameworks; RNFirebase SPM disabled ($RNFirebaseDisableSPM = true). Private application-specific Podfile contents omitted.
AppDelegate.m:
Not relevant to generated build phase inputs.
Android
Not applicable: iOS build phase generation.
Have you converted to AndroidX?
Not applicable.
android/build.gradle:
Not applicable.
android/app/build.gradle:
Not applicable.
android/settings.gradle:
Not applicable.
MainApplication.java:
Not applicable.
AndroidManifest.xml:
Not applicable.
Environment
Relevant versions (not a full react-native info dump):
-
React Native: 0.87.1
-
React: 19.2.3
-
RNFirebase app / Crashlytics: 26.4.0
-
FirebaseCrashlytics iOS SDK: 12.18.0
-
CocoaPods: 1.16.2
-
Xcode: 26.4.1 (17E202)
-
Node.js: 22.22.3
-
Yarn: 3.6.4
-
TypeScript: 6.0.3
-
Platform experiencing the issue: iOS
-
Firebase module affected: Crashlytics
-
Using TypeScript? Yes.
- Lenguaje dominante
- TypeScript
- Estrellas
- 12.3k
- Forks
- 2.3k
- Merge medio
- 1 d 19 h
- PR fusionados (30 d)
- 21
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de invertase/react-native-firebase
-
[📚] migrating-to-v27: Android fails on Expo SDK 58 (Kotlin 2.2) — document the BoM 34.19.0 overrideAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
invertase/react-native-firebase#9418 ·
Los mantenedores suelen responder en 1 día
-
Needs Attention type: bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
invertase/react-native-firebase#9414 ·
Los mantenedores suelen responder en 1 día
-
platform: android type: enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
invertase/react-native-firebase#9399 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
invertase/react-native-firebase#9419 ·
Los mantenedores suelen responder en 1 día
-
[🐛] Firestore pipelines: Bytes and VectorValue constants are sent as their private fieldsPosiblemente ocupada @Mastersam07 la tomó hace 1 día. Abiertoimpact: web-implementation platform: all plugin: firestore type: bug
Dificultad 4/5 3-5 días Aptitud para principiantes 52/100
invertase/react-native-firebase#9413 · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de invertase/react-native-firebase
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Slaymish/HealthAgent#7 ·
-
area: engine topic: math type: bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 80/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Get-Concord-AI/concord-mcp#310 ·
Los mantenedores suelen responder en 1 día
-
Correct install_claude: 'marketplace add' over a different source is refused, not replaced in placeAbiertotype:bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 80/100
nightgauge/nightgauge#2804 ·
Los mantenedores suelen responder en 1 día