Creación para todos: Reconstrucción de aplicaciones con React Native
Por DeHub Team — 2021-07-02
En el tercer trimestre de 2021 comenzamos a reconstruir la aplicación DeHub desde cero en React Native.
Decidir reescribir una aplicación de trabajo no es una decisión que a nadie le guste. La versión beta estaba activa, tenía usuarios y cada semana que se dedicó a la reconstrucción fue una semana que no se dedicó a las funciones que esos usuarios estaban pidiendo. Lo hicimos de todos modos, y es una de las pocas llamadas grandes de ese período que nunca hemos vuelto a visitar.
Qué estaba mal con la primera aplicación
La versión beta se creó para responder a una pregunta (¿la gente usará esto?) y la respondió. Lo que no podía hacer era crecer. El envío a dos plataformas significaba mantener dos bases de código, lo que en la práctica significaba que una plataforma se quedaba atrás silenciosamente, y cada función costaba aproximadamente el doble de lo que debería.
Para un equipo de nuestro tamaño eso no es una inconveniencia técnica. Es un límite de cuán rápido el producto puede moverse.
Por qué React Native
La razón honesta es el apalancamiento del equipo. React Native permitió que un pequeño grupo enviara a iOS y Android desde una sola base de código sin pasar completamente a nativo dos veces, y sin los compromisos de una vista web envuelta — lo cual, para una aplicación construida alrededor de video y contenido en vivo, habría sido fatal.
También significaba que la aplicación móvil y la aplicación web podían compartir un modelo mental, un vocabulario de componentes y, en muchos casos, una lógica real. Cuatro años después, DeHub ejecuta una aplicación web de React y una aplicación móvil de React Native mantenidas en paralelo, y las características se cruzan entre ellas a un ritmo que no sería posible si la respuesta en 2021 hubiera sido dos reescrituras nativas.
Las partes que fueron más difíciles de lo esperado
Nadie debería leer esto como una elección sin fricciones:
- El vídeo es donde se filtra la abstracción. La reproducción, el audio en segundo plano y la transmisión en vivo son exactamente las áreas en las que terminas en módulos nativos independientemente de las promesas del marco.
- La integración de Wallet fue el impuesto continuo. La conexión de la billetera móvil se ha vuelto a resolver más veces que cualquier otra parte de la aplicación y sigue siendo el lugar más común en el que los nuevos usuarios se estancan.
- Las reescrituras siempre llevan más tiempo. La lista de cosas que hizo la aplicación anterior que nadie había escrito solo se descubre eliminándolos.
Por qué aún era correcto
La reconstrucción es la razón por la que la aplicación sobrevivió a todo lo que vino después. Cuando el arcade se lanzó en el primer trimestre de 2022, cuando llegó la aplicación de transmisión ese verano, cuando todo el ecosistema se incorporó a una sola aplicación en 2023, ninguno de esos fue un caso de atornillarse a la versión beta. Aterrizaron sobre una base construida deliberadamente para soportar peso.
La lección que sacamos de ello no es “reescribir temprano”. Es que el momento en que puedes nombrar el techo específico que tu arquitectura impone al equipo, ya estás pagando por la reescritura, ya sea que la hayas iniciado o no.
Cómo sobrevivir a uno
Dos cosas hicieron que esta reescritura terminara en lugar de estancarse, y ambas valen la pena mencionar porque la mayoría de las reescrituras se estancan.
La antigua aplicación seguía funcionando. No dejamos de enviar actualizaciones a los usuarios existentes mientras se construía el reemplazo. Eso extiende la línea de tiempo y elimina la presión que produce una transición apresurada, donde los reescrituras suelen morir.
El alcance era la arquitectura, no el producto. Se rechazaron todas las solicitudes para mejorar también una función mientras se reconstruía. Una reescritura que es simultáneamente un rediseño tiene dos formas de fallar y no hay forma de saber cuál está sucediendo. El trabajo de la interfaz esperó hasta 2024, cuando se envió correctamente como una revisión completa junto con una mejora del backend del 200%.
Abrir DeHub