claude-code - 💡(How to fix) Fix Feature: Plugin API for custom animated UI components in tool output [4 comments, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
anthropics/claude-code#52235Fetched 2026-04-24 06:12:34
View on GitHub
Comments
4
Participants
1
Timeline
4
Reactions
0
Participants
Timeline (top)
commented ×4

Plugins, skills, and tools currently cannot render animated or interactive UI elements in Claude Code's output stream. All tool/Bash output is captured and displayed as static text blocks, even when it contains valid ANSI escape sequences designed for real-time animation (cursor repositioning, frame-by-frame redraws, etc.).

Meanwhile, Claude Code's own built-in UI (the ultrathink shimmer, progress spinners, thinking indicators) demonstrates that the Ink/React rendering layer is fully capable of beautiful animated terminal output.

Root Cause

Plugins, skills, and tools currently cannot render animated or interactive UI elements in Claude Code's output stream. All tool/Bash output is captured and displayed as static text blocks, even when it contains valid ANSI escape sequences designed for real-time animation (cursor repositioning, frame-by-frame redraws, etc.).

Meanwhile, Claude Code's own built-in UI (the ultrathink shimmer, progress spinners, thinking indicators) demonstrates that the Ink/React rendering layer is fully capable of beautiful animated terminal output.

Fix Action

Fix / Workaround

Current Workaround

Code Example

{
  "type": "animated_output",
  "component": "shimmer-text",
  "props": {
    "text": "CODEX (CT-110) SESSION ESTABLISHED",
    "color": "#00FFEA",
    "animation": "wave",
    "speed": 0.25
  }
}
RAW_BUFFERClick to expand / collapse

Summary

Plugins, skills, and tools currently cannot render animated or interactive UI elements in Claude Code's output stream. All tool/Bash output is captured and displayed as static text blocks, even when it contains valid ANSI escape sequences designed for real-time animation (cursor repositioning, frame-by-frame redraws, etc.).

Meanwhile, Claude Code's own built-in UI (the ultrathink shimmer, progress spinners, thinking indicators) demonstrates that the Ink/React rendering layer is fully capable of beautiful animated terminal output.

Feature Request

Expose a plugin/tool API that allows custom Ink/React components to be rendered inline in the conversation output — not just static text blocks, but live-rendered elements that can animate, update, and respond to state changes.

Use Cases

  • Neon shimmer text effects — animated color-cycling text for banners, status displays, session headers
  • Custom progress indicators — domain-specific progress visualization (e.g., build pipelines, deployment stages)
  • Live dashboards — real-time metric displays that update in-place (CPU usage, test runner output, deploy status)
  • Interactive selection UIs — scrollable lists, confirmation prompts rendered inline
  • Animated status banners — session connection status, environment health indicators with visual flair

Current Workaround

Scripts must be run in a separate terminal tab that Claude Code doesn't control. This breaks the integrated workflow — the user has to context-switch out of the conversation to see animated output.

Proposed API Shape (Suggestion)

Something like a render tool or output type that accepts a component definition:

{
  "type": "animated_output",
  "component": "shimmer-text",
  "props": {
    "text": "CODEX (CT-110) SESSION ESTABLISHED",
    "color": "#00FFEA",
    "animation": "wave",
    "speed": 0.25
  }
}

Or more flexibly, allow plugins to register custom Ink components that can be invoked by name in tool output.

Context

Discovered while building a neon teal shimmer effect for Windows Terminal's Midnight City color scheme. The 24-bit ANSI color animation works perfectly in a raw terminal but gets captured as a 233KB static text block when run through Claude Code's tool output handler. The effect requires frame-by-frame cursor repositioning (\033[{n}A) which the output viewer doesn't execute.


Filed from Claude Code on Windows 11 Pro.

extent analysis

TL;DR

To enable animated UI elements in Claude Code's output stream, a new plugin/tool API is needed to render custom Ink/React components inline.

Guidance

  • Investigate the feasibility of introducing a render tool or output type that accepts a component definition, as proposed in the issue.
  • Explore the possibility of allowing plugins to register custom Ink components that can be invoked by name in tool output.
  • Consider the security implications of executing arbitrary ANSI escape sequences, such as cursor repositioning, in the output viewer.
  • Review the Ink/React rendering layer to understand its capabilities and limitations in rendering animated terminal output.

Example

{
  "type": "animated_output",
  "component": "shimmer-text",
  "props": {
    "text": "CODEX (CT-110) SESSION ESTABLISHED",
    "color": "#00FFEA",
    "animation": "wave",
    "speed": 0.25
  }
}

This example illustrates a potential API shape for rendering animated output.

Notes

The proposed API shape and custom Ink component registration are suggestions and may require further discussion and refinement.

Recommendation

Apply a workaround by running scripts in a separate terminal tab until a new plugin/tool API is developed to support animated UI elements. This allows for temporary mitigation of the issue while a more permanent solution is explored.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING