use-dom
Run web-only libraries in Expo apps by rendering them in webviews on native and as-is on web.
What it does
- 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
- Native performance is critical — Webviews add overhead
- Simple UI — React Native components are more efficient for basic layouts
Requirements & configuration
- 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
- iframes or embeds — Embedding external content that requires a browser context
- Router APIs That Require Props
- These hooks don't work directly in DOM components because they need synchronous access to native routing state:
Derived from the skill's own SKILL.md documentation · extracted 2026-07-23
Run web-only libraries in Expo apps by rendering them in webviews on native and as-is on web.
Source
Repository: https://github.com/expo/skills
use-dom FAQ
What does the use-dom skill do?
Use Expo DOM components to run web code in a webview on native and as-is on web. Migrate web code to native incrementally. 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
What does use-dom require?
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 iframes or embeds — Embedding external content that requires a browser context Router APIs That Require Props These hooks don't work directly in DOM components because they need synchronous access to native routing state:
How do I install use-dom?
Run: npx -y skills add https://github.com/expo/skills --skill use-dom --agent claude-code — the source lives at github.com/expo/skills.
Maintain use-dom?
Let people know it's listed here — add the badge (live metrics, light/dark aware) or a plain link to your README or docs.
[](https://getagentictools.com/skills/expo-skills-use-dom?ref=badge) npx agentictools info skills/expo-skills-use-dom The second line is the CLI lookup for this page — handy in READMEs and docs.