React Native 0.85: una actualización pulida sobre la nueva arquitectura

Cuando se lanzó React Native 0.85, el equipo oficial no utilizó eslóganes «revolucionarios», porque esencialmente esta actualización, bajo la premisa de que la nueva arquitectura ya está establecida, se centra en pulir sistemáticamente infraestructuras como animaciones, depuración y pruebas.
Si ahora mismo te encuentras en la fase de selección técnica, o estás considerando actualizar desde una versión anterior, la señal de esta versión es:la nueva arquitectura puede considerarse como la premisa predeterminada, y el enfoque del trabajo futuro estará en la calidad de la experiencia y el ecosistema.
A continuación, se desarrolla desde tres dimensiones: los cambios principales que trae 0.85, los puntos clave de la arquitectura actual de React Native, y su comparación con Flutter, Ionic y las soluciones nativas en términos de rendimiento y ecosistema.
¿Qué trae 0.85?
Backend de animación unificado: poniendo la ruta crítica bajo «control oficial»
Lo más destacable de 0.85 es la introducción de un backend de animación compartido (Shared Animation Backend). Durante mucho tiempo, el Animated nativo de React Native y el Reanimated de la comunidad eran prácticamente dos mundos: uno orientado a escenarios simples, y el otro que, por rendimiento y expresividad, se encargaba de mucha lógica por su cuenta.
En 0.85, la lógica subyacente de la ejecución de animaciones se ha hundido en el RN Core. El equipo oficial y Software Mansion han convergido la programación y la ruta de ejecución de las animaciones en un backend común y genérico. En términos de arquitectura, esto tiene varios significados prácticos:
La programación de animaciones ya no depende completamente de «magia de terceros»; la lógica central entra en el repositorio principal, pudiendo realizar pruebas de consistencia y optimizaciones de rendimiento siguiendo las versiones de RN.
La cobertura del controlador nativo se ha ampliado; las propiedades relacionadas con el diseño pueden ser impulsadas por un controlador nativo, una parte que antes solía ser «se puede escribir pero no se puede depender demasiado».
Para los equipos de negocio, la presión de seleccionar la capa de animación disminuirá un poco: se puede confiar más en la combinación de la biblioteca oficial y las principales bibliotecas de animación sin preocuparse de que alguna no siga el ritmo de la nueva arquitectura en el futuro.
Si la cantidad de animaciones en tu aplicación no es grande, esto puede no cambiar la experiencia de inmediato; pero para productos con interacciones complejas y muchas animaciones, es un beneficio para la «salud a largo plazo».
Organización de la cadena de depuración: múltiples clientes, TLS, separación de preajustes de pruebas
Otros cambios no son tan llamativos en la superficie, pero afectan la experiencia de desarrollo diaria:
Se admite la coexistencia de múltiples clientes de depuración basados en el Protocolo de Chrome DevTools. En pocas palabras, se pueden conectar simultáneamente React Native DevTools, complementos del IDE e incluso herramientas de depuración automatizadas/IA, sin tener que competir por la misma «conexión de depuración única».
El servidor de desarrollo Metro admite configuración TLS. Para muchas empresas que requieren HTTPS/WSS en todo el proceso, antes la depuración local implicaba cambiar la configuración o crear un proxy autofirmado; ahora se puede resolver directamente a nivel de framework.
El preajuste de Jest se ha separado en un paquete independiente. Esto puede parecer solo un cambio en la estructura de directorios, pero es muy valioso para repositorios con múltiples paquetes y proyectos multiplataforma: la configuración de pruebas ya no está fuertemente acoplada al paquete principal de RN, el ritmo de actualización puede ser más flexible y es más fácil unificarlo en el andamiaje interno de la empresa.
La característica común de estos cambios es que no desbloquean de repente ninguna capacidad llamativa, pero pueden reducir el tiempo que pierdes en la cadena de herramientas.
Conceptos clave de la arquitectura actual de React Native
Si ocultamos el número de versión, al hablar de React Native hoy en día es difícil evitar la «nueva arquitectura». Repasemos brevemente sus puntos clave, lo que facilita la comparación a nivel de framework.
Del Bridge al JSI: un cambio de generación en la comunicación
La vieja generación de React Native dependía de un «puente»: la comunicación entre JS y nativo se realizaba a través de una cola de mensajes serializados, inherentemente asíncrona, y además había que empaquetar y desempaquetar los datos transmitidos entre idiomas a nivel JSON.
La nueva arquitectura reemplaza directamente esta capa con JSI: JS puede obtener referencias a objetos C++, y ambas partes pueden interactuar de una manera más cercana a una «llamada directa».
Esto trae como consecuencia directa:
Ya no es necesario diseñar todas las llamadas como tareas asíncronas; se puede elegir entre síncrono/asíncrono según la escena.
Se reduce considerablemente la sobrecarga de serialización/deserialización, con diferencias notables en escenarios de CPU intensivo o llamadas de alta frecuencia.
Se puede distribuir el trabajo de manera más natural entre múltiples hilos, en lugar de comprimir todas las transacciones en una «cola de bridge» con poca capacidad descriptiva.
Para la selección técnica, esto significa: la antigua impresión de que «el bridge es un cuello de botella de rendimiento» debe actualizarse a «depende de cómo uses JSI y TurboModules».
TurboModules y Fabric: Reestructuración de módulos y renderizado
Al otro lado de la nueva arquitectura están TurboModules (el nuevo sistema de módulos nativos) y Fabric (el nuevo renderizador).
TurboModules enfatiza la carga perezosa y las llamadas entre idiomas con seguridad de tipos. Junto con Codegen, genera código de enlace C++ a partir de tipos TypeScript/Flow, reduciendo el costo de mantenimiento de la capa adhesiva.
Fabric reemplaza la antigua capa de gestión de UI, haciendo que el flujo de renderizado sea más consistente (incluyendo el diseño de Yoga, diff, commit), y se adapta mejor a múltiples plataformas.
El impacto directo en los equipos de negocio es:
El costo y la carga mental de escribir módulos nativos propios se reducen, especialmente en proyectos grandes con múltiples plataformas y versiones coexistiendo.
En escenarios con listas y muchas actualizaciones de vistas, Fabric puede ofrecer un rendimiento predecible y estable, reduciendo algunos bloqueos «ocasionales» y errores de renderizado extraños.
React Native 0.85 no realiza cambios radicales en la arquitectura, sino que asume que ya estás en esta nueva arquitectura y comienza la transición hacia un «período de mantenimiento normal»: esta es su señal clave en el nivel de selección técnica:la estructura del framework ya está básicamente definida, y el enfoque futuro se centrará en la experiencia y la calidad del ecosistema, en lugar de una renovación completa.
Rendimiento: ¿Dónde se sitúa React Native 0.85?
La selección técnica no puede evitar el rendimiento, así que a continuación compararemos React Native con otras rutas.
Diferencias con Flutter: Derechos de renderizado y controlabilidad
Flutter tiene su propio motor de renderizado (Skia, etc.), controlando todo desde el diseño hasta el dibujo, con características de rendimiento más claras: una vez que se ajustan el inicio, el desplazamiento y las animaciones, los resultados son estables, como un «todo en uno».
React Native todavía utiliza componentes nativos de la plataforma para renderizar la UI, con una capa adicional de llamada JS → Native. Aunque esta capa se ha vuelto más delgada con la nueva arquitectura, en principio sigue existiendo.
Por lo tanto, en pruebas de rendimiento extremo, Flutter suele dar mejores tiempos de primera pantalla y un desplazamiento de listas largas más suave. En escenarios de UI compleja y animaciones, si se requieren requisitos extremos de rendimiento máximo, Flutter ofrece más garantías.
Sin embargo, para la mayoría de las aplicaciones comerciales, el cuello de botella suele estar en la organización de datos, la estrategia de renderizado y el diseño de animaciones, no en el motor en sí. La nueva arquitectura de React Native + el nuevo backend de animación maximizan la parte ejecutable de forma nativa en el hilo nativo, lo que es suficiente para mantener la experiencia en escenarios principales como comercio electrónico, contenido y comunidades. Si tu equipo está más familiarizado con React, la brecha de rendimiento por sí sola no será una razón de veto.
Con la ruta Ionic / WebView: Compensación entre experiencia y reutilización
Frameworks como Ionic, en esencia, ejecutan la pila tecnológica web en un WebView. El escenario más adecuado es: tener muchos activos web existentes y necesitar rápidamente un «caparazón» de aplicación funcional para el negocio.
React Native se posiciona más como «impulsar controles nativos con JS/React», ofreciendo una experiencia interactiva y consistencia del sistema mucho mejores, como retroalimentación de desplazamiento, gestos y comportamiento del teclado.
Si el proyecto solo necesita una simple visualización de información y envío de formularios, con bajos requisitos de interacción dinámica, las ventajas de coste de soluciones como Ionic son evidentes. Pero una vez que se entra en negocios de «alta interacción + énfasis en la experiencia» (como comunidades de contenido, comercio electrónico, aplicaciones de herramientas), la ruta de «framework + nativo» como React Native/Flutter es más adecuada, y los límites de la ruta WebView se exponen rápidamente.
Con el desarrollo puramente nativo: Límite superior vs. eficiencia de producción
El nativo puro (Swift/Kotlin) no necesita explicación: tiene el límite superior más alto en rendimiento e integración del sistema, y sigue siendo la única opción fiable para escenarios extremadamente sensibles a la latencia (juegos, procesamiento de audio/vídeo, automoción, interfaces hombre-máquina, etc.). La nueva arquitectura de React Native se centra más en reducir la brecha con el nativo en «escenarios comerciales comunes», con el objetivo de que la mayoría de las páginas e interacciones alcancen un nivel en el que «el usuario no nota la diferencia».
Desde la perspectiva del equipo y los costes:
Un solo código React Native puede cubrir iOS/Android, con una consistencia mucho mejor entre plataformas.
Las empresas con equipos existentes de React/Web tienen bajos costes de formación y no necesitan mantener dos equipos nativos adicionales.
Las partes que realmente requieren rendimiento extremo se pueden hundir a través de TurboModules/Fabric, escribiendo módulos nativos y luego conectándolos de nuevo a RN.
Este tipo de modo híbrido es la realidad actual de la pila tecnológica móvil en muchas grandes y medianas empresas: los módulos de rendimiento crítico se escriben de forma nativa, y el negocio periférico se hace con React Native para aumentar la eficiencia de iteración y unificar el modelo de desarrollo de negocio.
Ecosistema: No es solo cuestión de «cuántas bibliotecas hay»
Al hacer la selección técnica, la calidad del ecosistema del framework a menudo afecta más a la «felicidad a largo plazo» que el rendimiento puntual.
React Native: Respaldo del ecosistema React + Período de migración de la nueva arquitectura
React Native está respaldado por el ecosistema React, lo que significa:
Se pueden reutilizar directamente muchas prácticas de gestión de estado, flujo de datos e ingeniería que son comunes en varios entornos.
Hay soluciones principales maduras para navegación, gestos, animaciones, medios, mapas, etc., y la mayoría ya se están adaptando a la nueva arquitectura.
Los puntos a considerar en la realidad: la migración de la nueva arquitectura no se completa de la noche a la mañana; todavía se encontrarán casos de bibliotecas antiguas que no se actualizan o están solo parcialmente adaptadas. Para proyectos nuevos, se recomienda empezar seleccionando bibliotecas que ya hayan confirmado su soporte para TurboModules y Fabric; para proyectos antiguos, evaluar el estado de mantenimiento de las dependencias clave antes de decidir el ritmo de actualización.
Flutter: Alto grado de integración, ruta clara
El ecosistema de Flutter está más concentrado en su propio «mundo unificado»: el sistema de plugins y los componentes oficiales son bastante completos, la coherencia de estilo y comportamiento es alta, y el soporte para escritorio/Web también avanza de manera más agresiva.
Sus problemas son más el tamaño y la carga del motor al «llegar a otras plataformas», y si el equipo está dispuesto a aceptar Dart y el paradigma de desarrollo único de Flutter.
Si esperas trasladar una sola UI al escritorio/Web en el futuro, y puedes aceptar el coste del tamaño del paquete y el cambio de pila tecnológica, Flutter es un camino más estable.
WebView / Ionic: Reutilización extrema vs. límites bajos
Soluciones como Ionic son más adecuadas para equipos que ya tienen un sistema frontend web maduro y no tienen grandes requisitos de experiencia móvil: entrega rápida, pila unificada y bajo coste de mantenimiento son su campo de batalla principal.
El problema también es intuitivo: el renderizado y la interacción están completamente limitados por el navegador. Cuando se encuentran cuellos de botella de rendimiento, es difícil hacer muchas optimizaciones a nivel de framework, solo se pueden hacer concesiones en el diseño del producto y la interacción.
Nativo: Opción de respaldo para escenarios de cumplimiento y alto riesgo
En industrias que requieren un fuerte cumplimiento normativo y alta seguridad (finanzas, sanidad, automoción, proyectos gubernamentales), el desarrollo nativo suele ser el camino más fácil: la documentación oficial de la plataforma es completa, la cadena de herramientas está madura, y los reguladores y auditores están más familiarizados con él.
En estos escenarios, incluso si a nivel de negocio se utiliza una solución multiplataforma como React Native, a menudo se requiere que los procesos críticos estén en la capa nativa, o se añaden revisiones de seguridad adicionales.
Final: Recomendaciones prácticas para arquitectura/selección
En este punto de la versión 0.85, si estás haciendo una selección técnica móvil, puedes filtrar según las siguientes preguntas:
Situación del equipo: ¿Tienen amplia experiencia en React y muchos activos web, o pueden empezar desde cero aceptando Dart?
Características del negocio: ¿Principalmente información y formularios, o hay interfaces complejas que requieren interacciones fluidas?
Requisitos de rendimiento máximo: ¿Hay escenarios que deben ser «casi como nativo» o incluso superiores?
Expectativas de unificación multiplataforma: ¿Solo iOS/Android, o se espera unificar a escritorio/Web a largo plazo?
Combinando estas dimensiones, las conclusiones aproximadas serían:
Equipo React + aplicaciones comerciales principales + principalmente iOS/Android: React Native nueva arquitectura + versiones posteriores a 0.85 es una opción equilibrada.
Necesidad de una UI multiplataforma altamente consistente y un plan claro a largo plazo para llegar al escritorio/Web: Flutter es más adecuado.
Negocio simple, muchos activos web y requisitos de experiencia generales: la solución Ionic/WebView es rentable.
Seguridad/cumplimiento/rendimiento extremo: el nativo es la ruta principal; las soluciones multiplataforma solo pueden ser un complemento o periférico.
Seguir en Google
Añadir HeyBinyang como fuente preferida en Google
Si quieres seguir encontrando mis actualizaciones en Google, puedes marcar este sitio como fuente preferida.
Compartir
Compartir
Comparte este artículo.