Skip to content

0.21 -> 0.22 regression: failed to insert node before next sibling NotFoundError #4092

@finnbear

Description

@finnbear

Problem
My yew app crashes on a state change after updating from 0.21 to 0.22-0.23. Here is a fully-minimized reproducible example.

Steps To Reproduce

[package]
name = "yew_crash"
version = "0.1.0"
edition = "2021"

[dependencies]
yew = { version = "0.22", features = ["csr"] }
use yew::prelude::*;

#[function_component(Empty)]
fn empty() -> Html {
    html! {}
}

#[function_component(App)]
fn app() -> Html {
    let toggled = use_state(|| false);

    let onclick = {
        let toggled = toggled.clone();
        Callback::from(move |_: MouseEvent| {
            toggled.set(!*toggled);
        })
    };

    html! {
        <>
            if *toggled {
                <span></span>
            }
            <Empty/>
            if !*toggled { <div>{"old"}</div> }
            <button {onclick}>{"Toggle"}</button>
        </>
    }
}

fn main() {
    yew::Renderer::<App>::new().render();
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Yew App</title>
</head>
<body></body>
</html>
  1. trunk serve
  2. Click the button

Expected behavior
0.21 - doesn't crash

Screenshots
0.22-0.23 - crashes

Image

Environment:

  • Yew version: [e.g. v0.17, master]
  • Rust version: rustc 1.92.0 (ded5c06cf 2025-12-08)
  • Target, if relevant: [e.g. wasm32-unknown-emscripten]
  • Build tool, if relevant: trunk
  • OS, if relevant: [e.g. MacOS]
  • Browser and version, if relevant: Chromium (recent)

Questionnaire

  • I'm interested in fixing this myself but have no idea where to start
  • I would like to fix and I have a solution
  • I don't have time to fix this right now, but maybe later

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions