Saltar al contenido principal

React Native 0.81 - Soporte para Android 16, compilaciones más rápidas en iOS y más

· 10 min de lectura
Moti Zilberman
Moti Zilberman
Software Engineer @ Meta
Vitali Zaidman
Vitali Zaidman
Software Engineer @ Meta
Gabriel Donadel Dall'Agnol
Gabriel Donadel Dall'Agnol
Software Engineer @ Expo
Christian Falch
Christian Falch
Software Engineer @ Expo
Traducción Beta No Oficial

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

¡Hoy nos complace anunciar el lanzamiento de React Native 0.81!

Esta versión incluye soporte para Android 16 (nivel de API 36) junto con diversas mejoras de estabilidad y correcciones de errores, además de soporte experimental para compilaciones iOS más rápidas mediante precompilación.

Lo más destacado

Lo más destacado

Soporte para Android 16

Las aplicaciones Android creadas con React Native 0.81 ahora tendrán como objetivo predeterminado Android 16 (nivel de API 36).

Como anunció previamente Google, Android 16 requiere que las aplicaciones se muestren de borde a borde sin posibilidad de excluirse.

Para admitir esto, estamos desaprobando el componente <SafeAreaView> como se anunció anteriormente en favor de alternativas. Consulta más abajo para ver opciones que brindan mejor soporte de borde a borde.

También estamos agregando una nueva propiedad de gradle edgeToEdgeEnabled para que puedas elegir si deseas habilitar borde a borde en todas las versiones de Android compatibles anteriores a la 16.

El gesto de retroceso predictivo ahora está habilitado por defecto para aplicaciones dirigidas a Android 16. La API BackHandler debería seguir funcionando como antes en la mayoría de los casos. Sin embargo, si tu aplicación depende de código nativo personalizado para el manejo del retroceso (como anular el método onBackPressed()), es posible que necesites migrar manualmente tu código o excluirte temporalmente. Por favor, prueba exhaustivamente la navegación de retroceso de tu aplicación después de actualizar.

Google ahora espera que las aplicaciones admitan diseños adaptativos en dispositivos de pantalla grande, independientemente de la orientación o restricciones de tamaño. Si bien puedes excluirte por ahora, se recomienda probar y actualizar tu aplicación para una interfaz de usuario responsive en pantallas grandes antes de Android 17.

A partir del 1 de noviembre de 2025, todas las publicaciones de aplicaciones en Google Play deben cumplir con el requisito de tamaño de página de 16 KB para binarios nativos. Esto se aplica a nuevas aplicaciones y actualizaciones dirigidas a dispositivos Android 15+. React Native ya cumple con el tamaño de página de 16KB. Asegúrate de que todo tu código nativo y bibliotecas de terceros también cumplan.

Para más detalles sobre los cambios de Android 16 y pasos de migración, consulta esta publicación en discussions-and-proposals.

Desaprobación de SafeAreaView

The built-in <SafeAreaView> component was originally designed to provide limited, iOS-only support for keeping content in the “safe areas” of the screen (away from camera notches, rounded corners, etc). It is not compatible with edge-to-edge rendering on Android, and does not permit customization beyond padding. As a result, many apps have opted for more portable and flexible solutions, such as react-native-safe-area-context.

En React Native 0.81, el componente heredado <SafeAreaView> está desaprobado y verás advertencias en React Native DevTools si tu aplicación lo utiliza.

Se eliminará en una futura versión de React Native. Recomendamos migrar a react-native-safe-area-context o una librería similar para garantizar que tu aplicación luzca óptima en todas las plataformas.

Soporte de JavaScriptCore mantenido por la comunidad

Como anunciamos el año pasado, el soporte para el motor JavaScriptCore (JSC) se ha trasladado a un paquete mantenido por la comunidad que se publica de forma independiente a React Native. En React Native 0.81, eliminamos la versión integrada de JavaScriptCore. Todas las aplicaciones que requieran JavaScriptCore deberán usar ahora el paquete comunitario para actualizar a la versión 0.81. Consulta las instrucciones de instalación para más detalles.

Este cambio no afecta a las aplicaciones que usan Hermes.

Compilaciones iOS precompiladas experimentales

React Native 0.81 introduce compilaciones iOS precompiladas, reduciendo los tiempos de compilación hasta 10x en proyectos donde React Native es la dependencia principal. Esto es resultado de una colaboración entre Expo y Meta, y amplía el trabajo previo incluido en React Native 0.80.

Esta funcionalidad sigue siendo experimental, pero esperamos habilitarla para todas las aplicaciones en futuras versiones. Si deseas probar las compilaciones precompiladas en tu aplicación, puedes activarlas especificando las siguientes variables de entorno al ejecutar pod install:

RCT_USE_RN_DEP=1 RCT_USE_PREBUILT_RNCORE=1 bundle exec pod install

Por favor, envía tus comentarios en esta discusión de GitHub.

Conocemos dos limitaciones actuales y estamos trabajando para resolverlas:

  • En compilaciones precompiladas, no puedes depurar ni entrar paso a paso en el código interno de React Native. Sí puedes depurar tu propio código nativo mientras usas la versión precompilada.

  • Las precompilaciones no son compatibles con Xcode 26 Beta, ya que el IDE compila todos los objetivos con módulos explícitos de Swift activados. Para usar precompilaciones con Xcode 26, establece la bandera SWIFT_ENABLE_EXPLICIT_MODULES en NO en tu proyecto de Xcode. Solucionaremos esto en un próximo parche.

Puedes leer más sobre esta funcionalidad en la publicación completa de Expo: React Native precompilado para iOS: Compilaciones más rápidas llegarán en 0.81.

Cambios importantes

Versión mínima de Node.js actualizada a 20

React Native ahora requiere Node.js versión 20.19.4 (la última versión LTS de mantenimiento al momento de escribir) o superior. Es posible que necesites actualizar Node.js en tu entorno de desarrollo o CI al actualizar a React Native 0.81.

Versión mínima de Xcode actualizada a 16.1

React Native ahora requiere Xcode 16.1 o superior para compilar proyectos iOS. Es posible que necesites actualizar Xcode en tu entorno de desarrollo o CI al actualizar a React Native 0.81.

Metro: Mejor soporte para configuración avanzada en proyectos Community CLI

Metro now respects the resolveRequest and getModulesRunBeforeMainModule options if specified in the metro.config.js file of a React Native Community CLI project. Previously, setting them would have no effect. If you have custom values for these options in your metro.config.js file, you may need to delete them in order to restore the previous behavior.

Mejora en reporte de errores JavaScript no capturados

React Native DevTools ahora muestra el mensaje original y el seguimiento de la pila de errores de JavaScript no capturados, así como la causa del error si existe, y un Owner Stack para errores lanzados por componentes. Esto facilita la depuración y corrección de errores.

Ejemplo de error que incluye una causa y Owner Stack

Si estás registrando errores de JavaScript en tu backend o en un servicio de reporte de errores de terceros, esto podría afectar los registros que veas después de actualizar a React Native 0.81 (por ejemplo: podrías ver más errores lanzados que antes se reportaban mediante console.error), y tal vez necesites actualizar la lógica de tu backend en consecuencia.

RN_SERIALIZABLE_STATE y banderas de C++

En esta versión de React Native, presentamos una nueva macro llamada RN_SERIALIZABLE_STATE para soportar estados serializables en Componentes de la Nueva Arquitectura.

Si eres autor de una biblioteca y tienes un archivo CMakeLists.txt personalizado, deberás especificar esta macro en tu archivo CMakeLists.txt o tu código C++ podría fallar al compilar.

Para dar soporte a esto, introducimos una nueva función de CMake llamada target_compile_reactnative_options que se encargará de configurar esta macro y todas las banderas de C++ necesarias. Puedes invocarla así en tu archivo CMakeLists:

target_compile_reactnative_options(myLibraryName PRIVATE)

Puedes ver un ejemplo de cómo react-native-screens configuró esta macro.

Este cambio afectará solo a bibliotecas más avanzadas y complejas. Si tu biblioteca usa codegen y no tienes un archivo CMake personalizado, no te verás afectado por este cambio.

Otros cambios importantes

Esta lista contiene otros cambios importantes que podrían tener un impacto menor en tu código de producto y vale la pena mencionar:

Android

  • Hicimos internas varias clases. Estas no forman parte de la API pública y no deberían accederse. Ya notificamos o enviamos parches a las bibliotecas afectadas:

    • com.facebook.react.fabric.mounting.MountingManager
    • com.facebook.react.views.text.TextLayoutManager
  • Movimos la prop nativa textAlignVertical de TextAttribute.h a ParagraphAttribute.h

    • Esta prop textAlignVertical solo afecta la vista de texto superior (vista de párrafo). Sin embargo, existía en los atributos de texto. Para reflejar mejor esta limitación de plataforma, se movió a props de párrafo.
    • Este cambio no afecta la API JS del componente <Text>.
    • Te afectará solo si implementas un componente Fabric que interactúe con la API de Texto en C++.
    • Si te afecta, puedes reemplazar TextAttributes.h con ParagraphAttribute.h en tu código.

Lee la lista completa de cambios importantes en el CHANGELOG de 0.81.

Agradecimientos

React Native 0.81 contiene más de 1110 commits de 110 colaboradores. ¡Gracias por todo su arduo trabajo!

Queremos agradecer especialmente a estos miembros de la comunidad que realizaron contribuciones significativas en esta versión:

Actualización a la versión 0.81

Usa el React Native Upgrade Helper para ver cambios de código entre versiones de React Native en proyectos existentes, además de la documentación de actualización.

Para crear un nuevo proyecto:

npx @react-native-community/cli@latest init MyProject --version latest

Si usas Expo, React Native 0.81 será compatible con la próxima Expo SDK 54 como la versión predeterminada de React Native.

información

La versión 0.81 es ahora la última versión estable de React Native y la 0.78.x pasa a no ser compatible. Para más información, consulta la política de soporte de React Native.