Tonal

Ensuring feature parity at Tonal with Flutter

Goal

El equipo de ingeniería móvil de Tonal comenzó a trabajar en la aplicación móvil solo unos meses antes de que la empresa anunciara su producto único de acondicionamiento físico en casa, por lo que el equipo necesitaba avanzar lo más rápido posible. El equipo de software nativo de Android de Tonal se dedicó a construir la aplicación nativa de Android que se ejecuta en el hardware de Tonal, lo que dejó a un solo ingeniero de software para construir la aplicación móvil desde cero. Al no haber lanzado nunca antes una aplicación móvil, Tonal no sabía qué porcentaje de usuarios usaría Android frente a iOS, pero sí sabían que querían dar a ambas plataformas la misma atención y mantener la paridad de funciones. También necesitaban un framework que les permitiera construir una interfaz de usuario personalizada y de marca que se sintiera exclusivamente Tonal, sin dejar de sentirse como una aplicación móvil nativa amigable. Y debido a que la aplicación necesitaría mantenerse durante un largo período de tiempo, necesitaban una solución que le permitiera escalar junto con un equipo en crecimiento de ingenieros de software.

Why Flutter?

Tonal quedó inmediatamente impresionada con la arquitectura de Flutter. A diferencia de otros frameworks multiplataforma, Flutter maneja el renderizado de la interfaz de usuario. Esta decisión de arquitectura fundamental hizo que Tonal tuviera más confianza en que serían capaces de construir una experiencia personalizada sin pasar mucho tiempo depurando problemas visuales en las diferentes plataformas. A pesar de que nadie en el equipo tenía experiencia con Dart, el equipo se sintió seguro después de experimentar con el lenguaje y encontrarlo amigable e intuitivo. Y dado que el framework proporciona un formateador de código, un analizador de código (linter), un analizador estático de código y documentación sobre las convenciones estándar, el equipo pudo comenzar a construir funciones muy rápidamente. En menos de la mitad del tiempo que tomó construir una prueba de concepto en otro framework, el equipo de Tonal pudo recrear toda la aplicación con Flutter.

Their Solution

A pesar de provenir de una amplia gama de trayectorias y experiencias, Dart y Flutter fueron fáciles de aprender rápidamente para todos en el equipo. Tonal pudo llevar la aplicación de ser solo una idea a una aplicación móvil completa y lista para producción, implementada para usuarios reales en menos de un año. Flutter facilitó avanzar rápidamente con funciones como el Hot Reloading Stateful, habilitado por la capacidad de Dart de compilar tanto AOT como JIT. Desde el lanzamiento de la aplicación en 2019, el equipo móvil de Tonal ha podido iterar rápidamente en la aplicación, lanzando nuevas versiones de la aplicación cada dos semanas.

«La experiencia de desarrollo de Flutter es de primer nivel. A diferencia de la mayoría de los frameworks de JavaScript que presumen de una experiencia de desarrollo con 'hot reloading', el Hot Reloading de Flutter realmente funciona de manera confiable y es consistentemente muy rápido».

- Max Lapides, gerente de ingeniería de software móvil, Tonal

Results

Flutter facilitó el lanzamiento de una aplicación con muy pocos recursos de ingeniería. Cuando Tonal lanzó su aplicación móvil en 2019, solo había dos ingenieros en el proyecto. Pero aunque el equipo ha aumentado significativamente desde entonces, Flutter continúa dando soporte a la complejidad cada vez mayor de la aplicación a medida que escala con la empresa. Tonal ha lanzado una increíble variedad de funciones en la aplicación móvil hasta ahora, incluyendo una biblioteca de gráficos personalizada, animaciones con Rive, una tabla de clasificación que permite desplazarse de forma fluida a través de decenas de miles de miembros activos, un reproductor de video de entrenamiento nativo personalizado y más, con nuevas funciones en camino. Todo esto se ha logrado con una paridad total de funciones entre iOS y Android. Flutter ha liberado a Tonal para enfocarse en construir funciones increíbles y mantener a sus usuarios interactuando y encantados.