Are we GUI Yet?

The state of building user interfaces in Rust.

The roots aren't deep but the seeds are planted.

As a low level language, Rust is perfectly suitable for making user interfaces the old fashioned way, with native APIs. However, competing in today's world typically means supporting many platforms, and that makes using native APIs an unattractive option for many.

Rust's expressiveness and high level abstractions make it ideal for building intricate and complex user interfaces. Unfortunately, there is little consensus on what the best abstractions are.

There are a number of bindings available today to existing frameworks, but those looking for a mature, easy to use, and completely Rust-based solution will most likely find themselves out of luck.

Current approaches to building GUIs in Rust include interfacing with Electron and building GUIs with HTML (or a framework on top of it), while others have taken to using graphics APIs and various wrappers to emulate classical widgets. The cross platform parallel rendering engine Webrender, built for Servo and usable in Firefox Nightly, takes this latter approach and is multi-platform, but is more of a base for a GUI framework than one in itself.

Stay in the loop.

If you're working on or writing about GUIs in Rust, please contribute! Each news entry can either be a post contributed to the repo or a link back to your blog, Reddit thread, etc. See README for details.

Here are also some popular and recommended community links submitted to the site:

Slint 1.0 - Rustacean Station Podcast by Tobias Hunger

Bay Area Rust May 2023: Raph Levien on Xilem Vector Graphics by Raph Levien

A Proposal for an asynchronous Rust GUI framework by John Nunley

Here are the most recent posts on AreWeGuiYet:

#Rust2019 Are We GUI Yet? by Dustin Bensing

See more posts


Select a tag (or tags) below to only show relevant crates. All crates will be shown when no tags are selected.

  • Bindings
  • CSS
  • Embedded
  • FLTK
  • GTK
  • HTML
  • Immediate mode API
  • MacOS
  • QML
  • Qt
  • WebGPU
  • WebRender
  • WinApi
  • iOS
  • piet
  • proc-macro
  • winit