Saltar al contenido principal

React Native 0.73: Mejoras en depuración, soporte estable para enlaces simbólicos y más

· 14 min de lectura
Marek Fořt
Marek Fořt
Software Engineer @ Shopify
Thibault Malbranche
Thibault Malbranche
Lead Mobile Engineer @ Brigad
Hur Ali
Hur Ali
Software Engineer @ Callstack
Luna Wei
Luna Wei
Software Engineer @ Meta
Alex Hunt
Alex Hunt
Software Engineer @ Meta
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 lanzamos React Native 0.73! Esta versión incluye mejoras en depuración con Hermes, soporte estable para enlaces simbólicos, compatibilidad con Android 14 y nuevas características experimentales. También estamos dejando obsoletas funciones antiguas de depuración y lanzando el siguiente pilar de la Nueva Arquitectura: ¡el Modo sin Bridge!

Lo más destacado

Cambios importantes

Lo más destacado

Mejoras en depuración

Los equipos de React Native y Hermes están comprometidos con mejorar la experiencia de depuración en React Native. En la versión 0.73, nos complace compartir los primeros avances de esta inversión continua.

Historial de logs en la consola de Hermes

console.log() sigue siendo un método muy popular para depurar rápidamente código JavaScript. En versiones anteriores, los logs de la consola en apps de React Native no se registraban hasta conectar un depurador. Esto dificultaba observar logs que ocurrían al inicio de la carga de la aplicación.

En React Native 0.73 hemos solucionado este problema. Hermes ahora captura todas las llamadas console.log() en segundo plano, enviándolas a la pestaña Consola cuando se conecta un depurador por primera vez, igualando la experiencia de depuración en navegadores web. Este nuevo comportamiento funciona con Flipper, Chrome DevTools conectado a Hermes y el nuevo depurador experimental.

Documentación de depuración actualizada

Hemos renovado la sección de Depuración en nuestra documentación, que ahora incluye información actualizada sobre cómo conectar todos los depuradores compatibles, más detalles sobre React DevTools y gráficos renovados.

Vista general de la documentación de depuración en la versión 0.73

Nuevo depurador experimental

El equipo de React Native está trabajando en una nueva experiencia de depuración de JavaScript, destinada a reemplazar Flipper, con una Vista Previa Técnica disponible a partir de React Native 0.73. El nuevo depurador se abre inmediatamente y cuenta con una interfaz de Chrome DevTools simplificada y personalizada para depurar React Native con Hermes.

nota

El nuevo depurador es experimental y tiene algunos problemas conocidos en los que estamos trabajando activamente para resolverlos en una futura versión de React Native. Si lo pruebas, por favor utiliza el mismo hilo de discusión para informar comentarios.

El frontend del nuevo depurador abierto en el panel 'Bienvenida'

Aprende más sobre cómo habilitar esta experiencia en la documentación.

Soporte estable para enlaces simbólicos en Metro

El soporte para resolver enlaces simbólicos en Metro ahora está habilitado por defecto. Esta funcionalidad permite que React Native funcione con configuraciones de monorepositorio cuando los directorios contenedores están configurados con watchFolders.

Los enlaces simbólicos están profundamente integrados en los componentes internos de Metro, lo que significa que funcionan con características como Actualización rápida (Fast Refresh) y generan un bajo impacto en el rendimiento durante el empaquetado. Son compatibles en todas las plataformas de escritorio, tanto con Watchman como sin él.

información

Soluciones alternativas para monorepositorios

Somos conscientes de que aún existen casos extremos al usar React Native en una estructura de monorepositorio. Tenemos trabajo planificado para abordar algunos de estos problemas, que no llegaron a tiempo para la versión 0.73, pero que nuestro objetivo es implementarlos lo antes posible.

Para proyectos plantilla de React Native (npx react-native init), deberás configurar cualquier watchFolders fuera del directorio raíz del proyecto para que Metro los detecte (más información). También es posible que necesites actualizar las rutas de archivo si tu dependencia react-native está instalada en una carpeta en un nivel diferente.

Para aplicaciones Expo, el soporte para espacios de trabajo de Yarn (Classic) está configurado listo para usar. Consulta también la guía Trabajar con monorepos en la documentación de Expo.

Plantilla de Kotlin en Android

Nos complace anunciar que, a partir de la versión 0.73, Kotlin es ahora el lenguaje recomendado para aplicaciones Android construidas con React Native. Esto sigue la dirección en la que el ecosistema de Android se ha estado moviendo durante varios años y te permite escribir tu aplicación usando un lenguaje moderno.

