Carregando publicação…
Carregando publicação…
A equipe do TanStack lança o Redact 0.2, um runtime síncrono e compacto que reduz o JavaScript do cliente em até 70% sem alterar uma linha de código.
A equipe por trás do ecossistema TanStack (conhecida por projetos fundamentais como TanStack Query, Table e Router) anunciou oficialmente o TanStack Redact. A proposta é ambiciosa e direta: fornecer um runtime alternativo ultra-enxuto para aplicações React existentes, reduzindo drasticamente o volume de JavaScript entregue ao navegador sem que você precise reescrever uma única linha do código da aplicação.
Disponibilizado na versão 0.2 com suporte inicial para TanStack Start, Vite, Vinext e Next.js (tanto no App Router quanto no Pages Router), o Redact traz uma resposta técnica prática a uma queixa frequente da comunidade: o crescimento contínuo do peso do runtime padrão do React nos últimos anos.
No ecossistema moderno, quando você constrói uma aplicação com React 18 ou React 19, o navegador faz o download não apenas dos seus componentes e bibliotecas de interface, mas também de todo o runtime do React e do React DOM. Esse núcleo inclui o mecanismo de reconciliação de fibras (Fiber), o escalonador concorrente (Concurrent Scheduler), filas de prioridades e suporte a divisões de tempo (time-slicing).
Em uma aplicação SPA ou em páginas com hidratação tradicional, esse overhead básico consome entre 35 KB e 50 KB de JavaScript compactado (gzip) antes mesmo de processar o primeiro botão ou formulário da sua tela.
O TanStack Redact entra como um substituto drop-in desse runtime no navegador. Em vez de obrigar o time a migrar para frameworks alternativos (com suas próprias peculiaridades de sintaxe ou APIs de reatividade), o Redact atua na etapa de empacotamento (bundler): ele redireciona as chamadas internas de react e react-dom no cliente para a implementação enxuta do TanStack.
Seu código continua idêntico:
// O código da sua aplicação não muda em nada:
import { useState, useEffect, useId, useMemo } from 'react'
export function UserProfile({ id }: { id: string }) {
const [data, setData] = useState(null)
// ...
}
A principal decisão de design do TanStack Redact é resumida pelo próprio time com a frase: "O ganho de tamanho vem acompanhado de uma escolha".
O React oficial introduziu o modelo concorrente para permitir que renderizações pesadas pudessem ser pausadas, interrompidas ou divididas em pedaços entre frames de animação. Embora isso seja poderoso em interfaces ultra-complexas, a esmagadora maioria dos sites comuns não precisa de interrupções de renderização.
O Redact remove toda a máquina de estados concorrente e adota uma renderização síncrona. Ele mantém suporte a:
createContext, useContext);useState, useEffect, useLayoutEffect, useRef, useMemo, useCallback, useId, etc.);Em arquiteturas modernas com suporte a React Server Components (RSC), o Redact adota uma estratégia híbrida elegante:
'use client', garantindo que o bundle baixado pelo usuário final seja mínimo.De acordo com os benchmarks oficiais do repositório comparando bundles finais de produção (JavaScript + CSS gzipped):
| Plataforma / Ferramenta | Redução em Bytes | Percentual de Economia |
|---|---|---|
| Vite (SPA puro) | -48,1 KB | 70,5% menor |
| TanStack Start | -47,0 KB | 43,0% menor |
| Vinext | -39,3 KB | 28,5% menor |
| Next.js (App / Pages Router) | -35,7 KB | 20,4% menor |
Em conexões móveis instáveis ou aparelhos celulares com processadores de entrada, retirar de 35 a 48 KB de JavaScript significa reduzir o tempo de parse e compilação do motor V8, melhorando diretamente métricas vitais como Interaction to Next Paint (INP) e Largest Contentful Paint (LCP).
O Redact é uma das soluções mais atraentes do ano para cenários onde a velocidade de carregamento inicial é crítica para o negócio:
Lojas online dependem de cada milissegundo para conversão de vendas e posicionamento no Google (Core Web Vitals). Como a maioria das interações são compras, filtros de catálogo, modais de carrinho e preenchimento de formulários, o ganho de velocidade é imediato.
Projetos orientados a texto e mídia onde os componentes interativos do cliente são ilhas esparsas (menus, busca, comentários, modo escuro). Manter todo o runtime pesado do React apenas para gerenciar três componentes interativos costumava ser um desperdício que o Redact resolve.
Aplicações de gestão que consomem APIs através de TanStack Query e exibem dados via TanStack Table. As atualizações de estado costumam ser discretas e pontuais, tornando a renderização síncrona tão rápida (ou até mais responsiva) que o agendador concorrente.
Se seu público acessa o sistema majoritariamente via smartphones intermediários em redes 4G/3G, diminuir o custo de inicialização do JavaScript traz um alívio de performance perceptível no mundo real.
Apesar do ganho evidente de peso, o Redact não é uma bala de prata e não deve ser aplicado de olhos fechados em todos os cenários. Evite adotá-lo nos seguintes casos:
Aplicações no estilo Figma, Canva, editores de áudio/vídeo no navegador ou projetos 3D baseados em @react-three/fiber. Esses produtos dependem profundamente do escalonamento concorrente do React para fatiar cálculos pesados em microtarefas sem congelar o ponteiro do mouse ou derrubar a taxa de quadros (60/120 FPS).
Se sua aplicação depende do comportamento de interrupção garantido por useTransition e useDeferredValue — por exemplo, quando a digitação em um campo de busca precisa abortar no meio do caminho a renderização de um grafo com milhares de nós — o modelo síncrono do Redact processará a atualização sem pausas, o que pode causar micro-travamentos na UI durante cálculos massivos.
Embora o Redact passe por baterias rigorosas de testes de compatibilidade em Chromium, Firefox e WebKit, bibliotecas de terceiros que inspecionam nós internos do _reactInternals ou estruturas não documentadas do Fiber podem apresentar comportamentos imprevistos.
Grandes organizações que exigem conformidade estrita e certificações de segurança baseadas exclusivamente em binários e pacotes distribuídos oficialmente pela Meta.
Integrar o Redact em um projeto Vite ou TanStack Start requer apenas a adição do pacote oficial no arquivo de configuração do empacotador:
npm install @tanstack/redact
No arquivo vite.config.ts:
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import { redact } from '@tanstack/redact/vite'
export default defineConfig({
plugins: [
react(),
redact(), // Redireciona o runtime no cliente
],
})
Caso utilize Next.js, a configuração é feita via wrapper no next.config.mjs:
import { withRedact } from '@tanstack/redact/next'
/** @type {import('next').NextConfig} */
const nextConfig = {
// sua configuração existente
}
export default withRedact(nextConfig)
Para conferir o código-fonte, documentação e instruções detalhadas de integração para cada framework suportado:
O TanStack Redact representa um movimento saudável no desenvolvimento web moderno: questionar a necessidade de pagar o preço de arquiteturas extremamente complexas quando o problema a ser resolvido pode ser atendido de forma mais leve e elegante.
Para a maioria esmagadora das aplicações web cotidianas, o Redact oferece um atalho raro no desenvolvimento de software: ganho real de performance e corte de payload sem a necessidade de migração de código ou aprendizado de novas linguagens. Vale acompanhar a evolução da ferramenta rumo à versão estável 1.0.