use-dom

Run web-only libraries in Expo apps by rendering them in webviews on native and as-is on web.

expo ↓ 31k
Claude Code
View source ↗

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.

use-dom on getagentictools
[![use-dom on getagentictools](https://getagentictools.com/badge/skills/expo-skills-use-dom.svg)](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.