Historia de Desarrollo de Zustand

Rate this content
Bookmark

En esta charla, hablaré sobre cómo me uní al desarrollo de Zustand. Comenzó con otra biblioteca mía, que es similar a Zustand. Mi participación fue desde Zustand v3 y actualmente es v4. La filosofía de Zustand es ser pequeño y lo mejoramos manteniendo la filosofía. Finalmente, compararemos Zustand con Jotai, que es otra biblioteca de gestión de estado que desarrollo.

FAQ

Zestand es una biblioteca de gestión de estado para React, diseñada para proporcionar una tienda para el estado global con un enfoque menos dogmático y extensible. Se enfoca en un tamaño de paquete reducido y en mantener una estructura simple.

Zestand fue lanzado inicialmente en abril de 2019. Aunque Daishi Kato no estuvo involucrado en el desarrollo original, se unió al equipo en 2020 y tomó un papel activo en el desarrollo posterior.

Zestand es único en que no utiliza el contexto de React para la propagación del estado, a diferencia de muchas otras bibliotecas de gestión de estado que sí lo hacen. Esto le permite ser más eficiente en ciertos escenarios de uso.

La versión 4 de Zestand, lanzada con soporte para React 18, utiliza el gancho useSyncExternalStore. Además, la implementación fue casi completamente reescrita y los tipos de TypeScript fueron significativamente mejorados.

Zestand se centra en proporcionar una tienda con acciones y una única fuente de verdad para el estado, mientras que Jotai utiliza un modelo de átomos que representan piezas de estado que pueden ser derivadas unas de otras, enfocándose más en la abstracción del estado y el grafo de datos.

En futuras versiones principales, Zestand planea eliminar la compatibilidad con React 17 para avanzar y adaptarse a las nuevas características y mejoras de React.

Los colaboradores pueden ayudar mejorando la documentación, trabajando en middleware existente, mejorando los tipos de TypeScript y, en general, añadiendo pruebas para cubrir el comportamiento actual. Se desalienta la adición de nuevas características en la biblioteca principal, pero se anima a crear bibliotecas de terceros.

Daishi Kato aprendió no solo aspectos técnicos de la programación sino también sobre el crecimiento de la comunidad y la gestión eficaz de un proyecto de código abierto, además de explorar opciones para monetizar el trabajo en software de código abierto.

Daishi Kato
Daishi Kato
19 min
06 Jun, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Esta charla proporciona una visión general de la historia de desarrollo de Zustand, una biblioteca de gestión de estado para React, y la participación del orador en ella. También presenta Jotai, otra biblioteca de gestión de estado desarrollada por el orador, y la compara con Zustand. La charla destaca las características y objetivos únicos de ambas bibliotecas, así como los desafíos de monetizar software de código abierto.

Available in English: Development History of Zustand

1. Introducción a Zestand

Short description:

Esta charla trata sobre la historia de desarrollo de Zestand y mi participación en ella. Zestand es una biblioteca de gestión de estado para React. Soy Daishi Kato, un freelancer al que le gusta programar y el software de código abierto. Zestand es uno de mis proyectos exitosos. Llamó la atención y se hizo popular. Los hooks de React me inspiraron a desarrollar varias bibliotecas, incluyendo Zestand.

Hola, esta charla trata sobre la historia de desarrollo de Zestand y cómo estuve involucrado en ella. Por cierto, lo pronuncié Zestand, pero no está definido cómo deberíamos pronunciarlo. Podemos llamarlo como queramos.

Para aquellos que no lo sepan, Zestand es una biblioteca de gestión de estado para React.

Para empezar, permítanme presentarme. Soy Daishi Kato. Soy un freelancer al que le gusta programar, especialmente el software de código abierto. He realizado muchos trabajos de código abierto. La mayoría de ellos comenzaron como experimentos. Algunos de ellos llamaron la atención y se convirtieron en proyectos bastante conocidos. Zestand es la biblioteca de la que hablamos hoy. Jyotai es otra biblioteca de gestión de estado de la que di una charla anteriormente. Valusio es otra biblioteca. Las tres fueron desarrolladas con un equipo llamado Poimanderes. La última se llama Reactract, que es uno de mis grandes proyectos explorando los hooks de React. Hay muchas otras bibliotecas pequeñas. La mayoría de mi trabajo reciente es con los hooks de React. Pero también tengo un interés más amplio en JavaScript en general.

