Frontend
1,902 installs
use-dom
by expo/skills
Use Expo DOM components to run web code in a webview on native and as-is on web. Migrate web code to native incrementally.
Skill content
Run web-only libraries in Expo apps by rendering them in webviews on native and as-is on web. - Supports any React web library (recharts, react-syntax-highlighter, canvas, WebGL) without modification by wrapping it in a DOM component file with the 'use dom'; directive - Passes serializable props and async functions from native to webview, enabling bidirectional communication between native and web contexts - Includes webview configuration options via the dom prop: scroll control, safe area behavior, manual sizing, and style overrides - Works with Expo Router navigation APIs; router state hooks require passing values as props from native parent components - Renders in WKWebView on iOS, WebView on Android, and as standard React on web with identical code What are DOM Components? DOM components allow web code to run verbatim in a webview on native platforms while rendering as-is on web. This enables using web-only libraries like recharts, react-syntax-highlighter, or any React web library in your Expo app without modification. When to Use DOM Components Use DOM components when you need: - Web-only libraries - Charts (recharts, chart.js), syntax highlighters, rich text editors, or any library that depends on DOM APIs - Migrating web code - Bring existing React web components to native without rewriting - Complex HTML/CSS layouts - When CSS features aren't available in React Native - iframes or embeds - Embedding external content that requires a browser context - Canvas or WebGL - Web graphics APIs not available natively When NOT to Use DOM Components Avoid DOM components when: