Build for web, desktop, and mobile, and more with a single codebase. Zero-config setup, integrated hotreloading, and signals-based state management. Add backend functionality with Server Functions and bundle with our CLI.
@@ -79,42 +86,46 @@ fn app() -> Element {
- Cross-platform apps in three lines of code (web, desktop, mobile, server, and more)
- [Ergonomic state management](https://dioxuslabs.com/blog/release-050) combines the best of React, Solid, and Svelte
-- Extremely performant, powered by Rust's fastest wasm-framework [sledgehammer](https://dioxuslabs.com/blog/templates-diffing)
+- Type-safe Routing and server functions to leverage Rust's powerful compile-time guarantees
- Integrated bundler for deploying to the web, macOS, Linux, and Windows
-- And more! Read the [take a tour of Dioxus](https://dioxuslabs.com/learn/0.5/).
+- And more! [Take a tour of Dioxus](https://dioxuslabs.com/learn/0.6/).
## Instant hot-reloading
-With one command, `dx serve` and your app is running. Edit your markup and styles and see the results in real time. Rust code hotreloading is not yet 1st class, but possible with [hot-lib-reloader](https://docs.rs/hot-lib-reloader/latest/hot_lib_reloader/).
+With one command, `dx serve` and your app is running. Edit your markup and styles and see the results in real time.
-
+
+
+
-## Bundler for deploying to the web and desktop
-Simply run `dx bundle` and your app will be built and bundled with maximization optimizations. On the web, take advantage of [`.avif` generation, `.wasm` compression, minification](https://dioxuslabs.com/learn/0.5/reference/assets), and more. Build webapps weighing [less than 50kb](https://github.com/ealmloff/tiny-dioxus/) and desktop/mobile apps less than 15mb.
+## First-class Android and iOS support
+
+Dioxus is the fastest way to build native mobile apps with Rust. Simply run `dx serve --platform android` and your app is running in an emulator or on device in seconds. Call directly into JNI and Native APIs.
+
+
+
+
+
+## Bundle for web, desktop, and mobile
+
+Simply run `dx bundle` and your app will be built and bundled with maximization optimizations. On the web, take advantage of [`.avif` generation, `.wasm` compression, minification](https://dioxuslabs.com/learn/0.6/guides/assets), and more. Build webapps weighing [less than 50kb](https://github.com/ealmloff/tiny-dioxus/) and desktop/mobile apps less than 15mb.
+
## Fantastic documentation
-We've put a ton of effort into building clean, readable, and comprehensive documentation. All html elements and listeners are documented with MDN docs, and our docsite runs continuous integration with Dioxus itself to ensure that the docs are always up to date. Check out the [Dioxus website](https://dioxuslabs.com/learn/0.5/) for guides, references, recipes, and more. Fun fact: we use the Dioxus website as a testbed for new diouxs features - [check it out!](https://github.com/dioxusLabs/docsite)
+We've put a ton of effort into building clean, readable, and comprehensive documentation. All html elements and listeners are documented with MDN docs, and our docsite runs continuous integration with Dioxus itself to ensure that the docs are always up to date. Check out the [Dioxus website](https://dioxuslabs.com/learn/0.6/) for guides, references, recipes, and more. Fun fact: we use the Dioxus website as a testbed for new diouxs features - [check it out!](https://github.com/dioxusLabs/docsite)
-## Emphasis on developer experience
-
-Dioxus prioritizes developer experience, and we've put a ton of effort into end-to-end tooling. We've built a [VSCode extension](https://marketplace.visualstudio.com/items?itemName=DioxusLabs.dioxus) that autoformats your RSX code, converts HTML to RSX, and more. We've also built a very powerful [CLI](https://dioxuslabs.com/learn/0.5/CLI) that supports creating new apps, serving them, and cross-platform bundling, with deployment on the roadmap.
-
-
-
-
-
## Community
Dioxus is a community-driven project, with a very active [Discord](https://discord.gg/XgGxMSkvUM) and [GitHub](https://github.com/DioxusLabs/dioxus/issues) community. We're always looking for help, and we're happy to answer questions and help you get started. [Our SDK](https://github.com/DioxusLabs/dioxus-std) is community-run and we even have a [GitHub organization](https://github.com/dioxus-community/) for the best Dioxus crates that receive free upgrades and support.
@@ -134,8 +145,6 @@ Dioxus has grown from a side project to a small team of fulltime engineers. Than
Web
-
- Tier 1 Support
@@ -146,26 +155,9 @@ Dioxus has grown from a side project to a small team of fulltime engineers. Than
-
-
- Fullstack
-
- Tier 1 Support
-
-
-
-
Suspense, hydration, and server-side rendering
-
Quickly drop in backend functionality with server functions
-
Extractors, middleware, and routing integrations
-
Compatible with desktop and mobile!
-
-
-
Desktop
-
- Tier 1 Support
@@ -176,45 +168,29 @@ Dioxus has grown from a side project to a small team of fulltime engineers. Than
-
-
- Liveview
-
- Tier 1 Support
-
-
-
-
Render apps - or just a single component - entirely on the server
-
Integrations with popular Rust frameworks like Axum and Warp
-
Extremely low-latency and ability to support 10,000+ simultaneous apps
-
-
-
Mobile
-
- Tier 2 Support
Render using Webview or - experimentally - with WGPU or Skia
-
Support for iOS and Android
-
Currently quite experimental, with lots of improvements coming throughout 2024
+
Build .ipa and .apk files for iOS and Android
+
Call directly into Java and Objective-C with minimal overhead
+
From "hello world" to running on device in seconds
- Terminal
-
- Tier 2 Support
+ Server-side Rendering
-
Render apps directly into your terminal, similar to ink.js
-
Powered by the familiar flexbox and CSS model of the browser
-
Built-in widgets like text input, buttons, and focus system
+
Suspense, hydration, and server-side rendering
+
Quickly drop in backend functionality with server functions
+
Extractors, middleware, and routing integrations
+
Static-site generation and incremental regeneration
@@ -223,7 +199,7 @@ Dioxus has grown from a side project to a small team of fulltime engineers. Than
## Running the examples
-> The examples in the main branch of this repository target the git version of dioxus and the CLI. If you are looking for examples that work with the latest stable release of dioxus, check out the [0.5 branch](https://github.com/DioxusLabs/dioxus/tree/v0.5/examples).
+> The examples in the main branch of this repository target the git version of dioxus and the CLI. If you are looking for examples that work with the latest stable release of dioxus, check out the [0.6 branch](https://github.com/DioxusLabs/dioxus/tree/v0.6/examples).
The examples in the top level of this repository can be run with:
@@ -333,7 +309,7 @@ Dioxus and Electron are two entirely different projects with similar goals. Elec
## Contributing
-- Check out the website [section on contributing](https://dioxuslabs.com/learn/0.5/contributing).
+- Check out the website [section on contributing](https://dioxuslabs.com/learn/0.6/contributing).
- Report issues on our [issue tracker](https://github.com/dioxuslabs/dioxus/issues).
- [Join](https://discord.gg/XgGxMSkvUM) the discord and ask questions!
diff --git a/examples/tailwind/README.md b/examples/tailwind/README.md
index 6dca4b775..3ae18cac6 100644
--- a/examples/tailwind/README.md
+++ b/examples/tailwind/README.md
@@ -4,4 +4,4 @@ This example shows how an app might be styled with TailwindCSS.
## Running
-Our [Tailwind](https://dioxuslabs.com/learn/0.5/cookbook/tailwind) guide explains how to setup and run Dioxus-Tailwind projects.
\ No newline at end of file
+Our [Tailwind](https://dioxuslabs.com/learn/0.6/cookbook/tailwind) guide explains how to setup and run Dioxus-Tailwind projects.
diff --git a/notes/android_and_ios2.avif b/notes/android_and_ios2.avif
new file mode 100644
index 000000000..6833d9a3f
Binary files /dev/null and b/notes/android_and_ios2.avif differ
diff --git a/notes/flat-splash.avif b/notes/flat-splash.avif
new file mode 100644
index 000000000..25222cba1
Binary files /dev/null and b/notes/flat-splash.avif differ
diff --git a/notes/header-dark-updated.svg b/notes/header-dark-updated.svg
new file mode 100644
index 000000000..8e014d537
--- /dev/null
+++ b/notes/header-dark-updated.svg
@@ -0,0 +1,20 @@
+
\ No newline at end of file
diff --git a/notes/header-light-updated.svg b/notes/header-light-updated.svg
new file mode 100644
index 000000000..3ef3d28e4
--- /dev/null
+++ b/notes/header-light-updated.svg
@@ -0,0 +1,20 @@
+
\ No newline at end of file
diff --git a/notes/image-splash.avif b/notes/image-splash.avif
new file mode 100644
index 000000000..54e18720a
Binary files /dev/null and b/notes/image-splash.avif differ
diff --git a/notes/splash-header-darkmode.svg b/notes/splash-header-darkmode.svg
new file mode 100644
index 000000000..bbc382dd3
--- /dev/null
+++ b/notes/splash-header-darkmode.svg
@@ -0,0 +1,10 @@
+
diff --git a/notes/splash-header.svg b/notes/splash-header.svg
new file mode 100644
index 000000000..3ea9864d2
--- /dev/null
+++ b/notes/splash-header.svg
@@ -0,0 +1,10 @@
+
diff --git a/packages/autofmt/Cargo.toml b/packages/autofmt/Cargo.toml
index 1e6d6e6d3..29ae2d99c 100644
--- a/packages/autofmt/Cargo.toml
+++ b/packages/autofmt/Cargo.toml
@@ -7,8 +7,7 @@ description = "Autofomatter for Dioxus RSX"
license = "MIT OR Apache-2.0"
repository = "https://github.com/DioxusLabs/dioxus/"
homepage = "https://dioxuslabs.com"
-keywords = ["dom", "ui", "gui", "react"]
-# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+keywords = ["web", "desktop", "mobile", "gui", "wasm"]
[dependencies]
dioxus-rsx = { workspace = true }
diff --git a/packages/autofmt/README.md b/packages/autofmt/README.md
index 3892f33ac..4236eef15 100644
--- a/packages/autofmt/README.md
+++ b/packages/autofmt/README.md
@@ -15,7 +15,7 @@
[discord-url]: https://discord.gg/XgGxMSkvUM
[Website](https://dioxuslabs.com) |
-[Guides](https://dioxuslabs.com/learn/0.5) |
+[Guides](https://dioxuslabs.com/learn/0.6) |
[API Docs](https://docs.rs/dioxus-autofmt/latest/dioxus_autofmt) |
[Chat](https://discord.gg/XgGxMSkvUM)
diff --git a/packages/check/Cargo.toml b/packages/check/Cargo.toml
index 9877ed27c..a61b59948 100644
--- a/packages/check/Cargo.toml
+++ b/packages/check/Cargo.toml
@@ -7,8 +7,7 @@ description = "Checks Dioxus RSX files for issues"
license = "MIT/Apache-2.0"
repository = "https://github.com/DioxusLabs/dioxus/"
homepage = "https://dioxuslabs.com"
-keywords = ["dom", "ui", "gui", "react"]
-# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+keywords = ["web", "desktop", "mobile", "gui", "wasm"]
[dependencies]
proc-macro2 = { workspace = true, features = ["span-locations"] }
diff --git a/packages/check/README.md b/packages/check/README.md
index 88b9989ab..e735e7d5c 100644
--- a/packages/check/README.md
+++ b/packages/check/README.md
@@ -15,13 +15,13 @@
[discord-url]: https://discord.gg/XgGxMSkvUM
[Website](https://dioxuslabs.com) |
-[Guides](https://dioxuslabs.com/learn/0.5) |
+[Guides](https://dioxuslabs.com/learn/0.6) |
[API Docs](https://docs.rs/dioxus-check) |
[Chat](https://discord.gg/XgGxMSkvUM)
## Overview
-`dioxus-check` analyzes Dioxus source code and reports errors and warnings. Primarily, it enforces the [Rules of Hooks](https://dioxuslabs.com/learn/0.5/reference/hooks#rules-of-hooks).
+`dioxus-check` analyzes Dioxus source code and reports errors and warnings. Primarily, it enforces the [Rules of Hooks](https://dioxuslabs.com/learn/0.6/reference/hooks#rules-of-hooks).
## Contributing
diff --git a/packages/check/src/issues.rs b/packages/check/src/issues.rs
index 621fd4925..bc33a9275 100644
--- a/packages/check/src/issues.rs
+++ b/packages/check/src/issues.rs
@@ -162,11 +162,11 @@ impl Display for IssueReport {
#[allow(clippy::enum_variant_names)] // we'll add non-hook ones in the future
/// Issues that might be found via static analysis of a Dioxus file.
pub enum Issue {
- ///
+ ///
HookInsideConditional(HookInfo, ConditionalInfo),
- ///
+ ///
HookInsideLoop(HookInfo, AnyLoopInfo),
- ///
+ ///
HookInsideClosure(HookInfo, ClosureInfo),
HookInsideAsync(HookInfo, AsyncInfo),
HookOutsideComponent(HookInfo),
diff --git a/packages/cli-config/Cargo.toml b/packages/cli-config/Cargo.toml
index 81db49c6e..5e2ea8de0 100644
--- a/packages/cli-config/Cargo.toml
+++ b/packages/cli-config/Cargo.toml
@@ -7,7 +7,7 @@ license = "MIT OR Apache-2.0"
repository = "https://github.com/DioxusLabs/dioxus/"
homepage = "https://dioxuslabs.com"
description = "CLI Configuration for dioxus-cli"
-keywords = ["dom", "ui", "gui", "react", ]
+keywords = ["web", "desktop", "mobile", "gui", "wasm"]
[dependencies]
wasm-bindgen = { workspace = true, optional = true }
diff --git a/packages/cli/Cargo.toml b/packages/cli/Cargo.toml
index d8ad421ed..b289d70d4 100644
--- a/packages/cli/Cargo.toml
+++ b/packages/cli/Cargo.toml
@@ -3,10 +3,10 @@ name = "dioxus-cli"
version = { workspace = true }
authors = ["Jonathan Kelley"]
edition = "2021"
-description = "CLI tool for developing, testing, and publishing Dioxus apps"
+description = "CLI for building fullstack web, desktop, and mobile apps with a single codebase."
repository = "https://github.com/DioxusLabs/dioxus/"
license = "MIT OR Apache-2.0"
-keywords = ["react", "gui", "cli", "dioxus", "wasm"]
+keywords = ["mobile", "gui", "cli", "dioxus", "wasm"]
rust-version = "1.79.0"
[dependencies]
diff --git a/packages/cli/README.md b/packages/cli/README.md
index 9627a1e35..5913d9f2c 100644
--- a/packages/cli/README.md
+++ b/packages/cli/README.md
@@ -63,9 +63,6 @@ default_platform = "web"
[web.app]
title = "Hello"
-[web.watcher]
-
[web.resource.dev]
```
-The full anatomy of `Dioxus.toml` is shown on the [Dioxus website](https://dioxuslabs.com/learn/0.5/CLI/configure).
diff --git a/packages/config-macro/Cargo.toml b/packages/config-macro/Cargo.toml
index b75558880..d233fd90e 100644
--- a/packages/config-macro/Cargo.toml
+++ b/packages/config-macro/Cargo.toml
@@ -7,7 +7,7 @@ description = "Configuration macros for Dioxus"
license = "MIT OR Apache-2.0"
repository = "https://github.com/DioxusLabs/dioxus/"
homepage = "https://dioxuslabs.com"
-keywords = ["dom", "ui", "gui", "react"]
+keywords = ["web", "desktop", "mobile", "gui", "wasm"]
[lib]
proc-macro = true
diff --git a/packages/config-macro/README.md b/packages/config-macro/README.md
index 06dbaaea2..39ca7e98d 100644
--- a/packages/config-macro/README.md
+++ b/packages/config-macro/README.md
@@ -15,7 +15,7 @@
[discord-url]: https://discord.gg/XgGxMSkvUM
[Website](https://dioxuslabs.com) |
-[Guides](https://dioxuslabs.com/learn/0.5) |
+[Guide](https://dioxuslabs.com/learn/0.6) |
[API Docs](https://docs.rs/dioxus-config-macro/latest/dioxus_config_macro/) |
[Chat](https://discord.gg/XgGxMSkvUM)
diff --git a/packages/core-macro/README.md b/packages/core-macro/README.md
index f3ba80107..7a7d1639a 100644
--- a/packages/core-macro/README.md
+++ b/packages/core-macro/README.md
@@ -15,7 +15,7 @@
[discord-url]: https://discord.gg/XgGxMSkvUM
[Website](https://dioxuslabs.com) |
-[Guides](https://dioxuslabs.com/learn/0.5) |
+[Guides](https://dioxuslabs.com/learn/0.6) |
[API Docs](https://docs.rs/dioxus-core-macro/latest/dioxus_core_macro) |
[Chat](https://discord.gg/XgGxMSkvUM)
diff --git a/packages/core-macro/src/props/mod.rs b/packages/core-macro/src/props/mod.rs
index 3befb2fe5..2a52d1c5c 100644
--- a/packages/core-macro/src/props/mod.rs
+++ b/packages/core-macro/src/props/mod.rs
@@ -1055,7 +1055,7 @@ Finally, call `.build()` to create the instance of `{name}`.
name: field_name, ..
} = field;
if *field_name == "key" {
- return Err(Error::new_spanned(field_name, "Naming a prop `key` is not allowed because the name can conflict with the built in key attribute. See https://dioxuslabs.com/learn/0.5/reference/dynamic_rendering#rendering-lists for more information about keys"));
+ return Err(Error::new_spanned(field_name, "Naming a prop `key` is not allowed because the name can conflict with the built in key attribute. See https://dioxuslabs.com/learn/0.6/reference/dynamic_rendering#rendering-lists for more information about keys"));
}
let StructInfo {
ref builder_name, ..
diff --git a/packages/core/Cargo.toml b/packages/core/Cargo.toml
index 9f282af5d..0271e61f7 100644
--- a/packages/core/Cargo.toml
+++ b/packages/core/Cargo.toml
@@ -3,11 +3,11 @@ name = "dioxus-core"
version = { workspace = true }
authors = ["Jonathan Kelley"]
edition = "2021"
-description = "Core functionality for Dioxus - a concurrent renderer-agnostic Virtual DOM for interactive user experiences"
+description = "Build fullstack web, desktop, and mobile apps with a single codebase."
license = "MIT OR Apache-2.0"
repository = "https://github.com/DioxusLabs/dioxus/"
homepage = "https://dioxuslabs.com"
-keywords = ["dom", "ui", "gui", "react"]
+keywords = ["web", "desktop", "mobile", "gui", "wasm"]
[dependencies]
dioxus-core-types = { workspace = true }
diff --git a/packages/core/README.md b/packages/core/README.md
index 267a0be3e..a4b80f500 100644
--- a/packages/core/README.md
+++ b/packages/core/README.md
@@ -81,7 +81,7 @@ fn main() {
## Contributing
-- Check out the website [section on contributing](https://dioxuslabs.com/learn/0.5/contributing).
+- Check out the website [section on contributing](https://dioxuslabs.com/learn/0.6/contributing).
- Report issues on our [issue tracker](https://github.com/dioxuslabs/dioxus/issues).
- [Join](https://discord.gg/XgGxMSkvUM) the discord and ask questions!
diff --git a/packages/desktop/Cargo.toml b/packages/desktop/Cargo.toml
index 73eee62e3..366c8d12d 100644
--- a/packages/desktop/Cargo.toml
+++ b/packages/desktop/Cargo.toml
@@ -6,7 +6,7 @@ edition = "2021"
description = "WebView renderer for Dioxus"
license = "MIT OR Apache-2.0"
repository = "https://github.com/DioxusLabs/dioxus/"
-homepage = "https://dioxuslabs.com/learn/0.5/getting_started"
+homepage = "https://dioxuslabs.com/learn/0.6/getting_started"
keywords = ["dom", "ui", "gui", "react"]
[dependencies]
diff --git a/packages/desktop/README.md b/packages/desktop/README.md
index ca07c3628..cebf39cbc 100644
--- a/packages/desktop/README.md
+++ b/packages/desktop/README.md
@@ -15,7 +15,7 @@
[discord-url]: https://discord.gg/XgGxMSkvUM
[Website](https://dioxuslabs.com) |
-[Guides](https://dioxuslabs.com/learn/0.5) |
+[Guides](https://dioxuslabs.com/learn/0.6) |
[API Docs](https://docs.rs/dioxus-desktop/latest/dioxus_desktop) |
[Chat](https://discord.gg/XgGxMSkvUM)
@@ -25,7 +25,7 @@
This requires that webview is installed on the target system. WebView is installed by default on macOS and iOS devices, but might not come preinstalled on Windows or Linux devices. To fix these issues, follow the [instructions in the guide](guide-url).
-[guide-url]: https://dioxuslabs.com/learn/0.5/getting_started
+[guide-url]: https://dioxuslabs.com/learn/0.6/getting_started
## Features
diff --git a/packages/desktop/src/readme.md b/packages/desktop/src/readme.md
index 2242ef1de..2cd1809dd 100644
--- a/packages/desktop/src/readme.md
+++ b/packages/desktop/src/readme.md
@@ -47,4 +47,4 @@ To configure the webview, menubar, and other important desktop-specific features
## Future Steps
-Make sure to read the [Dioxus Guide](https://dioxuslabs.com/learn/0.5/) if you already haven't!
+Make sure to read the [Dioxus Guide](https://dioxuslabs.com/learn/0.6/) if you already haven't!
diff --git a/packages/dioxus-lib/Cargo.toml b/packages/dioxus-lib/Cargo.toml
index 50d0a6fa2..7f80a27f5 100644
--- a/packages/dioxus-lib/Cargo.toml
+++ b/packages/dioxus-lib/Cargo.toml
@@ -3,10 +3,10 @@ name = "dioxus-lib"
version = { workspace = true }
authors = ["Jonathan Kelley", "Dioxus Labs", "ealmloff"]
edition = "2021"
-description = "Portable, performant, and ergonomic framework for building cross-platform user interfaces in Rust"
+description = "Build fullstack web, desktop, and mobile apps with a single codebase."
license = "MIT OR Apache-2.0"
repository = "https://github.com/DioxusLabs/dioxus/"
-homepage = "https://dioxuslabs.com/learn/0.5/"
+homepage = "https://dioxuslabs.com/learn/0.6/"
keywords = ["dom", "ui", "gui", "react", "wasm"]
rust-version = "1.79.0"
diff --git a/packages/dioxus-lib/README.md b/packages/dioxus-lib/README.md
index 80d6a1bce..e7e74ff8d 100644
--- a/packages/dioxus-lib/README.md
+++ b/packages/dioxus-lib/README.md
@@ -1,20 +1,29 @@
-
-
🌗🚀 Dioxus (lib)
-
- A concurrent, functional, virtual DOM for Rust
-
+---
+
> This crate implements dioxus-lib which is a renderer-free version of Dioxus. This crate is intended to be used by library authors who need a stable core version of dioxus withuot pulling in renderer-related dependencies on accident.
-# Resources
-
-This overview provides a brief introduction to Dioxus. For a more in-depth guide, make sure to check out:
-
-- [Getting Started](https://dioxuslabs.com/learn/0.5/getting_started)
-- [Book (0.5)](https://dioxuslabs.com/learn/0.5)
-- [Examples](https://github.com/DioxusLabs/dioxus/tree/main/examples)
-
# Overview and Goals
Dioxus makes it easy to quickly build complex user interfaces with Rust. Any Dioxus app can run in the web browser,
@@ -202,7 +211,7 @@ fn App() -> Element {
```
Hooks are sensitive to how they are used. To use hooks, you must abide by the
-["rules of hooks"](https://dioxuslabs.com/learn/0.5/reference/hooks#rules-of-hooks):
+["rules of hooks"](https://dioxuslabs.com/learn/0.6/reference/hooks#rules-of-hooks):
- Functions with "use\_" should not be called in callbacks
- Functions with "use\_" should not be called out of order
diff --git a/packages/dioxus/Cargo.toml b/packages/dioxus/Cargo.toml
index 6ae139e08..fb4497d04 100644
--- a/packages/dioxus/Cargo.toml
+++ b/packages/dioxus/Cargo.toml
@@ -3,11 +3,11 @@ name = "dioxus"
version = { workspace = true }
authors = ["Jonathan Kelley", "Dioxus Labs", "ealmloff"]
edition = "2021"
-description = "Portable, performant, and ergonomic framework for building cross-platform user interfaces in Rust"
+description = "Build fullstack web, desktop, and mobile apps with a single codebase."
license = "MIT OR Apache-2.0"
repository = "https://github.com/DioxusLabs/dioxus/"
-homepage = "https://dioxuslabs.com/learn/0.5/"
-keywords = ["dom", "ui", "gui", "react", "wasm"]
+homepage = "https://dioxuslabs.com"
+keywords = ["web", "desktop", "mobile", "gui", "wasm"]
rust-version = "1.79.0"
[dependencies]
@@ -29,7 +29,7 @@ dioxus-ssr = { workspace = true, optional = true }
manganis = { workspace = true, features = ["dioxus"], optional = true }
dioxus-logger = { workspace = true, optional = true }
-serde = { version = "1.0.136", optional = true }
+serde = { workspace = true, optional = true }
dioxus-cli-config = { workspace = true, optional = true }
[target.'cfg(not(any(target_arch = "wasm32", target_os = "ios", target_os = "android")))'.dependencies]
@@ -91,3 +91,10 @@ features = [
"liveview",
"server"
]
+targets = [
+ "wasm32-unknown-unknown",
+ "aarch64-apple-darwin",
+ "x86_64-unknown-linux-gnu",
+ "x86_64-pc-windows-msvc",
+ "aarch64-linux-android",
+]
diff --git a/packages/dioxus/README.md b/packages/dioxus/README.md
index a5acff195..be12921ba 100644
--- a/packages/dioxus/README.md
+++ b/packages/dioxus/README.md
@@ -1,42 +1,65 @@
-
-
🌗🚀 Dioxus
-
- A concurrent, functional, virtual DOM for Rust
-
-# Resources
+---
+Dioxus is a framework for building cross-platform apps in Rust. With one codebase, you can build web, desktop, and mobile apps with fullstack server functions. Dioxus is designed to be easy to learn for developers familiar with web technologies like HTML, CSS, and JavaScript.
-This overview provides a brief introduction to Dioxus. For a more in-depth guide, make sure to check out:
+
+
+
-- [Getting Started](https://dioxuslabs.com/learn/0.5/getting_started)
-- [Book (0.5)](https://dioxuslabs.com/learn/0.5)
-- [Examples](https://github.com/DioxusLabs/dioxus/tree/main/examples)
+## At a glance
-# Overview and Goals
+Dioxus is crossplatform app framework that empowers developer to build beautiful, fast, type-safe apps with Rust. By default, Dioxus apps are declared with HTML and CSS. Dioxus includes a number of useful features:
-Dioxus makes it easy to quickly build complex user interfaces with Rust. Any Dioxus app can run in the web browser,
-as a desktop app, as a mobile app, or anywhere else provided you build the right renderer.
+- Hotreloading of RSX markup and assets
+- Interactive CLI with logging, project templates, linting, and more
+- Integrated bundler for deploying to the web, macOS, Linux, and Windows
+- Support for modern web features like SSR, Hydration, and HTML streaming
+- Direct access to system APIs through JNI (Android), CoreFoundation (Apple), and web-sys (web)
+- Type-safe application routing and server functions
-Dioxus is heavily inspired by React, supporting many of the same concepts:
+## Quick start
-- Hooks for state
-- VirtualDom & diffing
-- Concurrency, fibers, and asynchronous rendering
-- JSX-like templating syntax
+To get started with Dioxus, you'll want to grab the dioxus-cli tool: `dx`. We distribute `dx` with `cargo-binstall` - if you already have binstall skip this step.
+```shell
+# skip if you already have cargo-binstall
+cargo install cargo-binstall
-If you know React, then you know Dioxus.
+# install the precompiled `dx` tool
+cargo binstall dioxus-cli
-Dioxus is _substantially_ more performant than many of the other Rust UI libraries (Yew/Percy) and is _significantly_ more performant
-than React—roughly competitive with InfernoJS.
+# create a new app, following the template
+dx new my-app && cd my-app
-Remember: Dioxus is a library for declaring interactive user interfaces—it is not a dedicated renderer. Most 1st party renderers for Dioxus currently only support web technologies.
+# and then serve!
+dx serve --platform desktop
+```
-## Brief Overview
+## Your first app
-All Dioxus apps are built by composing functions that start with a capital letter and return an `Element`.
+All Dioxus apps are built by composing functions return an `Element`.
-To launch an app, we use the `launch` method and use features in `Cargo.toml` to specify which renderer we want to use. In the launch function, we pass the app's root `Component`.
+To launch an app, we use the `launch` method. In the launch function, we pass the app's root `Component`.
```rust, no_run
use dioxus::prelude::*;
@@ -107,10 +130,9 @@ fn App() -> Element {
## Components
-We can compose these function components to build a complex app. Each new
-component we design must take some Properties. For components with no explicit properties, we can omit the type altogether.
+We can compose these function components to build a complex app. Each new component takes some Properties. For components with no explicit properties, we can omit the type altogether.
-In Dioxus, all properties are memorized by default with Clone and PartialEq. For props you can't clone, simply wrap the fields in a [`ReadOnlySignal`](dioxus_signals::ReadOnlySignal) and Dioxus will handle converting types for you.
+In Dioxus, all properties are memoized by default with `Clone` and `PartialEq`. For props you can't clone, simply wrap the fields in a [`ReadOnlySignal`](dioxus_signals::ReadOnlySignal) and Dioxus will handle converting types for you.
```rust, no_run
# use dioxus::prelude::*;
@@ -142,16 +164,14 @@ fn Header(title: String, color: String) -> Element {
}
```
-> You can read more about props in the [reference](https://dioxuslabs.com/learn/0.5/reference/component_props).
+> You can read more about props in the [reference](https://dioxuslabs.com/learn/0.6/reference/component_props).
## Hooks
-While components are reusable forms of UI elements, hooks are reusable forms
-of logic. Hooks provide a way of retrieving state from Dioxus' internal `Scope` and using
+While components are reusable forms of UI elements, hooks are reusable forms of logic. Hooks provide a way of retrieving state from Dioxus' internal `Scope` and using
it to render UI elements.
-By convention, all hooks are functions that should start with `use_`. We can
-use hooks to define the state and modify it from within listeners.
+By convention, all hooks are functions that should start with `use_`. We can use hooks to define the state and modify it from within listeners.
```rust, no_run
# use dioxus::prelude::*;
@@ -164,17 +184,14 @@ fn App() -> Element {
}
```
-Hooks are sensitive to how they are used. To use hooks, you must abide by the
-["rules of hooks"](https://dioxuslabs.com/learn/0.5/reference/hooks#rules-of-hooks):
+Hooks are sensitive to how they are used. To use hooks, you must abide by the ["rules of hooks"](https://dioxuslabs.com/learn/0.6/reference/hooks#rules-of-hooks):
- Hooks can only be called in the body of a component or another hook. Not inside of another expression like a loop, conditional or function call.
- Hooks should start with "use\_"
-In a sense, hooks let us add a field of state to our component without declaring
-an explicit state struct. However, this means we need to "load" the struct in the right
-order. If that order is wrong, then the hook will pick the wrong state and panic.
+Hooks let us add a field of state to our component without declaring an explicit state struct. However, this means we need to "load" the struct in the right order. If that order is wrong, then the hook will pick the wrong state and panic.
-Dioxus includes many built-in hooks that you can use in your components. If those hooks don't fit your use case, you can also extend Dioxus with [custom hooks](https://dioxuslabs.com/learn/0.5/cookbook/state/custom_hooks).
+Dioxus includes many built-in hooks that you can use in your components. If those hooks don't fit your use case, you can also extend Dioxus with custom hooks.
## Putting it all together
@@ -201,18 +218,18 @@ fn App() -> Element {
## Conclusion
-This overview doesn't cover everything. Make sure to check out the [tutorial](https://dioxuslabs.com/learn/0.5/guide) and [reference](https://dioxuslabs.com/learn/0.5/reference) on the official
+This overview doesn't cover everything. Make sure to check out the [tutorial](https://dioxuslabs.com/learn/0.6/guide) and [guides](https://dioxuslabs.com/learn/0.6/guides) on the official
website for more details.
Beyond this overview, Dioxus supports:
-- [Server-side rendering](https://dioxuslabs.com/learn/0.5/reference/fullstack)
+- Server-side rendering
- Concurrent rendering (with async support)
- Web/Desktop/Mobile support
- Pre-rendering and hydration
- Fragments, and Suspense
- Inline-styles
-- [Custom event handlers](https://dioxuslabs.com/learn/0.5/reference/event_handlers#handler-props)
+- Custom event handlers
- Custom elements
- Basic fine-grained reactivity (IE SolidJS/Svelte)
- and more!
diff --git a/packages/dioxus/src/lib.rs b/packages/dioxus/src/lib.rs
index 7481e7d30..3e4063ae0 100644
--- a/packages/dioxus/src/lib.rs
+++ b/packages/dioxus/src/lib.rs
@@ -9,12 +9,13 @@
//! - `html`: (default) exports `dioxus-html` as the default elements to use in rsx
//! - `hooks`: (default) re-exports `dioxus-hooks`
//! - `hot-reload`: (default) enables hot rsx reloading in all renderers that support it
-//! - `router`: exports the [router](https://dioxuslabs.com/learn/0.5/router) and enables any router features for the current platform
+//! - `router`: exports the [router](https://dioxuslabs.com/learn/0.6/router) and enables any router features for the current platform
//! - `third-party-renderer`: Just disables warnings about no active platform when no renderers are enabled
+//! - `logger`: Enable the default tracing subscriber for Dioxus apps
//!
//! Platform features (the current platform determines what platform the [`launch()`] function runs):
//!
-//! - `fullstack`: enables the fullstack platform. This must be used in combination with the `web` feature for wasm builds and `axum` feature for server builds
+//! - `fullstack`: enables the fullstack platform. This must be used in combination with the `web` feature for wasm builds and `server` feature for server builds
//! - `desktop`: enables the desktop platform
//! - `mobile`: enables the mobile platform
//! - `web`: enables the web platform. If the fullstack platform is enabled, this will set the fullstack platform to client mode
diff --git a/packages/dx-wire-format/Cargo.toml b/packages/dx-wire-format/Cargo.toml
index a04cfb068..6292bac7c 100644
--- a/packages/dx-wire-format/Cargo.toml
+++ b/packages/dx-wire-format/Cargo.toml
@@ -7,7 +7,7 @@ authors = ["Jonathan Kelley"]
description = "Wire format for the Dioxus CLI"
license = "MIT OR Apache-2.0"
repository = "https://github.com/DioxusLabs/dioxus/"
-homepage = "https://dioxuslabs.com/learn/0.5/"
+homepage = "https://dioxuslabs.com/learn/0.6/"
keywords = ["dom", "ui", "gui", "react", "wasm"]
rust-version = "1.79.0"
diff --git a/packages/extension/README.md b/packages/extension/README.md
index c53fd88b1..145a65d8c 100644
--- a/packages/extension/README.md
+++ b/packages/extension/README.md
@@ -28,11 +28,11 @@ Formats the current file as RSX.
This overview provides a brief introduction to Dioxus. For a more in-depth guide, make sure to check out:
-- [Getting Started](https://dioxuslabs.com/learn/0.5/getting_started)
-- [Book (0.5)](https://dioxuslabs.com/learn/0.5)
+- [Getting Started](https://dioxuslabs.com/learn/0.6/getting_started)
+- [Book (0.6)](https://dioxuslabs.com/learn/0.6)
## Contributing
-- Check out the website [section on contributing](https://dioxuslabs.com/learn/0.5/contributing).
+- Check out the website [section on contributing](https://dioxuslabs.com/learn/0.6/contributing).
- Report issues on our [issue tracker](https://github.com/dioxuslabs/dioxus/issues).
- [Join](https://discord.gg/XgGxMSkvUM) the discord and ask questions!
diff --git a/packages/fullstack/Cargo.toml b/packages/fullstack/Cargo.toml
index df3e4e2a3..2e0b0b0e0 100644
--- a/packages/fullstack/Cargo.toml
+++ b/packages/fullstack/Cargo.toml
@@ -3,11 +3,11 @@ name = "dioxus-fullstack"
authors = ["Jonathan Kelley", "Evan Almloff"]
version = { workspace = true }
edition = "2021"
-description = "Fullstack Dioxus Utilities"
+description = "Fullstack utilities for Dioxus: Build fullstack web, desktop, and mobile apps with a single codebase."
license = "MIT OR Apache-2.0"
repository = "https://github.com/DioxusLabs/dioxus/"
homepage = "https://dioxuslabs.com"
-keywords = ["ui", "gui", "react", "server", "fullstack"]
+keywords = ["web", "desktop", "mobile", "gui", "server"]
resolver = "2"
[dependencies]
@@ -58,7 +58,7 @@ thiserror = { workspace = true, optional = true }
bytes = "1.4.0"
tower = { workspace = true, features = ["util"], optional = true }
tower-layer = { version = "0.3.2", optional = true }
-parking_lot = { version = "0.12.1", features = ["send_guard"], optional = true }
+parking_lot = { workspace = true, features = ["send_guard"], optional = true }
web-sys = { version = "0.3.61", optional = true, features = ["Window", "Document", "Element", "HtmlDocument", "Storage", "console"] }
dioxus-cli-config = { workspace = true, optional = true }
diff --git a/packages/fullstack/README.md b/packages/fullstack/README.md
index 0d5d10a2b..86a36ba8d 100644
--- a/packages/fullstack/README.md
+++ b/packages/fullstack/README.md
@@ -15,7 +15,7 @@
[discord-url]: https://discord.gg/XgGxMSkvUM
[Website](https://dioxuslabs.com) |
-[Guides](https://dioxuslabs.com/learn/0.5/) |
+[Guides](https://dioxuslabs.com/learn/0.6/) |
[API Docs](https://docs.rs/dioxus-fullstack/latest/dioxus_fullstack/) |
[Chat](https://discord.gg/XgGxMSkvUM)
@@ -138,7 +138,7 @@ async fn get_meaning(of: String) -> Result