Home / Claude Code / Claude Code Sem Flicker: O Modo Fullscreen Que Deveria Ter Existido Desde o Início

Claude Code Sem Flicker: O Modo Fullscreen Que Deveria Ter Existido Desde o Início

Claude Code Sem Flicker — O Modo Fullscreen Que Deveria Ter Existido Desde o Início

Se você usa Claude Code no dia a dia, sabe do que eu tô falando. Aquele flicker maldito. A tela piscando toda vez que o Claude processa algo. O scroll pulando pro topo sozinho. A sensação de que você tá usando uma ferramenta de 2024 num terminal de 1985.

Na minha experiência com 300+ software houses, essa era a reclamação número um dos devs que eu convencia a adotar Claude Code. Não era o preço. Não era a qualidade do código. Era o flickering. O cara abria a ferramenta, via a tela piscando como se tivesse curto-circuito, e fechava. “Isso aqui parece bugado.” E pronto — você perdeu o dev.

Agora, finalmente, a Anthropic resolveu. De verdade. E a solução é mais elegante do que eu esperava.

O que é o Fullscreen Rendering

O Fullscreen Rendering é um modo alternativo de renderização do Claude Code, lançado na versão v2.1.88 (30 de março de 2026). Quando ativado, ele faz o Claude Code funcionar como o vim ou o htop — assumindo a tela inteira do terminal usando o alternate screen buffer.

Na prática, isso significa:

  • Zero flicker — a tela não pisca mais, ponto final
  • Memória flat — o uso de RAM não cresce conforme a conversa fica longa
  • Suporte completo a mouse — click, drag, scroll, seleção de texto
  • Input fixo no fundo — a caixa de texto fica parada no lugar, não fica subindo e descendo

Antes, o Claude Code renderizava no scrollback normal do terminal. Cada atualização exigia redesenhar tudo — e “tudo” numa sessão longa significava centenas de linhas sendo reescritas dezenas de vezes por segundo. O resultado? Flicker. Scroll pulando. Tela piscando. Caos visual.

O fullscreen mode resolve isso desenhando apenas o que está visível na tela. Se uma mensagem saiu da viewport, ela não é renderizada. Simples assim.

Como ativar

Uma variável de ambiente. É só isso:


CLAUDE_CODE_NO_FLICKER=1 claude

Pra deixar permanente, adiciona no seu ~/.zshrc ou ~/.bashrc:


export CLAUDE_CODE_NO_FLICKER=1

É opt-in porque é um research preview — a Anthropic quer feedback antes de tornar padrão. E eu entendo: como vou mostrar daqui a pouco, o fullscreen mode troca algumas coisas da UX nativa do terminal. Eles querem ter certeza que a comunidade tá de acordo com essas trocas.

O que muda na prática

Vou ser direto: o fullscreen mode é melhor em quase tudo. Mas tem diferenças que você precisa conhecer:

O que você ganha

Mouse completo. Isso sozinho já vale a ativação. Clica num tool result colapsado pra expandir. Clica de novo pra recolher. Clica num URL pra abrir no browser. Clica e arrasta pra selecionar texto — ele copia automaticamente pro clipboard quando você solta o mouse.

Scroll real. Use a rodinha do mouse ou PgUp/PgDn pra navegar pela conversa. Se o scroll tá lento, configure:


export CLAUDE_CODE_SCROLL_SPEED=3

Aceita valores de 1 a 20. O 3 equivale ao padrão do vim.

Busca estilo less. Pressione Ctrl+O pra entrar no transcript mode, depois / pra buscar. n e N pra ir pro próximo/anterior. j/k pra scroll linha a linha. g/G pra topo/fundo. É exatamente como navegar num less ou vim.

Input fixo. A caixa de texto fica grudada no fundo da tela. Não pula, não some, não fica se reposicionando enquanto o Claude está trabalhando.

O que muda

