Hot-Patching, Native Renderer, Axum Integration, Bundle Splitting, Radix-UI, more!
Welcome back to another Dioxus release! Dioxus (dye • ox • us) is a framework for building cross-platform apps in Rust. We make it easy to ship full-stack web, desktop, and mobile apps with a single codebase.
Dioxus 0.7 delivers on a number of promises we made to improve Rust GUI, and more broadly, what we call “high level Rust.” Rust has excelled as a tool for building foundational software, but we hope with Dioxus 0.7, it’s one step closer to being suitable for rapid, high-level development.
In this release, we’re shipping some incredible features. The highlights of this release include:
- Subsecond: Hot-patching of Rust code at runtime
- Dioxus Native: WGPU-based HTML/CSS renderer for Dioxus
- Fullstack: Revamp of Server Functions with full Axum integration
- WASM-Split: Code splitting and lazy loading for WebAssembly
- Stores: A new primitive for nested reactive state
- Dioxus Primitives: first-party radix-primitives implementation for Dioxus
Dioxus 0.7 also brings a number of other exciting new features:
- Automatic tailwind: zero-setup tailwind support built-in!
- LLMs.txt: first-party context file to supercharge AI coding models
- Blitz: our modular HTML/CSS renderer powering Dioxus Native, available for everyone!
- Fullstack WebSockets: websockets in a single line of code
- Integrated Debugger Support: open CodeLLDB with a single keystroke
- Fullstack error codes: Integration of status codes and custom errors in fullstack
- Configurable Mobile Builds: Customize your AndroidManifest and Info.plist
Plus, a number of quality-of-life upgrades:
- one-line installer (
curl https://dioxus.dev/install.sh | sh) dx self-updateand update notifications- automatically open simulators
- Improved log coloring
- desktop and mobile toasts
- HTML streaming now waits for the router to render
- Axum 0.8 and Wry 52 upgrade
- Android + iOS device support
- More customization of iOS and Android projects
- Hash Router Support for dioxus-web
- Multi-package serve:
dx serve @client --package xyz @server --package xyz - Support for dyib bundling
- wasm32 support for fullstack
- Hashless assets
- /public dir
- And many, many bugs fixed!
Rust Hot-patching with Subsecond
The biggest feature of this release: Dioxus now supports hot-patching of Rust code at runtime! You can now edit your Rust code and see changes without losing your app’s state.
We’ve been working on this feature for almost an entire year, so this is a very special release for us. The tool powering this hot-patching is called Subsecond and works across all major platforms: Web (WASM), Desktop (macOS, Linux, Windows), and even mobile (iOS, Android):
hotpatch-android.mp4
ios-binarypatch.mp4
You can now iterate on your app’s frontend and backend simultaneously without skipping a beat.
hotpatch-wasm-complete.mp4
Subsecond works in tandem with the Dioxus CLI to enable hot-patching for any Rust project. Simply run dx serve on your project and all subsecond::call sites will be hot-patched. For example, here’s Subsecond working with a Ratatui app:
subsecond-tui.mp4
The infrastructure to support Subsecond is quite complex. Currently, we plan to only ship the Subsecond engine within the Dioxus CLI itself with a long-term plan to spin the engine out into its own crate. For now, we still want the ecosystem to experience the magic of Subsecond, so we’ve made the CLI compatible with non-dioxus projects and removed “dioxus” branding when not serving a dioxus project.
Hot-patching Rust code is no simple feat. To achieve a segfault-free experience, we recommend framework authors to tie into Subsecond’s minimal runtime. For application developers, you can simply use subsecond::call(some_fn) at clean integration points to take advantage of hot-patching. If you use Dioxus, hot-patching comes directly integrated with components and server functions.
pub fn launch() {
loop {
std::thread::sleep(std::time::Duration::from_secs(1));
subsecond::call(|| tick());
}
}
fn tick() {
println!("edit me to see the loop in action!!!!!!!!! ");
}While in theory we could implicitly override calls to tick with function detouring, we instead chose explicit integration points. The first version of subsecond modified process memory externally, but we struggled with issues where the program would be stuck in a task with no way to “resurface”. For this example, the program would always be waiting for IO, making our edits not take effect:
fn main() {
loop {
let next_event = wait_for_io();
do_thing();
}
}Instead, the explicit runtime integration provides a simple “synchronization point” where the framework can handle things like closing TCP connections, re-instancing state, dropping event listeners, etc. If you add or remove a field of a struct between hot-patches, Subsecond does not automatically migrate your state for you. Libraries like bevy-reflect make this easier - and we might integrate reflection at some point - but for now, frameworks should take care to either dispose or safely migrate structs that change.
We expect folks to use Subsecond outside of Dioxus, namely in web development, so we’ve provided a few starter-integrations for popular libraries:
- Axum
- Bevy
- Ratatui
Subsecond has already made its way into popular projects like Bevy and Iced. Right now, you can git pull the latest Bevy and Iced repositories and start hot-patching with zero setup:
bevy-hotpatch.mp4
Hot-patching covers nearly every case in Dioxus. Many tasks that were previously massively burdensome are now a breeze:
- Adding a new
asset!()call - Editing strongly-typed interfaces on components like icon variants or links
- Dynamically adding children to a component
- Modifying backend server function code
- Modifying event handler logic - ie
onclickoronmouseover - Loading resources and async values
- Refactoring rsx into components
Under the hood, we implemented a form of incremental linking / binary patching tailored for running apps. This is not too distant from the idea laid out by Andrew Kelley for Zig.
Dioxus Native and Blitz
We’re extremely excited to announce the first-ever version of Dioxus Native: our new renderer that paints Dioxus apps entirely on the GPU with WGPU.
Out of the box, it already supports a huge number of features
- Accessibility integration
- Event handling
- Asset fetching and loading.
Dioxus Native required a monumental amount of work, pushing forward
- HTML/CSS layout and rendering
- High quality text painting
We’re extremely excited to release Blitz: our modular HTML/CSS rendering engine.
Blitz combines a number of exciting projects to bring customizable HTML rendering engine to everyone. Blitz is a result of collaboration across many projects: Firefox, Google, Servo, and Bevy. We’re leveraging a number of powerful libraries:
- Taffy: our high-performance flexbox layout engine
- Stylo: Firefox and Servo’s shared CSS resolution engine
- Vello: Linebender’s GPU compute renderer
Blitz is an extremely capable renderer, often producing results indistinguishable from browsers like Chrome and Safari:
Not every CSS feature is supported yet, with some bugs like incorrect writing direction or the occasional layout quirk. Our support matrix is here: https://blitz.is/status/css
The samples that Blitz can create are quite incredible. Servo’s website:
Hackernews:
The BBC:
We even implemented basic <form /> support, making it possible to search Wikipedia without a full browser:
Screen_Recording_2025-05-24_at_16.21.05.mov
Do note that Blitz is still very young and doesn’t always produce the best outputs, especially on pages that require JavaScript to function properly or use less-popular CSS features:
Blitz also provides a pluggable layer for interactivity, supporting actions like text inputs, pluggable widgets, form submissions, hover styling, and more. Here’s Dioxus-Motion working alongside our interactivity layer to provide high quality animations:
Screen_Recording_2025-01-05_at_7.46.14_PM.mov
Bear in mind that Blitz is still considered a “work in progress.” We have not focused on performance
Dioxus Fullstack Overhaul
We completely revamped Dioxus Fullstack, bringing in a new syntax and a whole host of new features.
To start, we've introduced a new dioxus::serve entrypoint for server apps that enables hot-patching of axum routers:
combined-fullstack-hotpatch.mp4
The new syntax upgrades makes it easy to declare stable endpoints with a syntax inspired by the popular Rocket library.
/// you can now encode query and path parameters in the macro!
#[get("/api/{name}/?age")]
async fn get_message(name: String, age: i32) -> Result<String> {
Ok(format!("Hello {}, you are {} years old!", name, age))
}
This revamp allows you to use any valid Axum handler as a Dioxus Server Function, greatly expanding what bodies are allowed. This introduces a number of useful utilities like:
- Server Sent Events with
ServerEvents<T>type Websocketanduse_websocketfor long-lived bidirectional communicationStreaming<T>for arbitrary data streams- Typed
Form<T>type andMultipartFormDatafor handling forms FileStreamfor streaming uploads and downloads
An example of the new APIs in example is this simple websocket handler:
#[get("/api/uppercase_ws?name&age")]
async fn uppercase_ws(
name: String,
age: i32,
options: WebSocketOptions,
) -> Result<Websocket<ClientEvent, ServerEvent, CborEncoding>> {
Ok(options.on_upgrade(move |mut socket| async move {
// send back a greeting message
_ = socket
.send(ServerEvent::Uppercase(format!(
"Fist message from server: Hello, {}! You are {} years old.",
name, age
)))
.await;
// Loop and echo back uppercase messages
while let Ok(ClientEvent::TextInput(next)) = socket.recv().await {
_ = socket.send(ServerEvent::Uppercase(next)).await;
}
}))
}Paired with the use_websocket hook, you can easily send and receive messages directly from your frontend.
fn app() -> Element {
// Track the messages we've received from the server.
let mut messages = use_signal(std::vec::Vec::new);
// The `use_websocket` wraps the `WebSocket` connection and provides a reactive handle to easily
// send and receive messages and track the connection state.
let mut socket = use_websocket(|| uppercase_ws("John Doe".into(), 30, WebSocketOptions::new()));
// Calling `.recv()` automatically waits for the connection to be established and deserializes
// messages as they arrive.
use_future(move || async move {
while let Ok(msg) = socket.recv().await {
messages.push(msg);
}
});
rsx! {
h1 { "WebSocket Example" }
p { "Type a message and see it echoed back in uppercase!" }
p { "Connection status: {socket.status():?}" }
input {
placeholder: "Type a message",
oninput: move |e| async move { _ = socket.send(ClientEvent::TextInput(e.value())).await; },
}
button { onclick: move |_| messages.clear(), "Clear messages" }
for message in messages.read().iter().rev() {
pre { "{message:?}" }
}
}
}An example of websockets in action:
fullstack-websockets-with-frame.mp4
Dioxus Primitives - a collection of Radix-UI equivalents
You asked, we listened. Dioxus now has a first-party component library based on the popular JavaScript library, Radix-Primitives. Our library implements 28 foundational components that you can mix, match, customize, and restyle to fit your project. Each component comes unstyled and is fully equipped with keyboard-shortucts, ARIA accessibility, and is designed to work seamlessly across web, desktop and mobile.
Screen_Recording_2025-08-05_at_10.12.14_AM.mov
In addition to the unstyled primitives, the components page includes a shadcn-style version of each primitive with css you can copy into your project to build a component library for your project. You can combine these primitives to create larger building blocks like cards, dashboards and forms.
The community has already started construction on new component variants with an exciting project called Lumenblocks built by the Leaf Computer team.
Stores - a new primitive for nested reactive state
We introduced signals in 0.5 to enable fine grained reactive updates in dioxus. Signals are great for atomic piece of state in a component like a string or number, but they are difficult to use with external or nested state. Stores are a powerful new primitive for nested reactive state in 0.7.
With stores, you can derive a store trait on your data to let you zoom into specific parts of the state:
#[derive(Store)]
struct Dir {
children: BTreeMap<String, Dir>,
}
// You can use the children method to get a reactive reference to just that field
let mut children: Store<Vec<Dir>, _> = directory.children();Stores also include implementations for common data structures like BTreeMap that mark only the changed items as dirty for each operation:
#[component]
fn Directory(directory: Store<Dir>) -> Element {
// Create a temporary to reference just the reactive child field
let mut children = directory.children();
rsx! {
ul {
// Iterate through each reactive value in the children
for (i, dir) in children.iter().enumerate() {
li {
key: "{dir.path()}",
div {
display: "flex",
flex_direction: "row",
"{dir.path()}",
button {
onclick: move |_| {
children.remove(i);
},
"x"
}
}
Directory { directory: dir }
}
}
}
}
}When we remove a directory from the store, it will only rerun the parent component that iterated over the BTreeMap and the child that was removed.
Automatic Tailwind
The community has been asking for automatic Tailwind for a very long time. Finally in Dioxus 0.7, dx detects if your project has a tailwind.css file at the root, and if it does, automatically starts a TailwindCSS watcher for you. You no longer need to manually start or download the Tailwind CLI - everything is handled for you seamlessly in the background:
tailwind-inline.mp4
We’ve updated our docs and examples to Tailwind V4, but we’ve also made sure the CLI can handle and autodetect both V3 and V4. Automatic Tailwind support is an amazing feature and we’re sorry for not having integrated it earlier!
Improvements with AI - LLMs.txt and “vibe-coding”
If you’ve kept up with the news recently, it’s become obvious that AI and Large Language Models are taking over the world. The AI world moves quickly with new tools and improvements being released every week. While the reception of LLMs in the Rust community seems to be mixed, we don’t want Dioxus to be left behind!
In Dioxus 0.7, we’re shipping our first step in the AI world with a first-party llms.txt automatically generated from the Dioxus documentation! LLMs can easily stay up to date on new Dioxus features and best practices, hopefully reducing hallucinations when integrating with tools like Copilot and Cursor.
The latest version of the template also includes an optional set of prompts with context about the latest release of dioxus. The prompts provide condensed information about dioxus for tools that don’t have access to web search or llms.txt integration.
Combined with the Subsecond hot-patching work, users can now more effectively “vibe code” their apps without rebuilding. While we don’t recommend “vibe coding” high-stakes parts of your app, modern AI tools are quite useful for quickly whipping up prototypes and UI.
vibe-code-2.mp4
WASM Bundle Splitting and Lazy Loading
bundle-split.mp4
Integrated Debugger
To date, debugging Rust apps with VSCode hasn’t been particularly easy. Each combination of launch targets, flags, and arguments required a new entry into your vscode.json With Dioxus 0.7, we wanted to improve debugging, so we’re shipping a debugger integration! While running dx serve, simply press d and the current LLDB instance will attach to currently running app. The new debugger integration currently only works with VSCode-based editor setups, but we’d happily accept contributions to expand our support to Neovim, Zed, etc.
debugger-dx.mp4
The integrated debugger is particularly interesting since it works across the web, desktop, and mobile. Setting up an Android debugger from VSCode is particularly challenging, and the new integration makes it much easier.
debug-android-vscode.mp4
When launching for the web, we actually open a new Chrome instance with a debugger attached. Provided you download the DWARF symbols extension, Rust symbols will show up properly demangled in the debugger tab instead of confusing function addresses.
debugger-web.mp4
Various Quality of Life Upgrades
We’ve shipped a number of quality-of-life upgrades that don’t necessarily warrant their own section in the release notes.
Now, when you launch a mobile app, dx will automatically open the iOS and Android simulator:
auto-launch.mp4
Desktop and mobile now have the same development-mode toasts:
mobile-toast.mp4
The log coloring of the CLI and help menus have been upgraded to match cargo and reflect error/warn/debug/info levels:
DX Compatibility with any project
The dioxus CLI “dx” tooling is now usable with any Rust project, not just Dioxus projects! You can use dx alongside any Rust project, getting a number of awesome features for free:
- Rust hot-reloading with Subsecond
- Packaging and bundling for Web/Desktop/Mobile
- Extraction and optimization of assets included with the
asset!()macro - Interactive TUI with shortcuts to rebuild your app
- Tracing integration to toggle “verbose” and “tracing” log levels
- Simultaneous multi-package
dx serve @client @serversupport - Integrated debugger
Notably, Bevy has already integrated support for Subsecond and works well with the new dx:
bevy-scad_.online-video-cutter.com.mp4
We have big plans for dx and will improve it by adding support for more features:
- Remote build caching for instant fresh compiles
- Advanced caching for incremental builds in CI
- Dedicated Docker and GitHub images for cross-platform distribution
- Adapters to make your project usable with Bazel / Buck2
- Built-in deploy command for deploying to AWS/GCP/Azure/Cloudflare
- Integrated
#[test]and#[preview]attributes that work across web, desktop, and mobile - Inline VSCode Simulator support
- Detailed build timings for cargo and bundling
- CI integration with integrated dashboard
Improved Version Management Experience
Dioxus has supported binary installation for quite a while - but we’ve always required users to install cargo binstall and then run cargo binstall dioxus-cli. Now, we’re dropping the cargo binstall requirement entirely, making it easy to install the CLI and then keep it updated.
To install the CLI:
curl -fsSL https://dioxus.dev/install.sh | bashWhenever the Dioxus team pushes new updates, the CLI will automatically give you a one-time update notification. To update, you can use
dx self-update
When you try to use the dioxus-cli with an incompatible dioxus version, you’ll receive a warning and some instructions on how to update.
Customize AndroidManifest.xml and Info.plist
You can now customize the Info.plist and AndroidManifest.xml files that Dioxus generates for your Android, iOS, and macOS projects. This makes it possible to add entitlements, update permissions, set splash screens, customize icons, and fully tweak your apps for deployment.
ADB Reverse Proxy for Device Hot-Reload
Thanks to community contributions, dx serve --platform android now supports Android devices! You can edit markup, modify assets, and even hot-patch on a real Android device without needing to boot a simulator. This works by leveraging adb reverse, and should help speed up Android developers looking to test their apps on real devices.
iPad Support
A small update - Dioxus now properly supports iPad devices! When you dx serve --platform ios with an iPad simulator open, your Dioxus app will properly scale and adapt to the iPadOS environment.
Basic Telemetry
- Anonymized by default
- Using it to hunt down panics in tooling and in dioxus itself (during development)
- Want to provide more robust library and tooling - github issues only captures a snapshot
- Opt out
Over time, the CLI has grown from a simple server that watches for file changes and reruns cargo to a tool that helps you through every stage of your apps lifecycle with support for bundling, asset optimization, hot patching, hot reloading, and translation. As the complexity has grown, so has the surface area for bugs and UX issues. To make the CLI more robust, we have started collecting a minimal set of telemetry data in 0.7. This information will help to catch rare panics, performance issues and trends over time that don’t show up in github issues. All telemetry is anonymized with all personal information stripped. We collect:
- Commands invoked without args (eg.
dx serve --hot-patch --profile <stripped> --package <stripped>) - Timing information for each build state (eg.
asset optimization: 2s, linking: 1s, wasm-bindgen: 4s) - Panics and errors from the CLI with all paths stripped (eg.
unwrap() at <stripped>/cli/src/build.rs) - An unique identifier based on a hash of your system information (eg.
HARDWARE_ID=218853676744316928865703503826531902998) - Your target triple, dx version and if you are running in CI: (eg.
TRIPLE=arch64-apple-darwin CI=false DX=0.7.0-alpha.3)
For reference, here is a snippet of the telemetry collected over the last week on my installation:
{"identity":{"device_triple":"aarch64-apple-darwin","is_ci":false,"cli_version":"0.7.0-alpha.3 (ba856ac)","session_id":218853676744316928865703503826531902998},"name":"cli_command","module":null,"message":"serve","stage":"start","time":"2025-07-24T14:34:07.684804Z","values":{"args":{"address":{"addr":null,"port":null},"always_on_top":null,"cross_origin_policy":false,"exit_on_error":false,"force_sequential":false,"hot_patch":false,"hot_reload":null,"interactive":null,"open":null,"platform_args":{"client":null,"server":null,"shared":{"args":false,"targets":{"build_arguments":{"all_features":false,"base_path":false,"bin":null,"bundle":null,"cargo_args":false,"debug_symbols":true,"device":false,"example":false,"features":false,"inject_loading_scripts":true,"no_default_features":false,"package":null,"platform":null,"profile":false,"release":false,"renderer":{"renderer":null},"rustc_args":false,"skip_assets":false,"target":null,"target_alias":"Unknown","wasm_split":false},"fullstack":null,"ssg":false}}},"watch":null,"wsl_file_poll_interval":null}}}
{"identity":{"device_triple":"aarch64-apple-darwin","is_ci":false,"cli_version":"0.7.0-alpha.3 (ba856ac)","session_id":218853676744316928865703503826531902998},"name":"build_stage","module":null,"message":"Build stage update","stage":"installing_tooling","time":"2025-07-24T14:34:08.358050Z","values":{}}
{"identity":{"device_triple":"aarch64-apple-darwin","is_ci":false,"cli_version":"0.7.0-alpha.3 (ba856ac)","session_id":218853676744316928865703503826531902998},"name":"build_stage","module":null,"message":"Build stage update","stage":"starting","time":"2025-07-24T14:34:08.950001Z","values":{}}
{"identity":{"device_triple":"aarch64-apple-darwin","is_ci":false,"cli_version":"0.7.0-alpha.3 (ba856ac)","session_id":218853676744316928865703503826531902998},"name":"build_stage","module":null,"message":"Build stage update","stage":"compiling","time":"2025-07-24T14:34:09.543745Z","values":{}}
{"identity":{"device_triple":"aarch64-apple-darwin","is_ci":false,"cli_version":"0.7.0-alpha.3 (ba856ac)","session_id":218853676744316928865703503826531902998},"name":"build_stage","module":null,"message":"Build stage update","stage":"extracting_assets","time":"2025-07-24T14:34:10.142290Z","values":{}}
{"identity":{"device_triple":"aarch64-apple-darwin","is_ci":false,"cli_version":"0.7.0-alpha.3 (ba856ac)","session_id":218853676744316928865703503826531902998},"name":"build_stage","module":null,"message":"Build stage update","stage":"bundling","time":"2025-07-24T14:34:10.319760Z","values":{}}
{"identity":{"device_triple":"aarch64-apple-darwin","is_ci":false,"cli_version":"0.7.0-alpha.3 (950b12e)","session_id":207130784956002540532192240548422216472},"name":"cli_command","module":null,"message":"serve","stage":"start","time":"2025-07-24T14:55:31.419714Z","values":{"args":{"address":{"addr":null,"port":null},"always_on_top":null,"cross_origin_policy":false,"exit_on_error":false,"force_sequential":false,"hot_patch":false,"hot_reload":null,"interactive":null,"open":null,"platform_args":{"client":null,"server":null,"shared":{"args":false,"targets":{"build_arguments":{"all_features":false,"base_path":false,"bin":null,"bundle":null,"cargo_args":false,"debug_symbols":true,"device":false,"example":false,"features":false,"inject_loading_scripts":true,"no_default_features":false,"package":null,"platform":null,"profile":false,"release":false,"renderer":{"renderer":null},"rustc_args":false,"skip_assets":false,"target":null,"target_alias":"Unknown","wasm_split":false},"fullstack":null,"ssg":false}}},"watch":null,"wsl_file_poll_interval":null}}}The full logs are available here: http://gist.github.com/ealmloff/815d859bb8c592a72769e958e685f7f2
You can opt-out of telemetry by compiling the CLI with the disable-telemetry feature, setting TELEMETRY=false in your environment variables or running dx config set disable-telemetry true
Expanded Documentation
We reorganized and expanded the documentation for core concepts in 0.7. The docs now go into more details about important concepts like reactivity, the rendering model of dioxus, and async state in dioxus. The new docs also come with a new look for the docsite with a wider panel that fits more documentation in the screen:
The new docsite also includes search results for rust items from docs.rs for more specific apis:
What's Changed
- fix(interpreter): missing scrollTo boolean return value by @sehnryr in #3734
- feat: router-based wasm bundle splitting by @jkelleyrtp in #3683
- fix: wix assets path by @Klemen2 in #3763
- Fix hot reloading component removal with formatted attribute values by @ealmloff in #3559
- Add missing optional dependency to web feature by @damccull in #3805
- Prevent default if an onclick event is triggered on a button under a form by @ealmloff in #3804
- Feat: CLI Debug Warning by @DogeDark in #3779
- Revision: Open Browser With Localhost by @DogeDark in #3776
- Add helper methods to provide a single clone server only context by @ealmloff in #3483
- Fix --target flag not passed to cargo when Platform == Server by @marcobergamin-videam in #3595
- Fix opened browser blocking
dx serveby @wdcocq in #3818 - Support
concat!and other macros in asset path by @dtolnay in #3809 - Fix the typo checking CI by @ealmloff in #3824
- Fix span locations in ifmt and components by @ealmloff in #3823
- Expose Outlet Context by @wheregmis in #3788
- Make GenericRouterContext pub by @3lpsy in #3812
- Switch the default server function codec to json by @ealmloff in #3602
- Fix initialising tray icons on the macos desktop platform by @PhilTaken in #3533
- Update: tauri-bundler, tauri-utils by @DogeDark in #3801
- Update the server function crate to 0.7 by @ealmloff in #3560
- Revision: Cleanup
Dioxus.tomlby @DogeDark in #3802 - Update wry version to 0.50.1 by @mzdk100 in #3810
- fix(fullstack): Resolve suspense before the head chunk when streaming is disabled by @hackartists in #3829
- Typo Fix on Outlet Documentation by @wheregmis in #3830
- build(deps): bump ring from 0.17.8 to 0.17.13 by @dependabot[bot] in #3841
- Rename wgpu child window example for discoverability by @carlosdp in #3837
- fix(server): Provide GoogleBot compatibility. by @hackartists in #3851
- Return a 404 when paring the route fails by @ealmloff in #3860
- trivial fix for documentation example for onclick handler of buttons by @caseykneale in #3882
- Fixed android app crashing when changing phone orientation by @jjvn84 in #3905
- Fix later-attached wry event handlers not getting called by @MintSoup in #3908
- adds feature
axum_corethat compiles for wasm target exposing server functions and ssr by @conectado in #3840 - fixed the bug when future restarts the state goes to ready instead of pending by @avij1109 in #3617
- Fix windows CI by removing virtual file system cache by @ealmloff in #3912
- fix comment by @mcmah309 in #3929
- doc: Fix spawn doc by @mcmah309 in #3871
- doc: Add head ordering doc part by @mcmah309 in #3771
- build(deps): bump tar-fs from 2.1.1 to 2.1.2 in /packages/extension by @dependabot[bot] in #3954
- build(deps): bump openssl from 0.10.68 to 0.10.72 by @dependabot[bot] in #3955
- Remove default features when fullstack is enabled and one platform is enabled in the default features by @ealmloff in #3925
- Allow spread attributes to be set directly by @ealmloff in #3881
- Fix component macro with where clause by @ealmloff in #3951
- Fix select multiple default value by @ealmloff in #3953
- Fix key validation logic by @ealmloff in #3936
- Fix escaped text in ssr stylesheets and scripts by @ealmloff in #3933
- Wait for the suspense boundary above the router to resolve before sending the first streaming chunk by @ealmloff in #3891
- feat: inline dioxus-native from blitz by @jkelleyrtp in #3675
- build(deps): bump JamesIves/github-pages-deploy-action from 4.6.9 to 4.7.3 by @dependabot[bot] in #3794
- fix: more accurate derive
Clone, PartialEqfor generic components by @clouds56 in #3968 - Provide
HotkeyStateon Global Shortcut Events by @CryZe in #3822 - feat: Add logger to logger example by @mcmah309 in #3846
- build(deps): bump crossbeam-channel from 0.5.14 to 0.5.15 by @dependabot[bot] in #3978
- Changes to support axum 0.8 by @CristianCapsuna in #3820
- Update axum and many dependencies by @stevelr in #3825
- Fix: Eval Prematurely Dropping by @DogeDark in #3877
- Env logger feature by @mcmah309 in #3775
- Update and Improve Dev Container by @LeWimbes in #3977
- default the storage to UnSyncStorage in ReadSignal type by @RobertasJ in #3879
- fix(rsx): formatted attribute merging by @sehnryr in #3719
- fix: Use as_value() to properly serialize form values in login example by @created-by-varun in #3835
- Fix javascript asset bundling errors and fallback by @ealmloff in #3935
- Manganis CSS Modules Support by @DogeDark in #3578
- fix(fullstack): Allow configuration of the public_path by @brianmay in #3419
- feat: add cli support to build assets from executable by @brianmay in #3429
- Add some CLI docs for stdin file input to fmt command by @carlosdp in #3934
- feat: update flake.lock by @srghma-old in #3994
- fix: collectFormValues should be retrieveFormValues, export WeakDioxusChannel by @jkelleyrtp in #3993
- Fix the wgpu child window example by @dowski in #3989
- Fix: Toast Flash of Unstyled Content by @DogeDark in #4012
- Add android sync lock to asset handler to avoid already borrowed errors on android by @rhaskia in #4006
- Remove signal write warnings by @ealmloff in #4024
- fix
FormData::validby @clouds56 in #4027 - fix: dx check now respects files to ignore (e.g. .gitignore) by @SilentVoid13 in #4038
- Fix JS deprecation warning in wasm init by @sebdotv in #4054
- Fix typo in router example by @kyle-nweeia in #4069
- Fix parsing of braced expressions followed by a method by @jjvn84 in #4035
- Binary patching rust hot-reloading, sub-second rebuilds, independent server/client hot-reload by @jkelleyrtp in #3797
- fix: interaction between both hot-reload engines by @jkelleyrtp in #4083
- Add Missing Fields From Scroll Event by @mcmah309 in #4022
- fix: add missing
imgattrs by @wiseaidev in #4073 - Update dx serve output: remove wrap in right-side paragraphs by @sebdotv in #4055
- feat(html): add scroll method to MountedData by @sehnryr in #3722
- Support scrollIntoView alignment options by @otgerrogla in #3952
- Add "native" feature flag to examples by @nicoburns in #4050
- fix: dx bundle progress output off-by-one in log lines by @chrivers in #4014
- call_with_explicit_closure support closure in block by @clouds56 in #4031
- Fix clearing error boundaries by @ealmloff in #4041
- Use SuperInto and correct Owner for props defaults by @pandarrr in #3959
- Fix the base path in desktop builds by @ealmloff in #3949
- adhoc: Fix Clippy lints in const-serialize etc. by @gbutler69 in #3880
- Fix dx serve proxying of websocket connections established from the browser by @arvidfm in #3895
- Merge static and dynamic styles by @ealmloff in #3950
- feat(cli): add
bundle.androidconfig to build and sign the apk file in release mode by @fontlos in #4062 - Inline the TailwindCLI into dx and run it during serve by @jkelleyrtp in #4086
- Replace magic-nix-cache-action by @Hasnep in #4096
- Fix websocket server functions and add an example by @ealmloff in #4107
- fix(ci): out of disk space by @Jayllyz in #4090
- Fix web redirect routes by @ealmloff in #4109
- CLI self-updater, warn on version mismatch, direct install.sh option, androidmanifest and info.plist customization, bump to 0.7-alpha.0 by @jkelleyrtp in #4095
- fix stdin handling for the tw watcher by @jkelleyrtp in #4119
- fix: use response files (@Args) on windows by @jkelleyrtp in #4121
- Fix
is_release_profileLogic by @LeWimbes in #4091 - fix: fixed wasm and js paths in release mode by @wosienko in #4140
- fix: use diagnostic instead of compilermessage giving rendered ansi logs during hotpatch by @jkelleyrtp in #4123
- Fix authentication example by @ealmloff in #4145
- fix the ADRP violation bugs by treating TLS as Text by @jkelleyrtp in #4152
- fix(cli): prevent linker argument overflow on Windows by @fontlos in #4126
- fix windows subsecond, add
DX_LINKERandDX_HOST_LINKERenv var overrides by @jkelleyrtp in #4164 - fix: Make
Writable::toggleuse peek to avoid subscribing asReadable::ClonedusesReadable::readby @marc2332 in #4166 - fix: use system ranlib to build a table of contents for the hotpatching archive by @jkelleyrtp in #4163
- fix: symbol mismatch in object file by @dsgallups in #4171
- fix: use the rustc env for linking too, hopefully fixing windows by @jkelleyrtp in #4172
- subsecond: Typed HotFn pointer by @mockersf in #4153
- fix(cli): filter out .lib files when targeting Android by @fontlos in #4130
- Fix setting option value to an empty string by @ealmloff in #4176
- fix rust 1.87 with wasm-opt bulk-memory, allow configuring wasm-opt flags by @jkelleyrtp in #4187
- feat: copy frameworks to Frameworks folder, detect linkers, custom target dirs by @jkelleyrtp in #4174
- Enable serve_dioxus_application for WASM targets by @DrewRidley in #4170
- debugger support for dx by @jkelleyrtp in #3814
- fix: only patch pid and require rebuilds by @jkelleyrtp in #4197
- refactor: remove
once_celldependency and usestd::syncequivalents by @FalkWoldmann in #4185 - use vcs when
dx newby @jkelleyrtp in #4199 - fix hot-reload watcher for client/server by @jkelleyrtp in #4200
- attempt to fix playwright by @jkelleyrtp in #4198
- Restore docs CI checks and fix all doc lints by @ealmloff in #4204
- Clarify schedule_update docs by @Craig-Macomber in #4127
- Fix the toggle event by @ealmloff in #4206
- chore(ssr): update
askama_escapedependency by @Kijewski in #4215 - subsecond/cli: fix linker and passing through -fuse-ld properly by @laundmo in #4222
- Fix dx bundle and release web builds by @ealmloff in #4211
- Update global hotkey by @leo030303 in #4207
- feat: update examples to tailwind v4 by @danielkov in #3943
- Add the onload property to links by @Makosai in #3843
- fix: escape backslashes in debug locations for HTMLData serialization by @windows-fryer in #4116
- unset CARGO_MANIFEST_DIR, don't set it to empty string by @jkelleyrtp in #4225
- Upgrade to Blitz 0.1.0-alpha.2 by @nicoburns in #4227
- Remove schedule_update and schedule_update_any from prelude by @Craig-Macomber in #4128
- Update Playwright to version 1.52.0 by @LeWimbes in #4125
- Unify todomvc and todomvc-native examples by @nicoburns in #4228
- Move asset hashing into the CLI by @ealmloff in #3988
- re-enable linux arm64 in CI for tests and release by @jkelleyrtp in #4226
- Fix url encoding query and implement FromQueryArgument for Option by @ealmloff in #4213
- Allow changing the base path from a cli arg by @ealmloff in #4242
- white-list .rcgu.o files in the linking phase, otherwise dump them into the normal linking pile by @jkelleyrtp in #4246
- chore(deps): bump tar-fs from 2.1.2 to 2.1.3 in /packages/extension by @dependabot[bot] in #4243
- Always download wasm opt from the binary by @ealmloff in #4247
- Only
use std::sync::Arcwhen needed:debug_assertionsenabled by @flba-eb in #4261 - Upgrade Blitz to
0.1.0-alpha.3and add Dioxus-Native WGPU Canvas Integration by @nicoburns in #4286 - Fix
--argsand handle merging in@serverand@clientby @ealmloff in #4212 - Switch to owned listener type by @ealmloff in #4289
- Allows desktop apps to open mailto links by @jjvn84 in #4282
- Translate position to account for the display scaling factor. by @pythoneer in #4275
- feat: Opt-out
htmlindioxus-routerby @marc2332 in #4217 - update and improve chinese README.md by @Yuhanawa in #4254
- Fix router hydration by @ealmloff in #4209
- Use different release profiles for desktop and server builds, adhoc profiles by @ealmloff in #3693
- Make new_window asynchronous by @ealmloff in #4297
- properly respect rustflags, fix x86-sim issue by @jkelleyrtp in #4295
- Fixes issue with the file dialog showing only folders and not files by @jjvn84 in #4177
- Fix base path by @ealmloff in #4276
- tell user about basepath by @jkelleyrtp in #4298
- Cache hashed assets forever in fullstack by @ealmloff in #3928
- Remove invalid global data attribute by @navyansh007 in #4270
- Improve server macro documentation by @Nathy-bajo in #3403
- Allow a borrowed key to move into children by @Threated in #4277
- Implement Into for the default server function error type by @ealmloff in #4205
- Restore SSG serve logic by @ealmloff in #4111
- Add better error handling for wasm-opt and prevent file truncation on error by @mohe2015 in #4313
- Avoid fingerprint busting during builds by @hecrj in #4244
- use
dx runfor playwright tests, properly abort if error occurs, don't ddos github releases, split apt-cache by os/target in matrix by @jkelleyrtp in #4315 - Add initial version of hash history by @mohe2015 in #4311
- fix(cli, breaking): Align Android applicationId with user's
bundle.identifierby @fontlos in #4103 - Remove broken links in
examples/README.mdby @StudioLE in #4318 - add
--offline,--locked, removedioxusbranding if dioxus is not being used explicitly by @jkelleyrtp in #4155 - Create SECURITY.md by @wiseaidev in #4136
- Fix docs.rs build for
dioxus-libcrate by @nicoburns in #4321 - fix "multiple" attribute by @jkelleyrtp in #4323
- Don't use inline scripts and function constructor by @mohe2015 in #4310
- Fix hotpatched assets by @ealmloff in #4326
- Upgrade to Blitz
0.1.0-alpha.4by @nicoburns in #4335 - Handle panics in main on android by @mohe2015 in #4328
- Pass android linker to cargo by @mohe2015 in #4332
- Intentionally shadow module to prevent accidential use by @mohe2015 in #4327
- fix ios codesign on device by @jkelleyrtp in #4339
- Hashless assets by @ealmloff in #4312
- chore: update readme - reference Yew SSR by @wiseaidev in #4075
- Fix form submission on native if there is an onclick handler somewhere by @mohe2015 in #4329
- Save logical position when restoring on macos by @clouds56 in #4061
- chore(deps): upgrade wry from 0.45.0 to v0.52.0, switch to websocket instead of longpoll by @Plebshot in #4255
- fix issue: Routable doesn't work with component in a core module. #4331 by @zhiyanzhaijie in #4350
- feat: close behaviour for specific window by @Klemen2 in #3754
- fix multiwindow due to mounts not dropping in virtualdom by @jkelleyrtp in #4351
- Reclaim element id for all removed nodes by @gammahead in #3782
- fix: allow to name module
stdin project by @davidB in #4353 - Add a bevy-texture example based on wgpu-texture by @jerome-caucat in #4360
- Native: Accept
winit::WindowAttributesas a config value by @nicoburns in #4364 - Fix router state after client side navigation by @ealmloff in #4383
- Native: Split
dioxus-native-domcrate out ofdioxus-nativeby @nicoburns in #4366 - Add PartialEq and Eq derives to ServerFnError by @Himmelschmidt in #4393
- fix(bundle): add serde defaults to prevent deserialization errors by @rennanpo in #4398
- prevent_default must be called synchronously or it will have no effect by @LilahTovMoon in #4386
- final 0.7 fixes: xcode 15/16 hybrid, auto openssldir for android, include_*! tracking hotpatch, fix /assets/ brick at high opt levels, windows linker file, etc by @jkelleyrtp in #4376
- Fixed touch input it will now serialize the touchlist by @bananabit-dev in #4406
- updated the dependencies - maintaining compatibility and tests by @debanjanbasu in #4363
- Reconnect the edits websocket if it disconnects by @ealmloff in #4391
- fix link opening on mobile by @jkelleyrtp in #4415
- Warn about assets being stripped if strip is true and the current package depends on manganis by @ealmloff in #4400
- Example of rendering a dioxus-native app to a texture by @nicoburns in #4365
- fix unicode characters in line printing by @jkelleyrtp in #4420
- Prevent desktop reloads at the wry level by @ealmloff in #4422
- Capture the rustc environment and project it into
runby @jkelleyrtp in #4421 - fix: don't eat comments in more situations by @jkelleyrtp in #4423
- Avoid the accidental removal of comments inside expressions by dx fmt by @jjvn84 in #4410
- clean up prelude by @jkelleyrtp in #4416
- Fix assets with odd extensions and race condition with the same asset at different paths by @ealmloff in #4436
- Fix Tailwind race condition in fullstack serve mode by @Himmelschmidt in #4433
- Remove dioxus-lib, fix doc imports by @ealmloff in #4438
- Example of rendering a dioxus-native app to a texture in a Bevy application by @jerome-caucat in #4427
- Fix server function warning with default features by @ealmloff in #4453
- Upgrade Blitz to
0.1.0-rc.1by @nicoburns in #4452 - Add secure context on android by @OlivierLemoine in #4428
- fix(bundle): add serde default for all fields that impl Default by @wdjcodes in #4442
- CLI: add
--rendererargument by @nicoburns in #4320 - Allow customization of MainActivity.kt by @Kbz-8 in #4294
- Fix hot patching hook types by @ealmloff in #4381
- Use Blitz 0.1.0-rc2 by @nicoburns in #4462
- Fix title example on native by @nicoburns in #4463
- better logs, don't run codesign if no assets are found by @jkelleyrtp in #4464
- Fix asset location for linux bundles by @ealmloff in #4460
- Allow user to specify =false for default true flags by @ryo33 in #4467
- Downgrade chrono to 0.4.39 by @DanielWarloch in #4473
- Boxed and mapped signals preparing for stores by @ealmloff in #4413
- Fix rustc wrapper to read command files for linking detection by @Himmelschmidt in #4481
- Stores: Externally tracked state and reactive collections by @ealmloff in #4483
- Use data dir instead of home dir for dioxus-related data by @Andrew15-5 in #4445
- Vendor OpenSSL on android with google prebuilt libs by @jkelleyrtp in #4511
- fix: Use Rc for lifecycle management by @yydcnjjw in #4471
- add basic crash analytics and very light telemetry to dioxus-cli by @jkelleyrtp in #4224
- Adds a build and output for the dioxus-cli by @damccull in #4519
- Move ctrl-c handler to non-conditional match by @s3bba in #4532
- Cross platform asset resolver by @ealmloff in #4521
- allow customizing entitlements by @jkelleyrtp in #4533
- fix platform unification by @jkelleyrtp in #4536
- Clarify telemetry paragraph about rollups by @Andrew15-5 in #4539
- Bump Blitz to 0.1.0-rc.3 (+dangerous_inner_html + style ns attrs) by @nicoburns in #4538
- Allow specifying min_sdk_version in dioxus config for Android. by @rhaskia in #4549
- Don't output escape codes for the cursor when the tui isn't active by @ealmloff in #4556
- Improve use_server_cached docs by @mcmah309 in #4557
- Fix hotdog asset by @emmanuel-ferdman in #4570
- Fix integration of SSL libs into non-ARM64 Android builds. by @priezz in #4563
- Fix store macro with struct bounds by @ealmloff in #4572
- Fix hydration of link element by @ealmloff in #4561
- Remove must_use from Resource by @mcmah309 in #4551
- Add '.zed' folder for Zed-related development by @ktechhydle in #4575
- Bump tmp from 0.2.1 to 0.2.5 in /packages/extension by @dependabot[bot] in #4524
- Correct misleading string content. by @dabrahams in #4542
- Bump actions/checkout from 4 to 5 by @dependabot[bot] in #4574
- fix: select best match from --device by @jkelleyrtp in #4581
- Fix the server extension on windows server bundles by @ealmloff in #4555
- show panics in the toast in wasm by @jkelleyrtp in #4582
- fix: automatic rebuilds, num_threads for localpools by @jkelleyrtp in #4583
- ensure wasm-split has lto and debug enabled by @jkelleyrtp in #4584
- bump android min-sdk up to 28 by @jkelleyrtp in #4585
- fix lints on rust 1.89 by @jkelleyrtp in #4587
- feat: add subsecond serve by @jkelleyrtp in #4588
- Deprecate ReadOnlySignal by @mcmah309 in #4552
- Fix empty borrow location warnings by @ealmloff in #4593
- Add cancel event by @d-corler in #4476
- feat: add dx print command, drive hotpatching engine directly. by @jkelleyrtp in #4602
- Improve placeholder hash error message by @ealmloff in #4615
- Upgrade Blitz to v0.1.0 by @nicoburns in #4619
- Remove transitions from todomvc stylesheet by @nicoburns in #4620
- Rebuild router on every hot reload message by @s3bba in #4537
- Fixed client config macro by @snatvb in #4650
- fix: feature gate tokio and tracing by @omar-mohamed-khallaf in #4651
- Implement copy for eval by @ealmloff in #4655
- Add GlobalStore to the prelude by @ealmloff in #4662
- Allow relative assets in rust > 1.88 by @ealmloff in #4658
- Pin serde in the CLI by @ealmloff in #4663
- Remove usage of private syn modules by @ealmloff in #4664
- Fix opening in new tab with internal links by @ealmloff in #4677
- Don't rely on
windowby @mohe2015 in #4697 - Fix the root error boundary during suspense in ssr by @ealmloff in #4710
- Fix hydration error suspense by @ealmloff in #4640
- native: open links in default webbrowser by @nicoburns in #4623
- Bump tar-fs from 2.1.3 to 2.1.4 in /packages/extension by @dependabot[bot] in #4702
- codify "platform" into resolution logic, server-fn/fullstack overhaul by @jkelleyrtp in #4596
- Fix chained attribute if statements with static strings by @ealmloff in #4721
- Don't try launching a tokio runtime if we are already within one by @mohe2015 in #4699
- Fix splitting logic for serve args by @kristoff3r in #4695
- Fix stores with vec index method and expose opaque writer types by @ealmloff in #4684
- Fix fullstack serialization order for adjacent components by @ealmloff in #4600
- fix: use floats for pointer events by @Tumypmyp in #4708
- Fix hydration with empty spread attributes by @ealmloff in #4647
- fix: save cli config as a toml file by @omar-mohamed-khallaf in #4652
- Fix route hydration with ssg without early chunk commit by @ealmloff in #4654
- Fix #4504 where
dx fmtfails on eval of JS that contains empty line. by @nilswloewen in #4506 - Sync ReadSignal and Store by @ealmloff in #4608
- Improve use_hook_did_run docs by @mcmah309 in #4554
- Improve use_server_future docs by @mcmah309 in #4558
- Look for strip settings in inherited profiles and global configs by @ealmloff in #4645
- move
ScopeIdmethods to the runtime by @jkelleyrtp in #4723 - Fix Sse keepalive build error by @fasterthanlime in #4725
- fix: hotpatching fullstack by @jkelleyrtp in #4730
- Propagate linker failure by @mohe2015 in #4728
- Update gradle wrapper by @mohe2015 in #4726
- Upgrade to Blitz v0.2.0 by @nicoburns in #4731
- FIX: web.https configuration - error: no process-level CryptoProvider available by @tgrushka in #4736
- More fullstack fixes by @jkelleyrtp in #4737
- Fix ReadOnlySignal alias without storage by @ealmloff in #4735
- Fix: File dialogs that are not part of a form by @Klemen2 in #4752
- Don't rely on
windowPart 2 by @mohe2015 in #4757 - native: disable debug logs by default by @nicoburns in #4740
- Handle wasm-bindgen wbg_cast helper in wasm hotpatching by @tekacs in #4748
- redirects, middleware,
Transport, set/capture error status by @jkelleyrtp in #4751 - Fix wasm hotpatching for zero-sized data symbols by @tekacs in #4747
- Fix base path for wasm splitting by @mohe2015 in #4770
- fix collect2 ld error with hotpatching by @jkelleyrtp in #4771
- use
queue_eventsinstead ofprocess_eventsto fix ssr issue by @jkelleyrtp in #4772 - Fix on NixOS by @mohe2015 in #4776
- Don't rely on
windowby @mohe2015 in #4775 - Feat: "dx new" check if given project name is available in filesystem by @thyseus in #4773
- fix: server function custom errors set status codes by @jkelleyrtp in #4782
- Prevent hot patch from leaving devserver in BuildError state by @tekacs in #4784
- more fullstack cleanups: loaders serialize, ServeConfig only by @jkelleyrtp in #4785
- remove --docs cfg to fix docsrs building by @jkelleyrtp in #4788
- datatransfer object, drag_and_drop example, fix drag-and-drop by @jkelleyrtp in #4789
- Elements: add autocorrect attribute to and <textarea> by @fasterthanlime in #4797
- resolve the index before rendering by @jkelleyrtp in #4806
- 👩🏫 Add support for
default-membersby @Jasper-Bekkers in #4811 - Removed wasm rel-preload link from bundle index.html to save bandwidth for Safari users by @RickWong in #4796
- follow up to serveconfig by @jkelleyrtp in #4820
- Support
publicdir by @tekacs in #4783 - DX components command by @ealmloff in #4669
- CLI fixes for hotpatching the playground by @ealmloff in #4715
- Fix the info message for the dx components subcommand by @ealmloff in #4832
- Native: implement hot-reloading of stylesheets by @nicoburns in #4830
- fix(hotpatch): Gracefully handle missing '-flavor' flag during WASM link by @luckybelcik in #4833
- Readable and Writable helpers for String, HashMap and HashSet by @ealmloff in #4834
- Skip emitting a transposed type if the original type is entirely generic by @ealmloff in #4838
- fix(cli): correct Android toolchain target for 32-bit arm architectures by @atty303 in #4837
- Pin tauri-macos-sign by @ealmloff in #4845
- fix: tokio rt is not set when calling handlers by @jkelleyrtp in #4850
- use
CapturedErrorasdioxus::Ok()so resources still function as expected by @jkelleyrtp in #4851 - Fullstack: Fix missing query string on
#[get]server functions by @bwskin in #4827 - restore the extract function for server functions by @ealmloff in #4849
- Add option_asset! to match asset! by @tekacs in #4791
- feat: set windows subsytem to windows for gui apps by @jkelleyrtp in #4855
- Pipe Android/ADB logs into CLI by @wheregmis in #4853
- Fix updating components and local components by @ealmloff in #4856
- multiple fullstack nits/cleanups before release by @jkelleyrtp in #4852
- Relax asset resolver bounds and document resolving folder assets by @ealmloff in #4859
- Expand relative assets to a placeholder if we are running in rust analyzer by @ealmloff in #4860
- Add some functions to read/write request header for server functions by @javierEd in #4823
- Feat: eager loading of assets by @omar-mohamed-khallaf in #4653
- fix: dx not recognizing [web, server] in default by @jkelleyrtp in #4865
New Contributors
- @damccull made their first contribution in #3805
- @marcobergamin-videam made their first contribution in #3595
- @wdcocq made their first contribution in #3818
- @dtolnay made their first contribution in #3809
- @wheregmis made their first contribution in #3788
- @3lpsy made their first contribution in #3812
- @PhilTaken made their first contribution in #3533
- @mzdk100 made their first contribution in #3810
- @carlosdp made their first contribution in #3837
- @caseykneale made their first contribution in #3882
- @jjvn84 made their first contribution in #3905
- @MintSoup made their first contribution in #3908
- @conectado made their first contribution in #3840
- @avij1109 made their first contribution in #3617
- @mcmah309 made their first contribution in #3929
- @clouds56 made their first contribution in #3968
- @CristianCapsuna made their first contribution in #3820
- @stevelr made their first contribution in #3825
- @RobertasJ made their first contribution in #3879
- @created-by-varun made their first contribution in #3835
- @brianmay made their first contribution in #3419
- @srghma-old made their first contribution in #3994
- @dowski made their first contribution in #3989
- @SilentVoid13 made their first contribution in #4038
- @sebdotv made their first contribution in #4054
- @kyle-nweeia made their first contribution in #4069
- @otgerrogla made their first contribution in #3952
- @chrivers made their first contribution in #4014
- @pandarrr made their first contribution in #3959
- @gbutler69 made their first contribution in #3880
- @arvidfm made their first contribution in #3895
- @fontlos made their first contribution in #4062
- @Hasnep made their first contribution in #4096
- @Jayllyz made their first contribution in #4090
- @wosienko made their first contribution in #4140
- @dsgallups made their first contribution in #4171
- @mockersf made their first contribution in #4153
- @DrewRidley made their first contribution in #4170
- @FalkWoldmann made their first contribution in #4185
- @Craig-Macomber made their first contribution in #4127
- @Kijewski made their first contribution in #4215
- @laundmo made their first contribution in #4222
- @leo030303 made their first contribution in #4207
- @danielkov made their first contribution in #3943
- @Makosai made their first contribution in #3843
- @windows-fryer made their first contribution in #4116
- @pythoneer made their first contribution in #4275
- @Yuhanawa made their first contribution in #4254
- @navyansh007 made their first contribution in #4270
- @Nathy-bajo made their first contribution in #3403
- @Threated made their first contribution in #4277
- @mohe2015 made their first contribution in #4313
- @hecrj made their first contribution in #4244
- @StudioLE made their first contribution in #4318
- @zhiyanzhaijie made their first contribution in #4350
- @gammahead made their first contribution in #3782
- @davidB made their first contribution in #4353
- @jerome-caucat made their first contribution in #4360
- @Himmelschmidt made their first contribution in #4393
- @rennanpo made their first contribution in #4398
- @LilahTovMoon made their first contribution in #4386
- @bananabit-dev made their first contribution in #4406
- @debanjanbasu made their first contribution in #4363
- @OlivierLemoine made their first contribution in #4428
- @wdjcodes made their first contribution in #4442
- @Kbz-8 made their first contribution in #4294
- @DanielWarloch made their first contribution in #4473
- @yydcnjjw made their first contribution in #4471
- @s3bba made their first contribution in #4532
- @emmanuel-ferdman made their first contribution in #4570
- @priezz made their first contribution in #4563
- @ktechhydle made their first contribution in #4575
- @dabrahams made their first contribution in #4542
- @d-corler made their first contribution in #4476
- @snatvb made their first contribution in #4650
- @omar-mohamed-khallaf made their first contribution in #4651
- @kristoff3r made their first contribution in #4695
- @Tumypmyp made their first contribution in #4708
- @nilswloewen made their first contribution in #4506
- @fasterthanlime made their first contribution in #4725
- @tgrushka made their first contribution in #4736
- @tekacs made their first contribution in #4748
- @thyseus made their first contribution in #4773
- @Jasper-Bekkers made their first contribution in #4811
- @RickWong made their first contribution in #4796
- @luckybelcik made their first contribution in #4833
- @bwskin made their first contribution in #4827
- @javierEd made their first contribution in #4823
Full Changelog: v0.6.3...v0.7.0