Hemos actualizado la plantilla de React Native en Android para usar Kotlin en lugar de Java. Los nuevos archivos MainActivity.kt y MainApplication.kt son un 36% más pequeños en tamaño.

The Upgrade Helper has also been updated to make it easier to migrate your .java files to .kt files. If you've previously modified the Java files in your project and you need support migrating them to Kotlin, you can use the Code > Convert Java file to Kotlin File utility of Android Studio (also accessible with the shortcut Cmd ⌘ + Shift ⇧ + Option ⌥ + K).

Soporte para Android 14

Hemos actualizado React Native para dar soporte completo a Android 14. A partir de la versión 0.73, los desarrolladores de React Native ahora pueden dirigirse a la última versión del SDK de Android, Nivel de API 34 (Upside Down Cake).

Actualización a Java 17 y Android Gradle Plugin

Para dar soporte a Android 14, hemos actualizado la versión de Android Gradle Plugin (AGP) utilizada para construir aplicaciones Android de 7.4.x a 8.1.x.

Este incremento de versión mayor de AGP viene acompañado de una serie de cambios importantes que están disponibles en las notas de lanzamiento de Google (8.0.0 y 8.1.0).

Lo más importante es que Java 17 es ahora un requisito para construir aplicaciones Android. Puedes actualizar tu versión de Java a 17 ejecutando:

brew install --cask zulu@17

y actualizando tu JAVA_HOME como se documenta en la guía de introducción.

Si eres desarrollador de bibliotecas, tus bibliotecas deberían funcionar con React Native 0.73 sin cambios. A principios de este año, publicamos una nota con una aclaración sobre lo que significa el incremento de AGP para ti como autor de bibliotecas.

Conceder acceso parcial a fotos y videos

Acceso a fotos seleccionadas permite a los usuarios de Android 14 otorgar acceso específico a elementos de su biblioteca multimedia, en lugar de acceso completo. En la versión 0.73, las apps de React Native ahora soportan esta funcionalidad mediante el permiso READ_MEDIA_VISUAL_USER_SELECTED en la API PermissionsAndroid.

Acceso a fotos seleccionadas en Android 14

Incremento del SDK mínimo

React Native 0.73 será la última versión que admita Android 5.0 (API nivel 21). La próxima versión de React Native tendrá como mínimo el SDK versión 23 (Android 6.0). Lee más sobre los próximos cambios del SDK mínimo aquí.

Actualizaciones de la Nueva Arquitectura

Continuamos implementando la Nueva Arquitectura de React Native para hacerla accesible a toda la comunidad de código abierto.

Desde React Native 0.68, tanto el Nuevo Renderizador (Fabric) como el Nuevo Sistema de Módulos Nativos (TurboModules) han estado disponibles para que los usuarios experimenten y evalúen. Agradecemos a la comunidad por los comentarios recibidos hasta ahora.

Hoy lanzamos otro componente de la Nueva Arquitectura: Modo sin puente (Bridgeless Mode). Hasta ahora, al habilitar la Nueva Arquitectura, el puente seguía disponible para compatibilidad con componentes y módulos antiguos. Sin embargo, nuestra visión es retirar completamente el puente. Desde React Native 0.73, puedes habilitar el Modo sin puente que desactiva completamente la creación del puente.

Junto con el Modo sin puente, incluimos una Capa de Interoperabilidad de Módulos Nativos que te permitirá reutilizar tus módulos antiguos en este modo. La Capa de Interoperabilidad del Renderizador introducida en React Native 0.72 también se ha adaptado para funcionar con el Modo sin puente.

Como el resto de la Nueva Arquitectura, el Modo sin puente es inicialmente experimental. Invitamos a los usuarios interesados a habilitarlo y reportar cualquier problema o incompatibilidad en el grupo de trabajo de Nueva Arquitectura.

Funciones de depuración obsoletas

Integración Flipper ↔ React Native

Estamos alejándonos gradualmente de Flipper como herramienta predeterminada para depurar apps de React Native. En 0.73, comenzamos deprecando la integración nativa de Flipper incluida en React Native (código de arranque que conecta los plugins principales de Flipper). Eliminaremos esta integración y dependencia en la próxima versión, lo que significa que componentes como el plugin de Red dejarán de funcionar.

Sin cambios: Flipper como producto independiente para depuración nativa seguirá existiendo. Incluso después de su eliminación de nuevos proyectos de React Native, los desarrolladores podrán agregar Flipper manualmente a sus apps si lo desean.

Para más información sobre por qué nos alejamos de Flipper, consulta la RFC.

Depuración remota de JavaScript

La Depuración Remota de JavaScript es un modo de depuración heredado que conecta un navegador web externo (Chrome) a tu aplicación y ejecuta tu código JavaScript dentro de una página web, es decir, en http://localhost:8081/debugger-ui. Este modelo podía causar comportamientos inconsistentes en la aplicación durante la depuración y es incompatible con módulos nativos en la Nueva Arquitectura.

En la versión 0.73, la Depuración Remota de JavaScript está obsoleta y ha sido eliminada del Menú de Desarrollo. Habilitar el depurador remoto ahora debe hacerse manualmente mediante la API NativeDevSettings. Esto se explica en la documentación de Otros Métodos de Depuración.

información

La Depuración Remota de JavaScript era anteriormente la experiencia de depuración predeterminada para aplicaciones que usaban JavaScriptCore (JSC). Recomendamos usar en su lugar las Herramientas de Desarrollo de Safari (depuración directa con JSC) para aplicaciones iOS.

Recomendamos usar Hermes para una experiencia de depuración consistente en todas las plataformas.

Cambios importantes

Renombramiento de paquetes de Babel

Hemos reubicado dos paquetes relacionados con Babel fuera de Metro hacia el repositorio de React Native y su esquema de versiones, lo que nos permite simplificar el mantenimiento y las actualizaciones. Las nuevas versiones de estos paquetes admiten funciones de la Nueva Arquitectura en la 0.73, lo que significa que estas dependencias deben actualizarse.

Sigue el Upgrade Helper al actualizar para asegurarte de haber actualizado estas dependencias. Algunos paquetes han sido renombrados:

Old Package NameNew Package Name
metro-react-native-babel-preset@react-native/babel-preset
metro-react-native-babel-transformer@react-native/metro-babel-transformer
información

@react-native/babel-preset ahora incluye @react-native/babel-plugin-codegen, por lo que ya no es necesario especificarlo por separado en tu archivo de configuración de Babel.

Otros cambios importantes

Estos son algunos de los cambios importantes en la versión 0.73. Consulta el registro de cambios completo para ver la lista completa.

  • Eleva el requisito mínimo de Node.js a la versión 18.x (#37709) (ver también Fin de soporte de Node.js 16).

  • La plantilla ahora usa TypeScript 5.0 (#36862).

    • Los tipos de React Native siguen funcionando en TypeScript 4.8.
  • Android: Java 17 es ahora un requisito para construir aplicaciones Android (ver arriba).

  • Android: Actualización mayor de Fresco a la versión 3.0 (#38275).

  • iOS: Eleva la versión mínima de iOS a 13.4 (#36795).

  • iOS: Metro ya no se iniciará automáticamente al ejecutar compilaciones mediante Xcode (#38242).

Para autores de bibliotecas:

  • Android: Actualización a AGP 8.1.1 (discusión)

Cambios en la CLI de React Native

Cambios importantes destacados

  • Cambio de prefijo de tarea predeterminado en el comando build-android. A partir de ahora, al ejecutar build-android, se ejecutará la tarea bundle en lugar de assemble (#1913).

  • Eliminar flujo alternativo para configuraciones predeterminadas de Metro (#1972).

  • Eliminar la opción --configuration de run-ios (reemplazada por --mode) (#2028).

  • Eliminar la opción --variant del comando build-android (reemplazada por --mode) (#2026).

Ver changelog completo para v12.0.0.

@types/react-native en desuso

Como se mencionó en Soporte de primera clase para TypeScript, hemos incluido tipos de TypeScript con react-native desde la versión 0.71 y ahora marcamos @types/react-native como desuso en 0.73.

No lanzaremos futuros parches para versiones existentes. La recomendación es migrar desde @types/react-native. Consulta las instrucciones sobre cómo migrar.

Agradecimientos

React Native 0.73 contiene más de 2259 commits de 68 colaboradores. ¡Gracias por todo su arduo trabajo!

Actualización a 0.73

Utiliza 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. También puedes crear un nuevo proyecto con npx react-native@latest init MyProject.

Si usas Expo, React Native 0.73 será compatible en la versión Expo SDK 50.

información

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