Animated gradient drains battery. Still causes ~40% WindowServer CPU with prefersReducedMotion:true (regression / #25575 not fixed)

Resolved 💬 3 comments Opened May 30, 2026 by okomarov Closed Jul 6, 2026

Summary

The continuously-animated gradient bar at the top of the Claude Code UI redraws every frame at the display refresh rate, driving high WindowServer + terminal CPU on macOS. This drains the battery very quickly and it was reported in #25575 and closed as resolved by prefersReducedMotion: true, but that setting does not disable the gradient — it only covers spinner shimmer / flash effects. Filing fresh per the note on that (now locked) issue.

prefersReducedMotion does not cover the gradient

  • Docs describe it as: "Reduce or disable UI animations (spinners, shimmer, flash effects) for accessibility."
  • The 2.1.158 binary's internal schema string is identical: "Reduce or disable animations for accessibility (spinner shimmer, flash effects, etc.)", and it is only wired into the spinner components — there is no statusBarAnimation/gradient gate.
  • With prefersReducedMotion: true set and verified loaded (fresh process started after the edit), the gradient still animates.

Measured impact (this machine, setting ON)

| | CPU |
|---|---|
| WindowServer | ~40–42% |
| iTerm2 | ~11% |

Matches #25575's reported 36–53% range. CPU returns to single digits when Claude Code is not running.

Steps to reproduce

  1. Set {"prefersReducedMotion": true} in ~/.claude/settings.json.
  2. Launch claude in iTerm2 (GPU/Metal renderer); confirm the setting is loaded.
  3. Observe the top gradient still animating; watch WindowServer in top/Activity Monitor.

Expected

A way to disable the gradient animation (e.g. a statusBarAnimationEnabled: false flag, extending prefersReducedMotion to cover it, or stopping frame submission when content is static — as Ghostty does, dropping it to 3–7%).

Environment

  • Claude Code 2.1.158
  • macOS 15.6.1 (24G90), Apple Silicon
  • iTerm2 3.6.10
  • Built-in Liquid Retina XDR (ProMotion, up to 120Hz), 3024×1964
  • Related: #25575 (closed/locked), possibly #22509

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