import ExpoModulesCore import WebKit // This view will be used as a native component. Make sure to inherit from `ExpoView` // to apply the proper styling (e.g. border radius and shadows). class MyNativeModuleView: ExpoView { let webView = WKWebView() let onLoad = EventDispatcher() var delegate: WebViewDelegate? required init(appContext: AppContext? = nil) { super.init(appContext: appContext) clipsToBounds = true delegate = WebViewDelegate { url in self.onLoad(["url": url]) } webView.navigationDelegate = delegate addSubview(webView) } override func layoutSubviews() { webView.frame = bounds } } class WebViewDelegate: NSObject, WKNavigationDelegate { let onUrlChange: (String) -> Void init(onUrlChange: @escaping (String) -> Void) { self.onUrlChange = onUrlChange } func webView(_ webView: WKWebView, didFinish navigation: WKNavigation) { if let url = webView.url { onUrlChange(url.absoluteString) } } }