diff --git a/packages/desktop/src/webview.rs b/packages/desktop/src/webview.rs index b83b5794e..a8a4dd23c 100644 --- a/packages/desktop/src/webview.rs +++ b/packages/desktop/src/webview.rs @@ -9,6 +9,7 @@ use crate::{ Config, DesktopContext, DesktopService, }; use dioxus_core::VirtualDom; +use dioxus_html::prelude::EvalProvider; use futures_util::{pin_mut, FutureExt}; use std::{rc::Rc, task::Waker}; use wry::{RequestAsyncResponder, WebContext, WebViewBuilder}; @@ -151,8 +152,11 @@ impl WebviewInstance { dom.base_scope().provide_context(desktop_context.clone()); // Also set up its eval provider - dom.base_scope() - .provide_context(Rc::new(DesktopEvalProvider::new(desktop_context.clone()))); + // It's important that we provide as dyn EvalProvider - using the concrete type has + // a different TypeId. + let provider: Rc = + Rc::new(DesktopEvalProvider::new(desktop_context.clone())); + dom.base_scope().provide_context(provider); WebviewInstance { waker: tao_waker(shared.proxy.clone(), desktop_context.window.id()),