De todos modos, la charla de hoy trata sobre Zestand. Zestand es uno de los proyectos exitosos. Es una biblioteca de gestión de estado, y hay muchas bibliotecas similares disponibles. Debido a que hay tantas, dar a conocer y hacerse popular es un gran desafío. Afortunadamente, Zestand ha llamado la atención hasta ahora. Supongo que es solo suerte. No estuve involucrado en el desarrollo original de Zestand, pero estaba haciendo algo muy similar en aquellos días. Fue en 2018. React anunció los hooks en React Conf 2018 en octubre. Fue una gran inspiración y desarrollé varias bibliotecas con hooks, algunas de las cuales eran para la gestión de estado. Antes de los hooks, había desarrollado una biblioteca con el contexto de React, al igual que otros. Tomé el mismo enfoque y creé una versión con hooks de ella.

2. Desarrollo y Mantenimiento de Zastand

Short description:

Mientras desarrollaba Zastand, me di cuenta de que no necesitaba el contexto de React para el estado global. Lanzé la versión inicial en abril de 2019 y obtuvo algunos usuarios. Zastand se destacó por no utilizar el contexto de React, a diferencia de otras bibliotecas de estado global. Me uní al equipo en agosto de 2020 para hacer que Zastand sea más compatible con el renderizado concurrente. Después de la versión 2, Zastand no fue mantenido, así que me hice cargo y lanzé la versión 3 con mejoras.

Mientras lo desarrollaba, sabía que no requería el contexto de React porque el caso de uso es el estado global. Los usuarios nunca tendrán componentes proveedores anidados. En realidad, hice una versión sin contexto, pero no fue bien recibida por los usuarios en ese momento. Y el tiempo pasó.

Fue en abril de 2019 cuando se lanzó la versión inicial de Zastand. Aún estaba en una etapa inicial, pero obtuvo algunos usuarios. Con la colaboración de algunos colaboradores, se lanzó la versión 1 en junio. Poco después, lo encontré en algún lugar. En ese momento, tenía una herramienta, un repositorio, para comparar varias bibliotecas de estado global. Se construyó para verificar el comportamiento del renderizado concurrente. La herramienta se utilizó para verificar mis bibliotecas y algunas otras bibliotecas populares. Así que también agregué Zastand allí. Zastand era único ya que no utilizaba el contexto de React en absoluto. Todos los demás utilizaban el contexto para la propagación del estado o el alcance de las tiendas. Creo que el contexto de React se ha utilizado en exceso para el estado global. A menos que uses proveedores de contexto varias veces en tu árbol de componentes, no es contextual. El estado global definido a nivel de módulo debería funcionar correctamente. Zastand fue un pionero en este enfoque. Estoy convencido de ello y reimplementé una de mis bibliotecas. Más tarde, escribí una publicación de blog detallada al respecto. En fin, así es como conocí a Zastand. Como dije, uno de mis repositorios para comparar varios estados globales en el renderizado concurrente.

Estaba interesado en hacer que Zastand sea más compatible con el renderizado concurrente para futuras versiones de React. Me uní al equipo en agosto de 2020 y me hice cargo del desarrollo de Zastand. Zastand había sido desarrollado activamente en el año anterior y alcanzó la versión 2. Sin embargo, en realidad no fue mantenido después de eso. Había una cierta cantidad de usuarios y algunos problemas abiertos, pero nadie se encargaba de ellos. Mientras mi motivación era el renderizado concurrente, comencé a mantenerlo y resolver esos problemas. La versión 3 se lanzó en el mismo mes en que comencé a trabajar en ello. Tenía dos grandes mejoras, pero aparte de eso, es básicamente compatible con la versión anterior.