Dividir as janelas de ferramentas da shell, parar a tempestade do temporizador ocioso

Performancekamo-internal
Navios
26 de agosto de 2026 às 01:16 UTC
Autor
kamo
Enviar
40d24fc

Lote 2 da auditoria de desempenho do cliente. Como com o lote 1, nada um membro pode ver ou fazer alterações. O registro de ferramentas importou todas as dez janelas de ferramentas com entusiasmo, e ToolProviders monta o registro incondicionalmente dentro de AuthedChrome — por isso a árvore de componentes de cada janela no shell raiz de todas as 143 rotas para janelas o próprio comentário do dock diz start vazio. Medido com esbuild contra apenas as bibliotecas de fornecedores que isso puxou: React-markdown + observação-gfm + observação-math + rehype-katex + rehype-highlight (a IA bubble) é 610 KB min / 182 KB gzip, css-tree + dompurify (o modelo de mensagem editor) é 226 KB / 66 KB, e Quill é 205 KB / 60 KB — 1.016 KB minificado / 301 KB gzip do código do fornecedor sozinho, com os componentes da ferramenta em cima. Tudo foi baixado, analisado e executado durante a hidratação em cada carga de página. Duas coisas mantêm isso invisível. Os campos 'icon' permanecem ansiosos, porque ToolWindowsContext lê-los síncronamente para reinjetar o hexhead de uma janela minimizada e verifica ferramentaPlatform para a veracidade antes de permitir que uma janela para abrir em tudo ícone preguiçoso transforma ambos em falhas silenciosas, que é a classe exata de "não estourou Para cima. Esta doca já teve antes. E os pedaços são aquecidos em vez de servidos: ToolDock pré-carrega todos os dez no ocioso após a primeira pintura, então um clique nunca espera em um buscar, e ToolWindowRestore pré-carrega exatamente as ferramentas seus nomes de instantâneo antes Reproduzindo-o, para que uma janela restaurada nunca pinte cromo em torno de um corpo vazio. DateTimeDisplay armou um intervalo de 1 Hz por instância sem portão, e construiu seu dica de ferramenta de oito fusos horários — com uma formatação por linha — no corpo de renderização, quer não A dica estava aberta. Em /leads que é ~60 instâncias: 60 timers, 60 React commits por segundo, e algumas centenas de milissegundos por segundo de trabalho Intl em uma grade ninguém é A tocar. O tick está agora fechado em `isOpen , éHovered , formato , 'relative', que é precisamente onde um valor vivo é renderizado: o cabeçalho da dica, o rótulo enquanto hovered (ele troca para um contador de segunda resolução), e uma exibição relativa que tem que refresque-se. Ele também ignora o commit enquanto a aba está escondida, e re-ler o relógio quando o portão se abre — sem que catch-up o primeiro quadro pairado mostraria uma idade medida a partir de sempre que o carrapato correu pela última vez. A dica é uma função agora, então ela é construído apenas quando aberto. Os três formantes estão em cache por fuso horário. NavHighlightContext carregou o ID pairado e seu setter em um valor, então cada ponteiro entrar e deixar re-rendered cada consumidor — incluindo app/page.tsx, o 851-Line, que só chama o setter e nunca lê o ID. Varrer através de uma grade de doze-tiles são ~24 eventos, de modo que foi ~24 re-renders launchpad e todos os widgets ao vivo nele. Dividir em dois contextos: o setter é estável por usoContrato estatal para que os escritores nunca re-render, e apenas a opção wrappers que desenhar o realce ainda subscrever o ID. Deliberadamente NÃO incluído: movendo as duas folhas de estilo do ag-grid para fora do globals.css. Está. a maior vitória do render-bloqueamento na auditoria (187 KB no <head> de cada rota, incluindo /validate e /logout), mas inverte a cascata — CSS de ag-grid atualmente carrega ANTES Pré-voo do vento de cauda e depois carregaria após ele — e verificando se nada custa visível precisa de um navegador em /leades, /commerce e /settings/member/[id]. Deixado para alguém que pode olhar para ele. Verificado: tsc -- noEmit clean; todos os scripts de 8 guardas passam; 422 testes através do navegador, página, ferramentas, chat e tempo suites passar, ea suite cheia é verde, exceto por um teste pertencente ao trabalho de outra sessão em voo.

Todas as alterações

Como o que vês no transporte?

Cada uma dessas atualizações pousa automaticamente em seu espaço de trabalho. Comece grátis e veja crescer semana após semana.

Começar Livre Para SempreVer Preços