Cmd+F não funciona mais (no terminal). Como o conteúdo agora vive no alternate screen buffer, o find nativo do terminal não enxerga a conversa. A solução: Ctrl+O/ pra buscar dentro do Claude, ou Ctrl+O[ pra despejar a conversa no scrollback nativo e usar Cmd+F normalmente.

Seleção de texto é pelo Claude Code, não pelo terminal. Click-and-drag seleciona dentro do app, e copia automaticamente no release do mouse. Se você precisa da seleção nativa do terminal (especialmente via SSH ou tmux copy mode), desativa só o mouse:


CLAUDE_CODE_NO_FLICKER=1 CLAUDE_CODE_DISABLE_MOUSE=1 claude

Você mantém o flicker-free e a memória flat, mas perde click-to-expand, click em URLs e scroll via mouse wheel. Scroll por teclado (PgUp/PgDn) continua funcionando.

Por dentro do rendering — por que demorou tanto

Esse é o ponto que mais me fascinou. Um engenheiro da Anthropic explicou no Hacker News que o Claude Code funciona internamente como “um pequeno game engine”. O pipeline de renderização é:


React scene graph → layout de elementos → rasterize para tela 2D → diff contra tela anterior → gerar sequências ANSI

Tudo isso num budget de ~16ms por frame (~5ms só pro rendering). É o mesmo tipo de desafio que um jogo roda — com a diferença de que não existe GPU aqui, é tudo text-mode puro.

O problema fundamental era o scrollback. Diferente do Neovim ou do Codex (que usam alternate screen sem scrollback), o Claude Code preservava o histórico de scroll do terminal. E não existe forma de atualizar incrementalmente o scrollback num terminal — cada mudança exige redesenhar tudo. Daí o flicker.

A primeira tentativa da Anthropic foi reescrever o renderer do zero com differential rendering: em vez de redesenhar tudo, comparar célula por célula e emitir apenas as sequências ANSI necessárias. Resultado: 85% menos flicker. Mas não zero.

Além disso, eles contribuíram patches upstream no terminal do VSCode e no tmux para suportar DEC mode 2026 (synchronized output) — que elimina o flicker por completo quando o terminal suporta.

Mas o fullscreen mode é a solução definitiva: ao usar o alternate screen buffer, o Claude Code simplesmente não precisa mais brigar com o scrollback. Só renderiza o que tá na tela. Memória flat. Zero flicker. Problema resolvido na raiz.

Por que isso importa pra sua Software House

Parece cosmético, né? “Ah, é só um flickerzinho.” Não é.

Na minha experiência, a adoção de ferramentas de IA numa SH depende 80% da primeira impressão. Se o dev abre o Claude Code e vê a tela piscando, o julgamento já foi feito: “isso aqui é instável”. Não importa se o código gerado é impecável. Não importa se economiza 3 horas por dia. A primeira impressão manda.

Isso era tão sério que tinha issues no GitHub com centenas de comentários reclamando do flicker. O time da Anthropic foi criticado por meses de silêncio sobre o problema. No Hacker News, a comunidade questionava a própria escolha de JavaScript/React/Ink pra construir uma TUI — “TUI development is a lost art”, escreveu um comentário que viralizou.

Para quem roda Claude Code em VSCode (terminal integrado), tmux, ou iTerm2 — que é basicamente todo dev em SH — o flicker era especialmente brutal. São justamente os ambientes onde o throughput de renderização do terminal é o gargalo.

Agora, com uma única variável de ambiente, você resolve isso. E se você tá montando o setup de IA da sua SH, minha recomendação é ativar o fullscreen mode por padrão no onboarding de todo dev que vai usar Claude Code. Adiciona no .zshrc do template da máquina e pronto:


export CLAUDE_CODE_NO_FLICKER=1
export CLAUDE_CODE_SCROLL_SPEED=3

Dois export que vão evitar que seus devs formem opinião negativa antes de dar chance pra ferramenta.

Sessões longas sem estourar RAM

Outro ponto crítico pra SHs: o fullscreen mode mantém a memória flat independente do tamanho da conversa. No modo antigo, conversas longas acumulavam tudo no scrollback do terminal — e em máquinas com menos RAM, isso causava lentidão progressiva. Em casos extremos documentados na comunidade, um bug no Ghostty chegou a consumir 37GB de memória numa sessão pesada do Claude Code.

No fullscreen mode, apenas as mensagens visíveis ficam na árvore de renderização. O resto é descartado do render. Isso significa que uma sessão de 4 horas tem o mesmo footprint de memória que uma sessão de 4 minutos.

Para SHs que rodam Claude Code em workflows pesados — agent teams em paralelo, refatorações de monorepo, debugging de produção — isso é fundamental.

tmux: funciona, com um detalhe

Se sua SH padroniza tmux (e deveria), o fullscreen mode funciona — mas o scroll via mouse precisa do mouse mode ativado. Se você não tem isso no seu ~/.tmux.conf:


set -g mouse on

Adicione. Sem isso, os eventos do mouse vão pro tmux em vez do Claude Code. O scroll via teclado (PgUp/PgDn) funciona de qualquer jeito.

Uma exceção importante: se você usa iTerm2 com tmux -CC (integration mode), não ative o fullscreen. Nesse modo o iTerm2 renderiza cada pane como split nativo, e o alternate screen buffer não funciona direito — mouse wheel para de funcionar e double-click pode corromper o estado do terminal. O tmux normal (sem -CC) dentro do iTerm2 funciona perfeitamente.

O que eu penso

Eu esperava por isso há meses. E confesso que me surpreendeu ser opt-in em vez de padrão. Mas entendo: a Anthropic tá sendo cautelosa. O Cmd+F que não funciona direto, a seleção de texto que muda de comportamento — essas são trocas reais. Tem dev que vai estranhar.

Mas na minha opinião? Deveria ser o padrão. O transcript mode com busca / é superior ao Cmd+F em quase todo cenário. A seleção com auto-copy é mais rápida que select → Cmd+C. E o fato de a memória ficar flat é um benefício silencioso que você só percebe quando uma sessão longa de 3 horas não trava sua máquina.

Se eu tivesse que apostar, digo que em 2-3 versões isso vira padrão. A Anthropic já mostrou que sabe fazer a transição — e o diferential renderer que eles fizeram antes já resolveu 85% do problema pro modo legado. O fullscreen é o passo final.

Conclusão

O flickering era o calcanhar de Aquiles do Claude Code. Era a coisa que fazia dev experiente descartar a ferramenta em 30 segundos. Uma variável de ambiente resolve isso agora. Sem desculpa.

Se você lidera uma software house e seus devs usam Claude Code — ou se você tá tentando convencer eles a usar — CLAUDE_CODE_NO_FLICKER=1 é a primeira coisa que você configura. Antes de ensinar prompt engineering, antes de montar CLAUDE.md, antes de configurar MCP. Porque se a tela fica piscando, ninguém vai ficar tempo suficiente pra ver o resto.

Sou Thulio, mentoro 300+ SHs desde 2016.

Marcado:

Deixe um Comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *