Hola a todos, soy Shubham. Soy un ingeniero de software senior en Headout. Trabajo en DeX Studio, que es una herramienta interna para crear puertas de audio. Entonces, los creadores lo usan para escribir guiones, editar, y publicar puertas. Y recientemente, comenzamos a construir algo mucho más ambicioso dentro de él, que es un editor de plantillas estilo puerta. Entonces, piensa en reproducciones multipista, scrubbing, feeds, un cabezal de reproducción en lienzo a 60fps. Básicamente, todas las cosas que esperarías de un editor de audio de escritorio, excepto que este se ejecuta dentro de una aplicación React en el navegador.
Y mientras lo construía, pasé mucho tiempo enfrentándome a este problema muy específico, que es lo que sucede cuando React se encuentra con sistemas en tiempo real. Y de eso también trata esta charla, que es lo que sucede cuando le pides a un motor de reconciliación que se comporte como un reloj, y más importante, cómo diseñar tu camino alrededor de esa pelea. Así que, durante los próximos 15 a 20 minutos, voy a recorrer cuatro cosas. Primero, el modo Fourier exacto que teníamos. Segundo, el cambio arquitectónico que lo solucionó. Tercero, los patrones que realmente surgen de ese modelo. Y finalmente, discutiremos las compensaciones, porque esta arquitectura absolutamente funciona, pero viene con costos reales.
Así que, ahora, aquí es donde realmente comenzó esta historia para mí. Quiero que imagines tres pistas de audio, un cabezal de reproducción rojo moviéndose suavemente a través de la pantalla. Se supone que debe deslizarse a 60 fotogramas por segundo, pero simplemente no lo hace. Está temblando, el audio entre las pistas se está desplazando, y cada scrubbing está introduciendo un nuevo retraso. Y la parte extraña era que esto no era un problema de hardware. Tampoco era un problema de empaquetador en una red. Esto era React 19 ejecutándose en una máquina rápida, y aquí, el framework estaba luchando contra nosotros a nivel arquitectónico. En retrospectiva, el error era obvio. Estamos pidiendo a React que sea un reloj en tiempo real, y no lo es. Nunca fue diseñado para ser uno. Y hoy, quiero mostrarte qué hacer en su lugar. Así que, vamos a sumergirnos. Si hablamos de React, el ciclo de renderizado de React es eventualmente consistente por diseño. Y honestamente, eso es realmente una característica, no un defecto. Así que, si piensas en cosas como la renderización concurrente, la división de tiempo, las transiciones, el suspense, e incluso el nuevo límite de actividad, todos hacen el mismo intercambio. React se da a sí mismo la libertad de decidir cuándo ocurre el trabajo. Es el framework el que elige el momento exacto.
Comments