One Env Variable That Makes Claude Code Smoother
Claude Code’s terminal renderer flickers when streaming. One environment variable fixes it — here’s the setup.
If you use Claude Code in the terminal, you've seen it — the screen flashes every time a response streams in. Code blocks flicker. Tables redraw. The whole output jumps as markdown gets re-parsed token by token.
There's a fix. One environment variable.
What's Happening
The default terminal renderer redraws the entire output every time it re-parses the markdown as new tokens arrive. This is especially visible with code fences, tables, and ASCII art — anything with structure that the parser has to rebuild from scratch on each token.
Boris Cherny from the Claude Code team built a completely new rendering engine that eliminates this. It's called NO_FLICKER mode — experimental, but most internal Anthropic users already prefer it over the old renderer.
Enable It
Set the environment variable CLAUDE_CODE_NO_FLICKER=1 before launching Claude Code.
If you use an alias like I do, embed it there:
# Before
alias c="claude --dangerously-skip-permissions --effort max"
# After
alias c="CLAUDE_CODE_NO_FLICKER=1 claude --dangerously-skip-permissions --effort max"Or export it globally in your .zshrc:
export CLAUDE_CODE_NO_FLICKER=1I prefer the alias approach — keeps it self-contained and easy to remove when the feature graduates from experimental.
What Changes
I tested it with complex streaming output: multi-language code blocks, ASCII architecture diagrams, dense data tables, deeply nested lists, even a Mandelbrot set in ASCII art.
Everything streamed in line-by-line without the screen flashing or jumping. Code blocks with syntax highlighting rendered smoothly. Table columns stayed aligned as they filled in. The difference is immediately noticeable.
The new renderer also adds mouse event support — clicking and scrolling work in the terminal.
Will It Break Later?
No. Once NO_FLICKER graduates from experimental and becomes the default, the environment variable gets ignored — setting something to "on" that's already "on" is a no-op. Your alias keeps working; the flag just becomes redundant.
One variable, zero risk, noticeably smoother experience. If you spend any real time in Claude Code's terminal, this is worth the 10 seconds it takes to set up.