Tecnologia · 9 min

Jotai v2.20.0 Otimiza Performance e Prepara Terreno para v3 no React

Jotai, a biblioteca de gerenciamento de estado atômico para React, acaba de lançar a versão 2.20.0, focada em otimização de performance e na preparação de sua arquitetura interna para a futura versão 3.

R

Ilustração abstrata de um átomo e código, simbolizando o gerenciamento de estado atômico do Jotai para performance em aplicações React.
Ilustração abstrata de um átomo e código, simbolizando o gerenciamento de estado atômico do Jotai para performance em aplicações React.

Jotai, a renomada biblioteca de gerenciamento de estado atômico para React, acaba de lançar a versão 2.20.0, focada em otimização de performance para cenários de alta demanda e na preparação da arquitetura interna para a futura versão 3.

  • Jotai v2.20.0 otimiza a performance em cenários de alta demanda através de refatorações internas, como a remoção do <code>WeakMap</code>.
  • As mudanças não afetam a API de uso diário para desenvolvedores de aplicações, mas sim os autores de bibliotecas que estendem o Jotai.
  • A versão 2.20.0 prepara o terreno para o Jotai v3, que trará redesign dos 'building blocks', fim do suporte a CJS e React < 18.
  • A funcionalidade <code>atomFamily</code> foi depreciada, com sugestão de migração para o pacote <code>jotai-family</code>.
  • Jotai continua sendo uma opção líder para gerenciamento de estado atômico, oferecendo uma alternativa distinta a Zustand e Recoil.

O que é Jotai v2.20.0 e seu Foco em Performance

Jotai v2.20.0 é uma atualização focada em refinar os blocos de construção internos da biblioteca para melhorar a performance em cenários de alta demanda. Essa versão representa um esforço contínuo para otimizar a forma como o estado é gerenciado, especialmente em aplicações complexas.

Refatoração Interna e o Impacto do WeakMap

A principal motivação por trás do Jotai v2.20.0 é aprimorar o desempenho em situações que exigem muitas atualizações de estado ou interações rápidas. As mudanças chave incluem a eliminação do uso da função <code>getInternalBuildingBlock</code>, aprimoramentos no estreitamento de tipos para <code>onMount</code> hooks e a implementação de hooks 'lazy' em <code>ensureAtomState</code> para novos estados de átomo. Um ponto crucial foi a substituição do uso de <code>WeakMap</code>, que, embora trouxesse flexibilidade, introduziu uma regressão de performance em versões anteriores (especificamente v2.12.0 e v2.15.0), sendo agora trocado por um modelo de passagem de parâmetros.

A história desses 'building blocks' remonta ao v2.12.0, quando Daishi Kato, criador do Jotai, expôs algumas partes internas para permitir que outras bibliotecas, como <code>jotai-effect</code> e <code>jotai-scope</code>, estendessem o núcleo do Jotai. A ideia era permitir a personalização no momento da construção do 'store', garantindo flexibilidade e segurança. No entanto, a implementação com <code>WeakMap</code>, introduzida para essa flexibilidade, gerou a referida regressão de desempenho, que agora é corrigida ao passar todos os parâmetros diretamente.

Suporte do Ecossistema e Depreciações

Para a maioria dos desenvolvedores, a API de uso diário do Jotai permanece inalterada. Isso significa que a criação e o consumo de um 'store' funcionam exatamente como antes, garantindo que o código existente não seja quebrado pela atualização. No entanto, o rótulo de 'breaking change' se aplica aos blocos de construção internos, o que afeta diretamente os autores de bibliotecas que dependem dessas APIs mais profundas.

Um exemplo disso é o <code>jotai-devtools v0.14.0</code>, que já adicionou suporte para <code>INTERNAL_buildStoreRev3</code> e removeu a compatibilidade com versões mais antigas para se manter alinhado. Para equipes que ainda utilizam o Jotai v1, a recomendação é consultar o guia oficial de migração para a v2. Além disso, a funcionalidade <code>atomFamily</code> está oficialmente depreciada antes do v3, com a sugestão de migração para o pacote <code>jotai-family</code>.

Cenários de Alta Demanda: Ganhos para Desenvolvedores

As melhorias de performance do Jotai v2.20.0 são particularmente relevantes para aplicações que lidam com uma grande quantidade de atualizações de estado em curtos períodos. Isso inclui dashboards em tempo real, jogos interativos, editores de código e outras interfaces de usuário dinâmicas, onde cada milissegundo conta para uma experiência fluida.

Implicações para o Desenvolvimento no Brasil

Para o mercado de TI brasileiro, onde a experiência do usuário em dispositivos móveis e em redes com largura de banda variável é uma preocupação constante, qualquer ganho de performance em bibliotecas front-end é bem-vindo. Aplicações mais rápidas resultam em maior engajamento, menor taxa de rejeição e melhor posicionamento em mecanismos de busca, fatores cruciais para a competitividade de produtos digitais no país. A adoção de atualizações como esta pode significar uma vantagem técnica considerável para startups e empresas consolidadas, ao garantir que suas aplicações ofereçam a melhor performance em aplicações web possível.

Olhando para o Futuro: Os Planos para Jotai v3

