September 16, 2026 by Slint Developers

Slint 1.18 Released Blog RSS


We're happy to announce Slint 1.18. This release focuses on quality-of-life improvements.

Better Performance

Update to 1.18 and benefit from a Slint compiler that generates leaner code, which compiles faster and produces smaller binaries. Rendering and editing large amounts of text is now much faster, while the Windows Node.js port benefits from the enhanced event loop integration its macOS and Linux brethren have been enjoying since 1.17.

Layouts and Stacking

You can now benefit from an entirely new layout type. Welcome FlexboxLayout. Depending on your perspective, the beloved or infamous layout system from the web comes to Slint, bringing a familiar API, wrapping items, and many other goodies.

Big thanks to @dfaure-kdab for making this happen.

Tags wrapping over multiple lines in a FlexboxLayout

Alongside this comes the long-awaited ability to change the z-order of items at run time.

Five overlapping cards; each one in turn lifts and moves in front of its neighbors

Our UX designer claims that along with last release's cross-axis-alignment these features have changed his life. We hope they enhance your ability to develop and maintain complex Slint based UIs.

Better Animation

Ever felt that the animations on your phone feel better than the animations in your app, but couldn't pinpoint why? Enter spring animations. A staple of mobile phones for years, this complement to the existing range of fixed easing curves could be the solution to animations that look and feel just right. We recommend you try them with spring(0.0) which is the default you may unknowingly be used to for many everyday moves and fades.

Two dots chasing the same moving target: the one with spring easing overshoots and settles back, while the one with ease-in-out easing arrives without overshooting

Not everyone wants to animate directly between point A and B. We have now made it easier to animate and orientate items as they move along a path.

An arrow following a curved path, rotating to match the direction of travel

Language Evolution

Add and remove items from .slint itself: push, remove, and insert on arrays and models, with matching Model APIs in every language binding. Struct fields used to default to their type’s default value, e.g. false for bool. But often that wasn't the default you wanted for your own structs, forcing you to set the correct value every time you used them. Now they can be given a default value that fits your API, removing the boilerplate needed to set the right starting values.

Have you found yourself wanting to feed mock data to your app or components during development without the pain of getting everything from the real app? This now becomes simpler with Platform.uses-mock-data: a constant that is true when the file is shown in the live-preview or viewer.

Other Fixes and Improvements

But wait, there's more:

  • Experimental Vello renderer: a new renderer built on Vello, behind the renderer-vello Cargo feature and CMake option. Select it with the BackendSelector API, or with SLINT_BACKEND=winit-vello or SLINT_BACKEND=linuxkms-vello.
  • Move the window from your own title bar: in an application that draws its own decorations with no-frame: true, the WindowMoveArea element turns a region of your UI into a handle for moving the window.
  • Screen readers read text inputs: assistive technologies now see the content and the selection of a text input. Thanks to Arnold Loubriat!
  • Language server: renaming a Slint property or callback now offers to also rename the corresponding accessors in your Rust or C++ code, and the import code action and auto-completion now offer structs and enums, not just components.

For the full picture, see the ChangeLog.

Getting Started with Slint 1.18

Don't forget to star us on GitHub, join our Mattermost chat, and share your projects.

Thanks

Big thanks to everyone who contributed code, fixes, or feedback. You help us make Slint better with every release.

@0x6e @ahayzen-kdab @amirHdev @badicsalex @DataTriny @dfaure-kdab @eira-fransham @farmaazon @flukejones @GrandAdmiralBee @greg-hellings @hronro @ImFeH2 @janekbt @janwiwi @lasernoises @latent-9 @marcothaller @MineHighVN @Montel @nichturner @npwoods @okhsunrog @R-Cramer4 @redstrate @renatofilho @showier-drastic @task-jp @the-argus @tilladam @uAtomicBoolean @yebei199


Comments

Slint is a Rust-based toolkit for creating reactive and fluent user interfaces across a range of targets, from embedded devices with limited resources to powerful mobile devices and desktop machines. Supporting Android, Windows, Mac, Linux, and bare-metal systems, Slint features an easy-to-learn domain-specific language (DSL) that compiles into native code, optimizing for the target device's capabilities. It facilitates collaboration between designers and developers on shared projects and supports business logic development in Rust, C++, JavaScript, or Python.