Skip to content
Developers World
← All articles
Embedded9 min read · March 18, 2026

Rust on ESP32, after two years in production

What's improved, what's still rough, and the patterns that have held up across three shipping products.

Muhammad Zakir
Muhammad Zakir
Co-founder & CTO
Rust on ESP32, after two years in production

What's gotten dramatically better

Two years ago we started a small experiment: take a project that would normally have shipped in C++ and write it in Rust. Today we've shipped three products on the ESP32 family in Rust and the tooling has gone from "exciting" to "stable."

What's still rough

Toolchain installation is mostly fine, but you'll hit edge cases on Windows. Some IDF features still trail the C/C++ APIs. And the async runtime story is converging but not boring yet.

Patterns that held up

  • Static allocation everywhere. We don't dynamically allocate on the device after init.
  • Type-state for hardware peripherals. Catches whole categories of "you forgot to init" bugs at compile time.
  • A common HAL crate across products. Move device-specific code to the bottom of the stack.

We won't be going back.

#Rust#Embedded#ESP32
Share

Working on something interesting?

If this resonated, you might enjoy talking with us.