DioxusLabs/dioxus · error
`GoBackButton` must have access to a parent router
Error message
`GoBackButton` must have access to a parent router
What it means
GoBackButton called use_router_internal() and got None, meaning no Router ancestor provides router context. In debug builds this panics; in release the button logs the error and renders inactive/disabled since it cannot navigate without a router.
Source
Thrown at packages/router/src/components/history_buttons.rs:72
/// # let mut vdom = VirtualDom::new(App);
/// # vdom.rebuild_in_place();
/// # assert_eq!(
/// # dioxus_ssr::render(&vdom),
/// # r#"<button disabled="true">go back</button>"#
/// # );
/// ```
pub fn GoBackButton(props: HistoryButtonProps) -> Element {
let HistoryButtonProps { children } = props;
// hook up to router
let router = match use_router_internal() {
Some(r) => r,
#[allow(unreachable_code)]
None => {
let msg = "`GoBackButton` must have access to a parent router";
error!("{msg}, will be inactive");
#[cfg(debug_assertions)]
panic!("{}", msg);
return VNode::empty();
}
};
let disabled = !router.can_go_back();
rsx! {
button {
disabled: "{disabled}",
onclick: move |evt| {
evt.prevent_default();
router.go_back()
},
{children}
}
}
}
View on GitHub (pinned to 24f6a829df)
Solutions
- Render GoBackButton inside a Router component so it can access the router context.
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at packages/router/src/components/history_buttons.rs:72 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of DioxusLabs/dioxus@24f6a829df (2026-08-23).
Data as JSON: /api/errors/3556fb7da4309a4e.
Report an issue: GitHub.