Linear y su arquitectura local-first: claves del rendimiento

Fuentes: How Linear achieves its speed: a technical breakdown
Imagen generada por IA con el prompt: Abstract visualization of synchronized data nodes flowing between a glowing browser window and a distant server, dark blue gradient, light streams connecting elements, clean modern tech editorial style
Imagen generada con IA

La aplicación de gestión de proyectos Linear actualiza un issue en pocos milisegundos, frente a los aproximadamente 300 milisegundos que tarda una aplicación CRUD tradicional. Esta diferencia no responde a un único truco, sino a una arquitectura construida desde el primer día con la velocidad como prioridad y refinada a través de múltiples decisiones técnicas, tal como explica este desglose.

El pilar central de su rendimiento es lo que el artículo describe como "la base de datos en el navegador". Linear almacena los datos en IndexedDB, de modo que la interfaz lee directamente desde el cliente. Las mutaciones se aplican primero de forma local y, de manera asíncrona, se sincronizan con el servidor, que a su vez difunde los cambios a otros clientes mediante WebSockets. Este enfoque elimina la latencia de red como cuello de botella: la interfaz se actualiza de forma síncrona desde la memoria y las peticiones al servidor ocurren en segundo plano, sin spinners ni estados de carga.

Tuomas Artman, cofundador de Linear, confirmó en una conferencia de 2024 que el motor de sincronización fue literalmente las primeras líneas de código que escribió, una decisión deliberada que asumía las compensaciones necesarias desde el inicio. Replicar ese motor a medida no es viable para la mayoría de proyectos; librerías como Tanstack Query o SWR permiten acercarse a esta experiencia mediante actualizaciones optimistas, asumiendo que la petición al servidor generalmente tendrá éxito y revirtiendo el estado solo en caso de error.

El stack de Linear es deliberadamente simple: React, TypeScript, MobX, PostgreSQL y una CDN. No utilizan edge databases, React Server Components ni frameworks elaborados. Destaca su apuesta por el renderizado del lado del cliente, que suele criticarse por generar cargas iniciales lentas pero que, con la arquitectura adecuada, se percibe como instantánea. La optimización comienza en tiempo de compilación: Linear ha reescrito cuatro veces su pipeline de bundling (Parcel, Rollup, Vite y, actualmente, Rolldown) con el objetivo constante de reducir la cantidad de JavaScript y CSS enviado al navegador, ya que la red sigue siendo el principal cuello de botella.