Skip to content
AI Primer
release

Claude Code 2.1.90 adds NO_FLICKER fullscreen renderer

Claude Code 2.1.90 adds an experimental NO_FLICKER fullscreen renderer with mouse support and virtualized scrolling. The release also fixes rate-limit loops and resume regressions, so update if you want the new UI while watching for selection and table-rendering bugs.

4 min read
Claude Code 2.1.90 adds NO_FLICKER fullscreen renderer
Claude Code 2.1.90 adds NO_FLICKER fullscreen renderer

TL;DR

You can read the docs, skim the full v2.1.90 release notes, and compare the live demos in Anthropic's launch clip and Wes Roth's walkthrough. The odd bit is timing: the renderer officially appeared in v2.1.89, then 2.1.90 landed less than a day later with cleanup work, onboarding, and safety fixes that make the new UI easier to live with.

Fullscreen rendering

Anthropic is calling the mode "fullscreen rendering," but the docs mean fullscreen in the vim sense, not a maximized window. The app takes over the terminal drawing surface, pins the prompt at the bottom, and replaces the old scrollback-heavy rendering path with a virtual viewport.

According to Cherny's explanation, Claude Code now hooks keyboard and mouse events directly and virtualizes the visible viewport. The official docs add the practical claim: only visible messages stay in the render tree, so conversation length stops driving memory growth.

Alternate screen buffer tradeoffs

The big architectural choice is the terminal's alternate screen buffer, the same trick used by vim, htop, and other TUIs. That buys smoother redraws, in-app scrolling, clickable URLs, click-to-expand tool output, and auto-copy text selection, according to the fullscreen docs.

It also changes a few muscle-memory defaults:

  • Cmd+f and tmux search stop seeing the conversation until you enter transcript mode and write it back to native scrollback.
  • Mouse selection becomes app-managed, not terminal-managed.
  • Wheel scrolling depends on terminal mouse reporting, and Anthropic added CLAUDE_CODE_SCROLL_SPEED because some terminals emit one notch at a time.
  • CLAUDE_CODE_DISABLE_MOUSE=1 keeps the flicker-free renderer but gives native text selection back.

2.1.90's cleanup pass

The renderer announcement got the attention, but 2.1.90 is mostly a cleanup release. ClaudeCodeLog's changelog thread and the official v2.1.90 release notes list three buckets of changes.

  • Onboarding: /powerup adds interactive lessons with animated demos.
  • Correctness: auto mode now respects explicit boundaries, --resume no longer forces a first-request prompt-cache miss for deferred tools and custom agents, and the rate-limit dialog loop no longer crashes sessions.
  • Performance and safety: large SSE frames now process in linear time, long SDK transcripts avoid quadratic slowdowns, and PowerShell permission checks were hardened against several bypass and hang cases.

The pace is also notable. ClaudeCodeLog's metadata post measured less than 24 hours between 2.1.89 and 2.1.90, plus another 1,018 prettified lines and 14 prompt-file changes.

Early rendering bugs

The fastest feedback came from Will McGugan, who builds Textual. His first pass praised the decision to go full TUI, then immediately pointed out broken table wrapping.

He followed with a screenshot in a second post showing style highlights leaking onto table borders, and a resize demo where text selection stays in screen coordinates after the window changes size. On GitHub, issue #42297 reported mouse-wheel events being dumped into the input field as raw control data in Ghostty. Those bugs are exactly the kind of weird terminal-state problems you only find once people start dragging, resizing, and scrolling for real.

Further reading

Discussion across the web

Where this story is being discussed, in original context.

On X· 3 threads
TL;DR1 post
Fullscreen rendering1 post
Claude Code 2.1.901 post
Share on X