Ratatui 0.30.1 adds shadows, filled charts, finer cell diffing
Shadows, filled charts, and finer buffer diffing make Ratatui 0.30.1 a visible upgrade for TUIs, from better modals to less glitchy OSC 8 links.

Ratatui 0.30.1 turned a patch release into something you can feel the next time you ship a terminal app. Blocks can now draw shadows, Canvas and Chart can render filled areas, and the buffer diffing path got sharper control through CellDiffOption, which means cleaner repaints and fewer visual oddities in real dashboards, CLIs, and modal-heavy tools.
The headline change is not abstract. Block::shadow(...) now gives widget authors shadow presets with configurable symbols, colors, and offsets, so popup panes and floating dialogs get actual depth instead of looking like flat rectangles on the same grid. Canvas gained FilledLine support, while Chart added GraphType::Area and Dataset::fill_to_y(f64), which makes trend lines show volume and shape instead of just tracing a path across the screen. Ratatui, which describes itself as a crate for cooking up terminal user interfaces in Rust, has always aimed at command-line applications, dashboards, and interactive console programs. This release pushes those use cases closer to the polished side of the spectrum.
The most technical upgrade sits in the repaint logic. CellDiffOption now exposes four modes: None, Skip, ForcedWidth(width), and AlwaysUpdate. That matters because ANSI and OSC escape sequences can make the bytes stored in a cell diverge from what the user actually sees, and naive equality checks miss that mismatch. The release notes point to tui-link as a concrete case, where OSC 8 hyperlinks need ForcedWidth to keep rendered width aligned with visible text. The earlier Cell::skip bool remains as a deprecated compatibility path, but CellDiffOption is the API Ratatui is moving toward.

Ratatui’s maintainers had already framed the release as a patch, not a minor jump, during a March 23 GitHub discussion. They said there were no breaking changes, wanted to stay within semver, and noted that the patch would also fix a regression introduced in 0.30.0. That bigger 0.30.0 release had already reorganized the crate into a modular workspace, added no_std support, introduced ratatui::run(), and expanded widgets and layout, so 0.30.1 lands on top of a much more serious architectural shift than a simple bugfix cycle.
The release also adds multi-column Table cells, another practical win for anyone building dense terminal interfaces. Put together, the new shadows, filled charts, and finer diffing controls make Ratatui less about merely drawing boxes and more about building TUIs that look deliberate, repaint cleanly, and hold up under real daily use.
This article was produced by Prism’s automated news system from verified source data, official records, and press releases, then run through automated quality and moderation checks before publishing. The system is built and supervised by the people who set the standards it runs under. Read our full AI policy.
Did this article answer your question?


