React v16.7: Não, Este Não é Aquele Com Hooks

19 de dezembro de 2018 por Andrew Clark

Nossa última versão inclui um correção de bug (bugfix) de desempenho para React.lazy. Embora não haja alterações na API, estamos lançando isso como uma versão minor em vez de um patch.

Por Que Este Bugfix é Minor Em Vez de Um Patch?

React segue versionamento semântico. Normalmente, isso significa que usamos versões patch para correções de bugs e minors para novos recursos (non-breaking). No entanto, reservamos a opção de liberar versões minor, mesmo que elas não incluam novos recursos. A motivação é reservar patches para mudanças que tenham uma chance muito baixa de quebrar. Os patches são o tipo mais importante de lançamento, porque às vezes eles contém correções críticas de bugs. Isso significa que os lançamentos de patch têm um padrão mais alto de confiabilidade. É inaceitável que um patch introduza bugs adicionais, porque se as pessoas começarem a desconfiar dos patches, isso compromete nossa capacidade de corrigir bugs críticos quando eles surgem - por exemplo, para corrigir uma vulnerabilidade de segurança.

Nós nunca pretendemos enviar bugs. React tem uma merecida reputação de estabilidade e nós pretendemos mantê-la assim. Nós testamos completamente todas as versões do React antes de liberar. Isso inclui testes unitários, testes generativos (difusos), testes de integração e alimentação interna em dezenas de milhares de componentes. No entanto, às vezes cometemos erros. É por isso que, daqui para frente, nossa política será a de que, se um lançamento contiver alterações não triviais, usaremos a versão minor, mesmo que o comportamento externo seja o mesmo. Também vamos usar o minor ao alterar as APIs com prefixo unstable_.

Já Posso Usar Hooks?

Ainda não, mas em breve!

Na React Conf, dissemos que o 16.7 seria o primeiro lançamento a incluir Hooks. Isso foi um erro. Não deveríamos ter anexado um número de versão específico a um recurso não lançado. Nós vamos evitar isso no futuro.

Embora o 16.7 não inclua Hooks, por favor, não deduza nada sobre a linha do tempo do lançamento de Hooks. Nossos planos para hooks são inalterados:

Ouvimos de muitas pessoas que querem começar a usar os Hooks em seus apps. Nós também mal podemos esperar para lançá-los! Mas como Hooks muda a forma como escrevemos componentes React, estamos tirando um tempo extra para acertar os detalhes. Agradecemos sua paciência enquanto preparamos este interessante novo recurso para que você, err… use.

Saiba mais sobre nosso roadmap em nosso post anterior.

Instalação

React v16.7.0 está disponível no registro npm.

Para instalar React 16 com Yarn, execute:

yarn add react@^16.7.0 react-dom@^16.7.0

Para instalar React 16 com npm, execute:

npm install --save react@^16.7.0 react-dom@^16.7.0

Nós também fornecemos builds UMD de React via um CDN:

<script crossorigin src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>

Consulte a documentação para instruções detalhadas de instalação.

Changelog

React DOM

  • Correção o desempenho de React.lazy para um grande número de componentes lazily-loaded. (@acdlite em #14429)
  • Limpar campos na desmontagem para evitar vazamentos de memória. (@trueadm em #14276)
  • Correção de bug com SSR e context ao misturar react-dom/server@16.6 e react@<16.6. (@gaearon em #14291)
  • Correção de uma regressão de desempenho no modo de criação de perfil (profiling). (@bvaughn em #14383)

Agendador (Experimental)