[📚] migrating-to-v27: Android fails on Expo SDK 58 (Kotlin 2.2) — document the BoM 34.19.0 override
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 85/100
- Tipo de issue
- Documentación
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- android, kotlin, react-native
- Área
- documentation
Línea de trabajo
Empieza con la sección de Android/Kotlin de docs/migrating-to-v27.mdx y la guía existente «Overriding Native SDK Versions». Añade una nota sobre Expo que explique la sobrescritura de BoM a 34.19.0 y el enfoque de config-plugin de Expo CNG que se muestra en el issue; considera añadir la nota correspondiente sobre la compatibilidad con Android a platforms.mdx. El trabajo estará listo cuando ambos documentos expliquen claramente la solución temporal y cuándo quitar la fijación de versión.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Documentation Feedback
The v27 migration guide (docs/migrating-to-v27.mdx) says the only supported Android path is Kotlin ≥ 2.4.0, because Firebase Android BoM 35 / firebase-auth 25 ships Kotlin 2.4 metadata. It does not mention Expo, and Expo's current release can't meet that requirement without overriding Expo's own toolchain.
What happens on Expo
Expo SDK 58 ([email protected], [email protected]) builds with Kotlin 2.2.10 and a matching KSP pin. A fresh @react-native-firebase/{app,auth}@27.1.0 install fails at :react-native-firebase_auth:compileReleaseKotlin on EAS:
e: .../firebase-auth-25.0.0-api.jar!/META-INF/java.com.google.android.gmscore.integ.client.firebase-auth-api_firebase-auth-api.kotlin_module
Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 2.4.0, expected version is 2.2.0.
Nothing in the guide, the Expo install docs or platforms.mdx tells an Expo user what to do here. The only workaround offered is the unsupported -Xskip-metadata-version-check flag, which Expo CNG users can't easily apply anyway.
A smaller, already-documented workaround
v27.0.0 was cut on BoM 34.19.0 (ca054bc), and the later bump to 35 (0ca03d1) only changed gradle version strings, no Kotlin sources. So 27.x compiles fine against 34.19.0 using the override the site already documents under "Overriding Native SDK Versions":
// android/build.gradle (root)
project.ext {
set('react-native', [versions: [firebase: [bom: '34.19.0']]])
}
For Expo CNG (no checked-in android/), the same thing as a config plugin:
// plugins/withFirebaseBom.js
const { withProjectBuildGradle } = require('expo/config-plugins')
module.exports = function withFirebaseBom(config, { bom }) {
return withProjectBuildGradle(config, (config) => {
config.modResults.contents += `
project.ext {
set('react-native', [versions: [firebase: [bom: '${bom}']]])
}
`
return config
})
}
// app.config.js
plugins: [
['./plugins/withFirebaseBom.js', { bom: '34.19.0' }],
'@react-native-firebase/app',
'@react-native-firebase/auth',
]
Verified: the EAS build then passes and the log prints firebase.bom using custom value: 34.19.0.
Suggested change
In migrating-to-v27.mdx, under the Android/Kotlin section, add an "Expo" note along the lines of:
Expo SDK 58 builds with Kotlin 2.2 and does not yet support Kotlin 2.4. Until it does, pin the Firebase Android BoM to
34.19.0(the last BoM built with Kotlin ≤ 2.2 that v27 was released on) using the SDK version override. For Expo CNG, apply it with awithProjectBuildGradleconfig plugin (example above). Remove the pin once your Expo SDK uses Kotlin ≥ 2.4.
A matching line in platforms.mdx (Android support matrix) would also help.
Environment
@react-native-firebase/app,auth,app-check27.1.0expo58.0.21,react-native0.88.1, EAS Build- Kotlin 2.2.10 (Expo default), KSP 2.2.10-2.0.2
- 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
-
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
-
[🐛] Firestore pipelines: Timestamp (and Date) constants are sent as plain mapsPosiblemente 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 48/100
invertase/react-native-firebase#9412 · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de invertase/react-native-firebase
Issues similares
-
guards: accept readonly arrays (and other array-likes) in isEmpty / hasElements / safeLengthAbiertoenhancement tech debt
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
danielmiessler/LifeOS#2533 ·
Los mantenedores suelen responder en 9 días
-
auto:producer auto:uiux
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
fritzprix/libr-agent#2447 ·
Los mantenedores suelen responder en 1 día
-
bug low priority
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100