You’ve been writing code for 24 years and you don’t know that clickable links are a terminal emulator feature and not a Claude Code feature? Or that “markdown formatting” is just ansi escape codes, and possible with things other than React that don’t bring so many downsides?
Correctly emitting the right escape codes at the right positions is arguably very much a Claude Code "feature", as it is on CC to do so.
Claude Code is able to hyperlink any kind of text, not just the native terminal emulator feature of hyperlinking anything starting with https://...
And your "it's just ANSI escape codes" is the weirdest take on any kind of software.
Formatted hyperlinks are an escape code too. It has nothing to do with React.
Not sure why you’re trying to bring up experience as a justification for using React to render a tui and all the downsides that come with that.
It sounds like you completely missed the point I was making: that actually implementing such a highly dynamic TUI application normally requires a significant amount of state tracking and it is significantly easier to write such apps using a functional, descriptive UI framework instead of something like ncurses.
Take it from someone who, in those 24 years, has written UIs in jquery, react and ncurses (and yeah I've tried out Ink and it's great).
"all the downsides that come with that" yeah well, while you're stuck implementing your app in the Best Possible Library, millions of people are happy using claude code and it's crazy useful.
There are fantastic TUI frameworks for Rust, like Ratatui[0] (there are a lot more options, this is an example). You can write beautiful TUIs in native languages, without ncurses or C or C++.
Go has such frameworks, same with C# (which you can AOT compile) and so on. You're not stuck between javascript and C.
[0]: https://ratatui.rs/
Yes I also used Bubbletea. I don’t know about ratatui but honestly I think the hate for react is very blind. It’s not like CC is shipping an embedded web browser. It’s a framework on top of an embedded language that has seen a crazy amount of optimisation.
CC is not even that complex of a TUI. It’s certainly not as complex as many of the GUI programs I use daily. And yet it’s by far the buggiest and worst performing. I don’t understand the desire to make excuses for this. The reason people use it is because it’s the only way they can afford to use Opus and Fable. If Anthropic let people use their subs with other harnesses their market share would plummet.
If they could migrate an entire runtime to Rust why can’t they migrate CC? It’s not as if React is the only way to do declarative UI.