O Jotai v2.20.0 não é apenas uma atualização de performance, mas também um trampolim para o que virá no Jotai v3. Daishi Kato já delineou planos ambiciosos para a próxima grande versão, que incluem uma reestruturação da arquitetura interna e a remoção de suporte para certas tecnologias legadas.

Discussões da Comunidade e Desafios

Os planos para o Jotai v3 incluem um redesenho da estrutura dos 'building blocks', a remoção dos 'CommonJS builds' (CJS), o abandono do suporte para versões do React abaixo da 18 e a remoção da opção <code>setSelf</code>. Essas propostas geraram debates na comunidade, principalmente sobre a exclusão do suporte a CJS.

Um contribuinte destacou que a maioria esmagadora dos usuários do Jotai utiliza algum tipo de 'bundler' que já suporta ESM (ECMAScript Modules) sem problemas. No entanto, Kato ressaltou a importância de considerar os usuários de Server-Side Rendering (SSR), que ainda podem ter dependências de CJS. Além disso, sugestões para diminuir o acoplamento do Jotai com o React e expandir para outros frameworks foram recebidas com uma postura firme de 'React-first', reiterando o foco da biblioteca em seu ecossistema original.

A comunidade do Mercado de TI no Brasil acompanha de perto essas mudanças. A migração para ESM em projetos modernos é uma tendência global, e a remoção do CJS pode simplificar o desenvolvimento e a manutenção. No entanto, a transição requer planejamento, especialmente para equipes com bases de código mais antigas ou que dependem fortemente de SSR com CJS.

Jotai no Cenário do Gerenciamento de Estado

No panorama mais amplo do desenvolvimento front-end, Jotai continua sendo uma das principais opções 'atômicas' para gerenciamento de estado. Embora esteja atrás de bibliotecas como o próprio Zustand de Kato em número de downloads, ele oferece uma abordagem distinta.

Enquanto Jotai se posiciona com átomos 'bottom-up', similar ao Recoil, Zustand oferece um 'store' único 'top-down', mais próximo do Redux. Já Valtio, também de Kato, adota um modelo mental baseado em 'proxies'. Essa diversidade oferece aos desenvolvedores a flexibilidade de escolher a ferramenta que melhor se alinha com a arquitetura e os requisitos de performance de seus projetos.

O Jotai está disponível sob a licença MIT e pode ser facilmente instalado via npm. As discussões sobre o v3 continuam ativas, indicando um futuro de constante evolução para a biblioteca.

Perguntas Frequentes (FAQ)

Quais são as principais melhorias de performance no Jotai v2.20.0?

As melhorias focam na refatoração dos blocos de construção internos da biblioteca, incluindo a remoção do <code>WeakMap</code> em favor da passagem direta de parâmetros, resultando em ganhos de performance para cenários de alta demanda e taxa de transferência.

O Jotai v2.20.0 introduz 'breaking changes' para desenvolvedores de aplicações?

Não para a API de uso diário. As 'breaking changes' são para os blocos de construção internos, impactando principalmente autores de bibliotecas que estendem o Jotai e não o código de aplicação típico.

Quais são os planos para o futuro Jotai v3?

Os planos para o Jotai v3 incluem um redesenho da estrutura dos 'building blocks', a remoção dos 'CommonJS builds', o abandono do suporte para React abaixo da versão 18 e a remoção da opção <code>setSelf</code>, visando modernizar e otimizar a biblioteca.

O que acontece com <code>atomFamily</code> no Jotai?

A funcionalidade <code>atomFamily</code> está depreciada a partir da v2.20.0, com a recomendação de migrar para o pacote separado <code>jotai-family</code> para garantir compatibilidade e acesso a futuras atualizações.

R

Sobre o autor

Redação

Editor-chefe

Usuário técnico criado para escrever conteúdos da redação.

Perguntas frequentes

Quais são as principais melhorias de performance no Jotai v2.20.0? +

As melhorias focam na refatoração dos blocos de construção internos da biblioteca, incluindo a remoção do <code>WeakMap</code> em favor da passagem direta de parâmetros, resultando em ganhos de performance para cenários de alta demanda e taxa de transferência.

O Jotai v2.20.0 introduz 'breaking changes' para desenvolvedores de aplicações? +

Não para a API de uso diário. As 'breaking changes' são para os blocos de construção internos, impactando principalmente autores de bibliotecas que estendem o Jotai e não o código de aplicação típico.

Quais são os planos para o futuro Jotai v3? +

Os planos para o Jotai v3 incluem um redesenho da estrutura dos 'building blocks', a remoção dos 'CommonJS builds', o abandono do suporte para React abaixo da versão 18 e a remoção da opção <code>setSelf</code>, visando modernizar e otimizar a biblioteca.

O que acontece com <code>atomFamily</code> no Jotai? +

A funcionalidade <code>atomFamily</code> está depreciada a partir da v2.20.0, com a recomendação de migrar para o pacote separado <code>jotai-family</code> para garantir compatibilidade e acesso a futuras atualizações.

Mais em Tecnologia

Newsletter

Receba os destaques no seu e-mail

Cadastre-se e acompanhe as novidades em primeira mão.