Aplaudamos a Remix. Construimos una API de cargador de alto rendimiento, muy similar, directamente en el router, lo que permite asegurarte de que los datos estén listos, o al menos preparándose, antes de que cualquier código de React se ejecute. En TanStack Router, sin embargo, los cargadores son isomórficos. Se ejecutan tanto en el servidor durante SSR como en el cliente antes de cada navegación. Pueden preparar cachés, obtener activos e incluso devolver sus propios datos, que luego se serializan al cliente durante SSR y se rehidratan con tu aplicación.
Este patrón de cargador es fantástico, y he disfrutado usándolo a lo largo de los años a través de Remix. Pero por sí solo, creo que viene con algunos inconvenientes importantes. Uno de ellos es el más obvio. Supongamos que dejas esta página y vuelves más tarde. ¿Realmente vas a hacer que tus usuarios esperen por ese cargador de nuevo? Espero que no lo hagas. Así que para resolver este problema, nuestro router necesita comenzar a entender más sobre nuestros datos, y principalmente cómo almacenarlos en caché. En este punto, espero que estés pensando lo mismo que yo. Bueno, eso suena como un trabajo perfecto para TanStack Query. ¡Woo! No. Sería genial, y lo será. Solo espera, sin embargo. Porque normalmente, tendrías razón. Sin embargo, se sentía mal obligarte a usar TanStack Query si querías usar Start, aunque sea genial. Tampoco se sentía bien dejar a TanStack Router en el polvo en cuanto a almacenamiento en caché. Si algo más simple puede hacer el truco, ¿por qué no? Así que hice algo realmente genial. Construí una versión en miniatura de TanStack Query directamente en el router. Eso es muy genial. En realidad, es el 5% del tamaño, y es el 5% del tamaño de React Query. Tiene almacenamiento en caché incorporado que se basa en una combinación del nombre de la ruta y los parámetros de búsqueda seleccionados, al igual que una clave de consulta. Y con esta pequeña adición, el router ahora por sí solo admite patrones de stale while we validate, precarga persistente, validación granular, lo que significa que para tus usuarios, nuevamente, tendrás navegación instantánea, muy pocos spinners, si es que hay alguno, y potencialmente incluso menos ancho de banda, dependiendo de cómo lo configures.
Entonces, ¿dónde deja eso a TanStack Query? ¿Qué pasa si quieres usarlo? Bueno, hicimos más cosas geniales. Si agregas TanStack Query, obtendrás cosas como el polling, las consultas infinitas, soporte offline, actualizaciones optimistas, simplemente usando TanStack Query. Es genial. Pero lo que realmente me emociona es cómo el UseSuspenseQuery se integra mágicamente con el router. Te ofrece obtención de datos isomórfica con un solo hook.
Comments