Skip to content

Upgrade to Dioxus 0.8.0-alpha.3 and sync dioxus-native(-dom) from the Dioxus repo - #1260

Merged
nicoburns merged 5 commits into
mainfrom
devin/1792776194-dioxus-0.8
Oct 23, 2026
Merged

nicoburns merged 5 commits into
mainfrom
devin/1792776194-dioxus-0.8

Conversation

@nicoburns

@nicoburns nicoburns commented Oct 23, 2026 •

Copy link
Copy Markdown
Member

Summary

Moves the dioxus-*/manganis pins from 0.7.3 to 0.8.0-alpha.3 and copies packages/native{,-dom}/src from Dioxus main over packages/dioxus-native{,-dom}/src verbatim. After this the two repos' copies differ only in the version lines and the style_threading: StyleThreading::Parallel setting (#1243), which Dioxus picks up with its next Blitz pin bump.

What the sync brings in (all of it needs dioxus-core/dioxus-html 0.8):

  • WriteMutations is the 0.8 stack machine (push_id/set_id/child/clone, BorrowedAttributeValue). mutation_writer.rs is now StackWriter<R: RealDom> (id/stack bookkeeping) + BlitzBackend (real tree ops); DioxusState keeps try_element_to_node_id.
  • mutation_buffer.rs: VirtualDom::rebuild/render_immediate write into a MutationBuffer and the document is only borrowed afterwards, so tasks/effects polled during the render can use NodeHandles (test task_polled_during_render_can_access_document).
  • keyboard_compat.rs is deleted: dioxus-html 0.8 uses keyboard-types 0.8, so BlitzKeyboardData etc. pass values through.
  • prelude re-exports html, elements::prelude::*, NamedKey (dioxus#5927) instead of the dioxus_elements alias.
  • The Blitz-only boolean_attributes_follow_their_value_after_mount test is kept (ported onto the new writer), and the unused rustc-hash dependency is dropped from both crates.

Fallout outside the two crates:

  • keyboard-types 0.8: Key::Enter → Key::Named(NamedKey::Enter) in todomvc, seven_guis and the browser.
  • dioxus-stores 0.8 (dioxus#5425 visibility witnesses): methods in #[store] impl<Lens> Store<T, Lens> blocks carry their own visibility, so the browser's cross-module ones become pub(crate). History::current_url -> impl Readable<..> cannot stay in a #[store] block until stores: let #[store] methods return impl Trait dioxus#5995 ships (E0446: the witness trait was private and the RPIT captures the Self: Witness<__V> bound), so it moves into the HistoryNav impl for now.
  • tests/blitz-tests/tests/stale_node_mapping.rs: ElementId(raw) is no longer constructible, and the "no stale mappings" assertion no longer holds: the 0.8 writer clears the mapping of the removed node only (StackState::clear_mapping), while descendants keep mappings to dropped generational ids. That is harmless here (core re-maps an ElementId via set_id before it is ever pushed, and get_node rejects dropped ids), so the two tests become no-panic tests in this PR. The stacked follow-up restores the invariant and the original tests.

Verified locally: cargo check --workspace --all-targets, cargo clippy --workspace --tests, cargo test -p dioxus-native-dom -p blitz-tests, cargo deny ... check licenses.

Link to Devin session: https://dioxus.staging.devinenterprise.com/sessions/8451be47ca9a4d89ac073c7243d2a30e
Open in Devin Desktop: https://dioxus.staging.devinenterprise.com/desktop/session/8451be47ca9a4d89ac073c7243d2a30e?variant=devin-insiders
Requested by: @nicoburns

WPT results

No changes in test results compared to main.

Generated by the WPT workflow.

@staging-devin-ai-integration

Copy link
Copy Markdown
Contributor

I'll fix CI failures and address comments from users with write access that start with 'Devin'.

  • Disable automatic comment, CI, and merge conflict monitoring

… Dioxus repo

Pins move from 0.7.3 to 0.8.0-alpha.3. The Dioxus copies of dioxus-native and
dioxus-native-dom are copied over verbatim (except the package versions and the
StyleThreading::Parallel setting), which brings the stack-machine WriteMutations
(StackWriter + BlitzBackend), the MutationBuffer that defers applying mutations until
the vdom has run, the html/NamedKey prelude re-exports, and removes the
keyboard-types 0.7 compat module and the unused rustc-hash dependency.
Named keys are Key::Named(NamedKey::..). #[store] methods now carry their own
visibility, so the cross-module ones become pub(crate), and current_url moves out of
the #[store] block into the HistoryNav impl because the macro's private witness
trait cannot be captured by an impl Readable return type.
The stack-machine writer only clears the mapping of the node being removed, so
descendants keep (harmless) mappings to dropped generational ids; ElementIds are
always re-mapped before they are pushed.
The dioxus-native prelude no longer aliases dioxus_html as dioxus_elements.
@nicoburns
nicoburns force-pushed the devin/1792776194-dioxus-0.8 branch from 286edea to 615f979 Compare October 23, 2026 19:33
@nicoburns
nicoburns enabled stacked auto-merge (squash) October 23, 2026 19:33
@nicoburns
nicoburns merged commit 286874c into main Oct 23, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant