HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
iced-rs
iced
Rust2019–2026
iced-rs / iced

iced

A cross-platform GUI library for Rust, inspired by Elm

54Distinct people
78Mentions
1Explicit recommenders
32KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A cross-platform GUI library for Rust, inspired by Elm

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

https://areweguiyet.com/ gives a broad overview, but is slightly outdated i believe. I recommend all raph linus' research on this topic, fairly recent blog:…

qwe098cube used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year78 dated mentions

Observed mentions: 2019-09-06 19:44:00 UTC to 2026-02-14 11:12:53 UTC.

0510152019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 6 mentions; 3 submissions, 3 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 14 mentions; 2 submissions, 12 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 6 mentions; 1 submissions, 5 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 10 mentions; 2 submissions, 8 comments20222023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 11 mentions; 0 submissions, 11 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 12 mentions; 1 submissions, 11 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 17 mentions; 2 submissions, 15 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC633
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC14212
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC615
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC1028
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC11011
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC12111
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC17215
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC202

From the project README

An excerpt from the repository, fetched Nov 12, 2026.

Read the project’s introduction
Iced A cross-platform GUI library for Rust focused on simplicity and type-safety. Inspired by Elm. Features Simple, easy-to-use, batteries-included API Type-safe, reactive programming model Cross-platform support (Windows, macOS, Linux, and the Web) Responsive layout Built-in widgets (including text inputs, scrollables, and more!) Custom widget support (create your own!) Debug tooling with performance metrics and time traveling First-class support for async actions (use futures!) Modular ecosystem split into reusable parts: A renderer-agnostic native runtime enabling integration with existing systems Two built-in renderers leveraging wgpu and tiny-skia iced_wgpu supporting Vulkan, Metal and DX12 iced_tiny_skia offering a software alternative as a fallback A windowing shell Iced is currently experimental software. Take a look at the roadmap and check out the issues. Overview Inspired by The Elm Architecture, Iced expects you to split user interfaces into four different concepts: State — the state of your application Messages — user interactions or meaningful events that you care about View logic — a way to display your state as widgets that may produce messages on user interaction Update logic — a way to react to messages and update your state We can build something to see how this works! Let's say we want a simple counter that can be incremented and decremented using two buttons. We start by modelling the state of our application: #[derive(Default)] struct Counter { value: i32, } Next, we need to define the possible user interactions of our counter: the button presses. These interactions are our messages: #[derive(Debug, Clone, Copy)] pub enum Message { Increment, Decrement, } Now, let's show the actual counter by putting it all together in our view logic: use iced::widget::{button, column, text, Widget}; impl Counter { pub fn view(&self) -> impl Widget<Message> { // We use a column: a simple vertical layout column![ // The increment button. We tell it to produce an // `Increment` message when pressed button("+").on_press(Message::Increment), // We show the value of the counter here text(self.value).size(50), // The decrement button. We tell it to produce a // `Decrement` message when pressed button("-").on_press(Message::Decrement), ] } } Finally, we need to be able to react to any produced messages and change our state accordingly in our update logic: impl Counter { // ... pub fn update(&mut self, message: Message) { match message { Message::Increment => { self.value += 1; } Message::Decrement => { self.value -= 1; } } } } And that's everything! We just wrote a whole user interface. Let's run it: fn main() -> iced::Result { iced::run(Counter::update, Counter::view) } Iced will automatically: Take the result of our view logic and layout its widgets. Process events from our system and produce messages for our update logic. Draw the resulting user interface. Read the book, the documentation, and the examples to learn more! Implementation details Iced was originally born as an attempt at bringing the simplicity of Elm and The Elm Architecture into Coffee, a 2D game library I am working on. The core of the library was implemented during May 2019 in this pull request. The first alpha version was eventually released as a renderer-agnostic GUI library. The library did not provide a renderer and implemented the current tour example on top of ggez, a game library. Since then, the focus has shifted towards providing a batteries-included, end-user-oriented GUI library, while keeping the ecosystem modular. Contributing / Feedback If you want to contribute, please read our contributing guidelines for more details. Feedback is also welcome! You can create a new topic in our Zulip forum or come chat to our Discord server. Sponsors The development of Iced is sponsored by the Cryptowatch team at Kraken.com
Read the full README on GitHub

What Hacker News says

78 sources
I created a version of [Copenhagen Hnefatafl](https://hnefatafl.org/history.html). It includes an engine, server, client, and AI. It is built in Rust. The server runs over TCP with a custom protocol that uses [RON](https://github.com/ron-rs/ron) for serialization along with plain text. A single line is a message. The client is built with [iced](https://github.com/iced-rs/iced), so it is a desktop and mobile application, not a browser application. The client has many features and is translated into many languages. It also supports hotkeys for everything that iced supports. One feature is to review games. You can play out whatever variations you please and use AI to suggest moves. After completing a game it is saved on the server and to review it you just click "Get Archived Games". You can identify the game by its ID. I am looking for more
Read the rest
people to play. I support real time games with a short time to play and longer games that take place over days. If you're interested in AI help with that would also be appreciated. I'm currently thinking I will not work on it more until [burn](https://github.com/tracel-ai/burn) gets support for reinforcement learning. Any suggestions or comments are welcome, thanks!
In Hnefatafl
rekireki·Dec 22, 2025Submission

Build Android apps using Rust and Iced

Some time ago I decided to try building an Android app using Rust. After a few weeks I got it working. There was a new iced release recently, so I've just updated the example to new iced and wgpu. I'd like to share my experience to attract more attention to Rust on Android. First things, I want to thank all the people who work on the foundational crates and tools such as: - https://github.com/rust-mobile/android-activity - https://github.com/jni-rs/jni-rs - https://github.com/gfx-rs/wgpu - https://github.com/rust-windowing/winit - and many others When I started I had to learn what tools and examples already exist. Luckily, there's a good set of examples using both NativeActivity and GameActivity: https://github.com/rust-mobile/rust-android-examples The basic approach is that we take android-activity, winit and wgpu and that's it. On top o
Read the rest
f that you can find a few egui examples in the rust-android-examples repo. Alright, so after I've got the basic examples running, I wanted to combine them with iced. Iced is a crossplatform gui library focusing on desktop and web. The mobile support is explicitly a non-goal, as far as I can tell at the moment of writing. Yet, there's an issue where some people posted their experiments. That's how I knew it was possible: https://github.com/iced-rs/iced/issues/302 There's a way to integrate iced in wgpu applications, so called integration example: https://github.com/iced-rs/iced/tree/0.14.0/examples/integra... Above I mentioned that using winit and wgpu in combination with android-activity is enough to build the app. Putting together 1 + 1 I got 2: let's use iced integration example with android-activity. It was quite easy to compile with almost no errors. First issue I encountered is that there was no text rendered. I solved this by loading fonts the way it was shown here: https://github.com/pop-os/cosmic-text/issues/243#issue-21899... Then I patched a few widgets to add touch support. And that's it. My role here was to take all the prior work and combine it together in a way that there's a working example. Some other ways of building Android apps using Rust: - xilem has an explicit goal to support mobile https://github.com/linebender/xilem - egui supports mobile https://github.com/emilk/egui - game engines such as Fyrox and Bevy support mobile: - https://github.com/FyroxEngine/Fyrox - https://github.com/bevyengine/bevy - pretty much anything built on top of winit and wgpu All of the above is related to building native apps using either NativeActivity or GameActivity. I'm leaving webview out of scope of current post. What about iOS? As far as I know it should be similar or maybe simpler compared to Android. I haven't built it yet, but the next time I have a sizeable amount of free time, I'll try to make it work. The plan is the same: pick winit, wgpu, iced integration example, mix it together until it works. It'll require the same trick to load fonts, and maybe something else, but no visible blockers as of now. Once again, thanks to all the people who made it possible and I wish you have a great time building mobile apps with Rust!
173 points · Open discussion
You're right, unfortunately, don't have a good iced-specific list, so left it out, but here a few things: startup is blazingly slow (one of the big issues of all those awful electron apps which the native frameworks can supposedly avoid), https://github.com/iced-rs/iced/issues/2455 https://github.com/iced-rs/iced/issues/615. Or high memory use, another fatal flaw of all those electron apps https://github.com/iced-rs/iced/issues/820 Or window can't be centered (while this is basic, it's in a bit of a blame-the-broken-Wayland niche https://github.com/iced-rs/iced/issues/1287) Or lack of accessibility https://github.com/iced-rs/iced/issues/552 Or poor keybinding support (though in the case of iced I see it's somewhat improved in this release with some IME support and non-latin https://github.com/iced-rs/iced/pull/3134, so don't know exactly
Read the rest
what's left broken) The there are non-runtime issues like lack of documentation
In Iced 0.14 has been released (Rust GUI library)
I'd love to test this, however it seems to not be accessible with screen readers. I assume this is because of the GUI library not supporting accessibility. I found an open issue about this on the Iced GitHub where in 2024 it was mentioned that the version after next should support it, and the last comment was in february of this year (https://github.com/iced-rs/iced/issues/552) I bookmarked this so hopefully once that effort gets further along I can give it a try! I figured I'd leave this comment so that some folks can see that there are real people even on HN who require these features and that accessibility work is always appreciated. We definitely exist :)
In Show HN: Halloy – Modern IRC client

Showing the 15 most recent of 78 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.