Dioxus: Fullstack Rust-фреймворк для web, desktop и mobile

«Напишите один раз — запустите везде» — это обещание Dioxus воплощает средствами языка Rust, обеспечивая производительность и типобезопасность на всех платформах.

Что такое Dioxus и для кого он предназначен

Dioxus — это портативный, производительный и эргономичный фреймворк для создания кроссплатформенных пользовательских интерфейсов на Rust. Он позволяет разработчикам писать код один раз и развёртывать его на нескольких платформах: web, desktop (macOS, Linux, Windows) и mobile (Android, iOS).

Dioxus был публично представлен 3 января 2022 года. В 2023 году DioxusLabs был принят в батч Y Combinator S23, что позволило перейти от студенческого сайд-проекта Джонатана Келли к полноценному стартапу с выделенной командой разработчиков.

Фреймворк рассчитан на:

  • Rust-разработчиков, желающих создавать GUI-приложения без перехода на JavaScript
  • Стартапы и предприятия, которым нужна единая кодовая база для всех платформ
  • Системных программистов, которым важны производительность и типобезопасность
ℹ Открытый исходный код
Dioxus полностью open-source (MIT/Apache 2.0), доступен на GitHub. Проект финансируется при поддержке FutureWei, Satellite.im и программы GitHub Accelerator, что позволяет команде работать над Dioxus на постоянной основе.

Архитектура и как это работает


graph TD
    A[Код на Rust + RSX] --> B[VirtualDOM]
    B --> C{Платформа}
    C --> D[Web — WASM]
    C --> E[Desktop — WebView / WGPU]
    C --> F[Mobile — iOS / Android]
    C --> G[SSR — сервер]
    D --> H[Браузер]
    E --> I[Нативное окно]
    F --> J[Мобильное устройство]
    G --> K[HTML-ответ]

Dioxus нацелен на web (через WASM), desktop (через WebView или нативный GPU), mobile (iOS/Android) и сервер (SSR/Fullstack). Он сочетает React-подобную компонентную модель с производительностью и типобезопасностью Rust.

Приложения описывают интерфейс с помощью компонентов и синтаксиса rsx!, управляемых платформенно-агностическим VirtualDom. Платформенные рендереры реализуют трейт WriteMutations для трансляции изменений VirtualDom в нативные операции каждой цели.


Ключевые возможности

1. RSX — декларативный синтаксис UI

React-подобный макрос rsx! позволяет писать UI-компоненты прямо на Rust, сохраняя типобезопасность и целостность экосистемы — без JavaScript.

fn app() -> Element {
    let mut count = use_signal(|| 0);
    rsx! {
        h1 { "Счётчик: {count}" }
        button { onclick: move |_| count += 1, "Увеличить" }
        button { onclick: move |_| count -= 1, "Уменьшить" }
    }
}

2. Кроссплатформенность из одной кодовой базы

Dioxus позволяет легко публиковать fullstack web-, desktop- и мобильные приложения из единой кодовой базы. Это быстрейший способ собрать нативное мобильное приложение на Rust: просто выполните dx serve --platform android — и приложение запустится в эмуляторе или на устройстве за секунды.

3. Горячая замена кода (Hot-patching)

Главная особенность релиза 0.7 — поддержка горячей замены Rust-кода во время выполнения (Subsecond hot-patching). Теперь можно редактировать Rust-код и видеть изменения без потери состояния приложения.

💡 Совет для разработчика
Одна команда dx serve — и приложение работает. Правьте разметку, стили и наблюдайте изменения в миллисекундах. Используйте dx serve --hotpatch для обновления Rust-кода в реальном времени.

4. Fullstack с Axum

Dioxus глубоко интегрируется с Axum, обеспечивая мощные fullstack-возможности для клиента и сервера: WebSockets, SSE, Streaming, File Upload/Download, Server-Side Rendering, Forms, Middleware и Hot-Reload.

5. Сигналы и реактивное состояние

Dioxus использует подход к управлению состоянием на основе сигналов, объединяя лучшие практики React, Solid и Svelte. Пример использования:

let name = use_signal(|| "Мир".to_string());
let greeting = use_memo(move || format!("Привет, {}!", name()));

6. Dioxus Native (WGPU-рендерер)

Dioxus Native — это WGPU-рендерер HTML/CSS для Dioxus без использования WebView. Blitz — модульный HTML/CSS-рендерер, лежащий в основе Dioxus Native, доступен для всех желающих.

7. Стилизация и CSS

Приложения Dioxus стилизуются с помощью HTML и CSS. Доступна встроенная поддержка TailwindCSS или любой другой CSS-библиотеки.

8. Документация и инструменты

Все HTML-элементы и листенеры задокументированы с привязкой к MDN docs, а документация проходит непрерывную интеграцию вместе с Dioxus, чтобы всегда оставаться актуальной.


Релизная история

Версия 0.5 вышла в марте 2024 года и принесла значительные улучшения в реактивность и кроссплатформенную поддержку. Версия 0.6 была выпущена 9 декабря 2024 года с акцентом на инструментарий fullstack-разработки для web, desktop и mobile из единой кодовой базы.

📝 Dioxus 0.7 — главное
Ключевые особенности: поддержка multi-package serve, автоматическая сборка фреймворка, hashless-ресурсы, директория /public, WASM32 fullstack — и горячая замена Rust-кода на лету.

Тарифы и цены

Dioxus — полностью бесплатный open-source проект под двойной лицензией MIT/Apache 2.0. Никаких платных планов не существует.

Долгосрочная цель команды — сделать Dioxus самоокупаемым за счёт платных высококачественных инструментов для предприятий. На июль 2026 года платные корпоративные продукты ещё не анонсированы.

УровеньСтоимостьЧто включено
Open SourceБесплатноПолный фреймворк, CLI, документация
Enterprise (в планах)TBDКорпоративная поддержка, инструменты

Плюсы и минусы

✅ Плюсы❌ Минусы
Единая кодовая база для web, desktop, mobile, SSRКрутая кривая обучения — нужно знать Rust
Производительность и типобезопасность RustЭкосистема UI-компонентов меньше, чем у React/Flutter
Горячая замена Rust-кода в реальном времени (0.7)Версия всё ещё pre-1.0, API может меняться
Глубокая интеграция с Axum для fullstackМобильная поддержка пока экспериментальная
Полностью бесплатный open-sourceНебольшой размер сообщества по сравнению с JS-фреймворками
Встроенная поддержка TailwindCSSDioxus Native (WGPU) ещё в разработке
Активная разработка и сильная командаМедленная компиляция, характерная для Rust-проектов

Сравнение с альтернативами

ПараметрDioxusLeptosTauri
Язык UIRust (RSX)Rust (HTML-like)JS/TS + Rust backend
Web (WASM)
Desktop⚠️ Ограниченно
Mobile
SSR
Virtual DOM❌ (fine-grained)N/A
Fullstack из коробки✅ (Axum)✅ (Axum)⚠️ Частично
Знание JS обязательно
GitHub Stars (июль 2026)~32K+~16K+~85K+
ЛицензияMIT/Apache 2.0MITMIT/Apache 2.0

Если нужен фреймворк, работающий везде, Dioxus вырывается вперёд: Leptos же преимущественно сосредоточен на web и SSR.

Tauri — это «более стройный и быстрый двоюродный брат Electron»: он использует web-фронтенд (HTML/CSS/JS) с Rust-бэкендом и нативным системным WebView, что идеально подходит тем, кто любит web-технологии, но хочет мощи Rust.

⚠ Важно учитывать
Если ваша цель — быстрое web-приложение без нужды в мобильной платформе, Leptos проще и зачастую быстрее. Dioxus выигрывает тогда, когда вам нужна единая кодовая база для всех платформ.

Установка и быстрый старт

# Установка CLI
curl -fsSL https://dioxuslabs.com/install.sh | bash

# Создание нового проекта
dx new my_app
cd my_app

# Запуск в браузере
dx serve --platform web

# Запуск на Android
dx serve --platform android

Dioxus предоставляет отличные инструменты для разработчиков: горячую перезагрузку, авто-форматирование и комплексный CLI, которые ускоряют разработку приложений.


Сообщество

Dioxus — проект, движимый сообществом, с очень активным Discord и GitHub-комьюнити. Поддерживаемый активным сообществом, Dioxus предлагает обширную документацию и ресурсы: разработчики могут участвовать в обсуждениях на Discord или вносить вклад в проект на GitHub.


Вердикт

Dioxus подойдёт:

  • Rust-разработчикам, желающим создавать GUI без JavaScript
  • Командам, которым нужна одна кодовая база для web + desktop + mobile
  • Проектам, где важна производительность и типобезопасность на всех уровнях
  • Тем, кто хочет fullstack Rust с нативной интеграцией Axum

Не рекомендуем, если:

  • Вы не знаете Rust и не планируете его учить
  • Нужна зрелая экосистема компонентов “из коробки”
  • Ваш проект требует стабильного, не меняющегося API (версия pre-1.0)

Рейтинг: 8.2 / 10

КритерийОценка
Функциональность9/10
Документация8/10
Простота входа6/10
Зрелость экосистемы7/10
Производительность9/10
Активность разработки9/10

Dioxus — один из самых амбициозных и технически сильных фреймворков в экосистеме Rust. Если вы готовы инвестировать время в изучение Rust, вы получите мощнейший инструмент для создания действительно кроссплатформенных приложений без компромиссов по производительности.