Frequently Asked Questions

When Will the Book Be Finished?

Soon™. Open source is a gift; so whenever I feel like it.

How Do I Scale a Large Application?

You split your application into multiple screens, and then use simple composition.

The Pocket Guide has a specific section that showcases this approach.

How Can My Application Receive Updates From a Channel?

You can use Task::run to generate messages from an asynchronous Stream.

Alternatively, if you control the creation of the channel; you can use Subscription::run.

Does Iced Support Right-To-Left Text and/or CJK scripts?

Not very well yet!

You may be able to render some scripts using Text::shaping with Shaping::Advanced, but text editing for these scripts is not yet supported; and neither are Input Method Editors.

These features are in the ROADMAP, however!

When Are the view and subscription Functions Called?

After every batch of messages and update calls. But this is an implementation detail; and should never rely on this.

Try to treat these functions as declarative, stateless functions.

Does Iced Redraw All the Time?!

Yes! iced currently redraws after every runtime event; including tiny mouse movements.

There are plans to redraw less frequently by detecting widget state changes, but performance has not been a priority so far.

The renderers do perform quite a lot of caching; so redrawing is quite cheap. As a result, this is rarely an issue for most use cases!

I Am Getting A Panic Saying There Is No Reactor Running. What Is Going On?

You are probably using Task to execute a Future that needs the tokio executor:

there is no reactor running, must be called from the context of a Tokio 1.x runtime

You should be able to fix this issue by enabling the tokio feature flag in the iced crate:

iced = { version = "0.13", features = ["tokio"] }