Saltar al contenido principal

Principios del equipo de React Native

· 5 min de lectura
Eli White
Eli White
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 →

El equipo de React Native en Facebook se guía por principios que ayudan a determinar cómo priorizamos nuestro trabajo. Estos principios representan específicamente a nuestro equipo y no necesariamente a todas las partes interesadas en la comunidad de React Native. Compartimos estos principios para ser más transparentes sobre lo que nos impulsa, cómo tomamos decisiones y cómo enfocamos nuestros esfuerzos.

Experiencia nativa

Nuestra máxima prioridad para React Native es cumplir con las expectativas que las personas tienen para cada plataforma. Por eso React Native renderiza usando primitivas de plataforma. Valoramos más la apariencia y comportamiento nativos que la consistencia multiplataforma.

Por ejemplo, el componente TextInput en React Native se renderiza como un UITextField en iOS. Esto garantiza que la integración con gestores de contraseñas y controles del teclado funcione inmediatamente. Al usar primitivas de plataforma, las apps de React Native también pueden mantenerse actualizadas con los cambios de diseño y comportamiento de nuevas versiones de Android e iOS.

Para igualar la apariencia y comportamiento de las aplicaciones nativas, también debemos igualar su rendimiento. Aquí enfocamos nuestros esfuerzos más ambiciosos. Por ejemplo, Facebook creó Hermes, un nuevo motor JavaScript creado desde cero para React Native en Android. Hermes mejora significativamente el tiempo de inicio de las apps de React Native. También estamos trabajando en cambios arquitectónicos importantes que optimizan el modelo de hilos y facilitan la interoperabilidad con código nativo.

Escala masiva

Cientos de pantallas en la app de Facebook están implementadas con React Native. La app de Facebook es utilizada por miles de millones de personas en una enorme variedad de dispositivos. Por esto invertimos en los problemas más desafiantes a gran escala.

Implementar React Native en nuestras apps nos permite identificar problemas que no veríamos a menor escala. Por ejemplo, Facebook se enfoca en mejorar el rendimiento en un amplio espectro de dispositivos, desde el iPhone más nuevo hasta muchas generaciones anteriores de dispositivos Android. Este enfoque guía nuestros proyectos arquitectónicos como Hermes, Fabric y TurboModules.

Hemos demostrado que React Native también puede escalar a organizaciones masivas. Cuando cientos de desarrolladores trabajan en la misma app, la adopción gradual es imprescindible. Por eso nos aseguramos de que React Native pueda adoptarse una pantalla a la vez. Pronto daremos un paso más allá, permitiendo migrar vistas nativas individuales de pantallas nativas existentes a React Native.

El enfoque en la escala masiva significa que hay muchas cosas en las que nuestro equipo no está trabajando actualmente. Por ejemplo, nuestro equipo no impulsa la adopción de React Native en la industria. Tampoco desarrollamos activamente soluciones para problemas que no observamos a gran escala. Estamos orgullosos de tener muchos socios y contribuidores principales que pueden enfocarse en esas áreas importantes para la comunidad.

Velocidad de desarrollo

Las grandes experiencias de usuario se crean de forma iterativa. Debería tomar solo unos segundos ver el resultado de cambios en el código en una aplicación en ejecución. La arquitectura de React Native permite proporcionar retroalimentación casi instantánea durante el desarrollo.

A menudo escuchamos de equipos que adoptar React Native mejoró significativamente su velocidad de desarrollo. Estos equipos encuentran que la retroalimentación instantánea durante el desarrollo facilita probar diferentes ideas y añadir pulido adicional, sin tener que interrumpir su sesión de codificación por cada pequeño cambio. Cuando hacemos cambios en React Native, nos aseguramos de preservar esta cualidad de la experiencia del desarrollador.

La retroalimentación instantánea no es la única forma en que React Native mejora la velocidad de desarrollo. Los equipos pueden aprovechar el ecosistema en rápido crecimiento de paquetes de código abierto de alta calidad. También pueden compartir lógica de negocio entre Android, iOS y la web. Esto les ayuda a lanzar actualizaciones más rápido y reducir silos organizacionales entre equipos de plataformas.

Cada plataforma

Cuando presentamos React Native en 2014, lo hicimos con nuestro lema "Learn once, write anywhere" (Aprende una vez, escribe en cualquier lugar) — y nos referimos a cualquier lugar. Los desarrolladores deberían poder llegar a tantas personas como sea posible sin verse limitados por el modelo de dispositivo o sistema operativo.

React Native abarca plataformas muy diversas como móviles, escritorio, web, TV, realidad virtual, consolas de juegos y más. Buscamos habilitar experiencias enriquecidas en cada plataforma en lugar de obligar a los desarrolladores a construir para el mínimo común denominador. Para lograrlo, nos enfocamos en admitir las características únicas de cada plataforma. Esto abarca desde diferentes mecanismos de entrada (como tacto, lápiz, ratón) hasta experiencias de consumo fundamentalmente distintas como entornos 3D en realidad virtual.

Este principio fundamentó nuestra decisión de implementar la nueva arquitectura central de React Native en C++ multiplataforma para promover la paridad entre plataformas. También estamos refinando la interfaz pública dirigida a otros mantenedores de plataformas como Microsoft con Windows y macOS. Nos esforzamos por permitir que cualquier plataforma admita React Native.

Interfaz de usuario declarativa

No creemos en desplegar interfaces idénticas en cada plataforma, creemos en exponer las capacidades únicas de cada plataforma con el mismo modelo de programación declarativo. Nuestro modelo de programación declarativo es React.

En nuestra experiencia, el flujo de datos unidireccional popularizado por React hace que las aplicaciones sean más comprensibles. Preferimos expresar una pantalla como composición de componentes declarativos en lugar de vistas gestionadas imperativamente. El éxito de React en la web y la dirección de los nuevos frameworks nativos de Android e iOS demuestran que la industria también ha adoptado interfaces declarativas.

React popularizó las interfaces de usuario declarativas. Sin embargo, aún existen problemas no resueltos que React está singularmente posicionado para resolver. React Native continuará construyendo sobre las innovaciones de React y mantendrá su posición a la vanguardia del movimiento de interfaces de usuario declarativas.