PRNext 0.1.22-alpha: muito mais desempenho
O PRNext 0.1.22-alpha está disponível no npm. No nosso benchmark de desenvolvimento com uma tabela de mil linhas, a vazão mediana Flight é multiplicada por 7,7, a vazão SSR por 3,97 e o payload Flight decodificado diminui 72,1%. As medições comparam a mesma tabela com a otimização desativada e ativada.
A mudança é automática para os componentes de apresentação compatíveis. Não é preciso adicionar «use presentation»: o PRNext envia uma estrutura reutilizável e os valores exibidos, mantém os cálculos no servidor e preserva o HTML completo. Atualize o PRNext e recompile a aplicação para usar a otimização.
Até 7,7× a vazão Flight na nossa tabela de teste
A campanha de desenvolvimento no código 270ae481 compara a mesma tabela com a otimização desativada e ativada. Com mil linhas, a mediana de vazão SSR passa de 48,611 para 192,765 requisições por segundo, cerca de 3,97 vezes. Flight passa de 80,472 para 619,413, cerca de 7,70 vezes. O p95 cai de 100,52 para 28,78 ms e de 61,65 para 8,806 ms.
O HTML da tabela é idêntico. Flight decodificado passa de 266.672 para 74.353 bytes, redução de 72,1%. Com gzip, a redução é de 36,1%. O JavaScript codificado do navegador aumenta 606 bytes e exige duas requisições adicionais.
A medição local usa Windows x64, Node 24.22.1, dois workers e quatro conexões em um PC compartilhado com 12 processadores lógicos e 32 GiB. A campanha também inclui um cenário SSR de 100 linhas. Três pares alternados, com um segundo de aquecimento e três de medição por janela, somam 18 janelas e 21.523 respostas validadas sem erros. Ambas as variantes usam o mesmo binário nativo 0.1.21 recompilado. São medições do código de desenvolvimento, não dos arquivos npm finais nem uma comparação com Next.js. A memória varia e o ganho no navegador é inconclusivo. SQL, lógica de negócio e DOM não ficam sete vezes mais rápidos.
Transferir a estrutura uma vez
O Flight transporta a saída dos React Server Components para o navegador. Quando muitas linhas compartilham uma estrutura, descrever cada elemento pode custar mais que os dados exibidos. O PRNext reconhece certos componentes síncronos e puros, compila sua marcação estática e usa uma referência cliente oficial do React com posições compactas. O protocolo e o decodificador Flight continuam sendo os do React.
O navegador baixa um pequeno módulo de apresentação, portanto ainda existe JavaScript para transferir e executar. O servidor renderiza o HTML completo antes de carregá-lo. Uma lista pequena ou um valor incompatível pode usar a representação habitual sem substituir a raiz DOM apenas pela mudança de formato.
Tabelas de dados, diretórios e listas longas de cartões de apresentação podem repetir bastante marcação. Separar essa estrutura dos valores exibidos reduz o trabalho necessário para descrever a interface no Flight. O servidor continua executando os cálculos e as autorizações da aplicação; os ganhos dependem de quanta apresentação compatível precisa ser transmitida.
Os cálculos privados ficam no servidor
No caminho compacto, uma expressão como row.revenue-row.privateCost é avaliada no servidor. O navegador recebe o resultado exibido, não os dois operandos nem a expressão original. Condições que escolhem textos seguem a mesma regra. Campos não utilizados não viram automaticamente props do navegador.
A transformação não cria cache compartilhado entre contas nem substitui autorizações. A aplicação continua responsável por autorizar os dados exibidos. Imports, hooks, efeitos, componentes personalizados, controles interativos, HTML bruto e atributos não verificados mantêm o caminho habitual.
Um escopo deliberadamente preciso
A compilação automática vale para builds Node de produção com App Router. Desenvolvimento, Pages, Edge e saída somente HTML mantêm seu comportamento. Pipelines webpack ou JSX personalizados conservam a renderização habitual quando sua compatibilidade não é comprovada, inclusive hooks instalados por plugins. Não remova um plugin útil para aumentar a cobertura.
O arquivo .prnext/presentation-report.json explica decisões do compilador, não a proporção real de requisições compactadas. A qualificação separa uma carga compacta compatível de um SaaS PostgreSQL autenticado com seu pipeline de tradução, preservando a renderização habitual deste. Um diagnóstico de vinte minutos é diferente da campanha de duas horas.
Atualizar e verificar a aplicação
Guarde código, lockfile, configuração e implantação anteriores para reversão. Instale a versão, reconstrua a aplicação e reinicie os workers com versões iguais do framework e do pacote nativo. Trocar arquivos sob um processo ativo não atualiza o código carregado.
Para comparar sua aplicação, defina presentationComponents: false em prnext.config.mjs e reconstrua as duas variantes. Verifique hidratação, navegação, troca de conta, formulários, cancelamento de streams e uma aba aberta durante implantação e reversão. Mutações obsoletas devem ser recusadas sem repetição automática. O PRNext continua alpha, com compatibilidade parcial com Next.js: o resultado da sua aplicação é o que importa.
npm install @thomas.f/prnext@0.1.22-alpha
npx --no-install prnext check --production --json
npx --no-install prnext build