diff --git a/packages/core/src/scopes.rs b/packages/core/src/scopes.rs index a4b32e50d..cfc555543 100644 --- a/packages/core/src/scopes.rs +++ b/packages/core/src/scopes.rs @@ -702,19 +702,22 @@ impl ScopeState { while let Some(parent) = search_parent.take() { let parent = unsafe { &*parent }; - if parent - .shared_contexts - .borrow_mut() - .insert(TypeId::of::(), value.clone()) - .is_some() - { - log::warn!("Context already provided to parent scope - replacing it"); + if parent.scope_id() == ScopeId(0) { + let exists = parent + .shared_contexts + .borrow_mut() + .insert(TypeId::of::(), value.clone()); + + if exists.is_some() { + log::warn!("Context already provided to parent scope - replacing it"); + } + return value; } search_parent = parent.parent_scope; } - value + unreachable!("all apps have a root scope") } /// Try to retrieve a SharedState with type T from the any parent Scope.