Releases

egui 0.34.0 Brings New Font Backend, Simplified API to Rust GUI Toolkit

egui 0.34.0 swaps its font backend for Skrifa plus vello_cpu, finally unlocking font hinting, while a Ui-first API pivot retires the Context confusion that's tripped up Rust GUI devs for years.

Sam Ortega2 min read
Published
Listen to this article0:00 min
Share this article:
egui 0.34.0 Brings New Font Backend, Simplified API to Rust GUI Toolkit
Source: blog.logrocket.com
This article contains affiliate links, marked with a blue dot. We may earn a small commission at no extra cost to you.

The 28.6k-star egui project shipped version 0.34.0 on March 26, dropping its long-running ab_glyph font backend in favor of Skrifa combined with vello_cpu, a pairing that finally brings font hinting to one of Rust's most-used GUI libraries. The release also executes a deliberate API pivot the maintainers are calling "More `Ui`, less `Context`," a move that reorganizes the primary entrypoint and retires several panel APIs that have been confusing developers for years.

The font change is the one you'll feel immediately. Text rendering in egui has historically lacked hinting, the per-pixel adjustment that makes type look sharp at small sizes on standard-DPI monitors. Contributor @valadaptive authored the backend swap in PR #7694, replacing ab_glyph with Skrifa and vello_cpu to deliver hinting support and variable font axes. The changelog notes this also paves the way for color emoji support and helpers for variations like RichText::bold. A known bug with live variation changes didn't make the cut, though a draft fix is in progress.

The structural change matters as much as the font work. egui had a confusing overlap in responsibilities between Context and Ui where panels could be attached to either one, or both. The 0.34.0 release resolves this by making Ui the primary entrypoint across the board. In the eframe companion crate, App::update is deprecated in favor of App::ui, which hands you a &mut Ui rather than a &Context. The top-level Context::run becomes Context::run_ui, and viewports are given a &mut Ui throughout.

The practical payoff: Ui now derefs to Context, so every ui.ctx().input(…) call in your codebase can be flattened to ui.input(…), meaning you are much less likely to have to use naked Contexts. That single deref relationship eliminates a class of boilerplate that tripped up newcomers who couldn't figure out when to reach for ui versus ctx. Here's what the migration looks like at the app level:

// Before (0.33) fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { egui::SidePanel::left("nav").show(ctx, |ui| { /* … */ }); }

AI-generated illustration
AI-generated illustration

// After (0.34) fn ui(&mut self, ui: &mut egui::Ui) { egui::Panel::left("nav").show(ui, |ui| { /* … */ }); }

SidePanel and TopBottomPanel are deprecated, consolidated into a single Panel type. If your app uses those directly, expect deprecation warnings on upgrade but no hard breakage yet; the changelog lays out each migration step explicitly so the path is mechanical, not speculative.

egui development is sponsored by Rerun, a startup building an SDK for visualizing streams of multimodal data, which gives the project reliable upstream investment. With 28.6k GitHub stars and 2k forks, egui sits firmly in the de facto first-choice category for Rust developers who need immediate-mode UI without pulling in a C++ runtime.

If you're maintaining a live instrument panel, a game debug overlay, or an internal tooling app, the font hinting improvement and the Ui-first refactor represent the kind of change worth planning a sprint around, not just a version bump to schedule later.

Know something we missed? Have a correction or additional information?

Submit a Tip

Never miss a story.
Get Rust Programming updates weekly.

The top stories delivered to your inbox.

Free forever · Unsubscribe anytime

Discussion

More Rust Programming News