expo-dom skill: run web React code inside an Expo app with DOM components
Teaches your agent to use Expo DOM components, so web React code runs in a webview on iOS and Android and as-is on web.
- Installs
- 22.4K
- on skills.sh
- Stars
- 4K
- on GitHub
- Files
- 1
- besides SKILL.md
- Updated
- Nov 2026
- last repo commit
expo-dom shows your agent how to write Expo DOM components. A file with the 'use dom' directive runs verbatim in a webview on iOS and Android, and renders as-is on web. That lets you use web-only libraries such as recharts or react-syntax-highlighter in an Expo app.
It triggers when you migrate web code to native or need a web-only library, canvas, WebGL or an embed. The SKILL.md says that for the end-to-end migration of a whole web app you should use the expo-web-to-native skill instead. This skill bundles no scripts.
Good for
- Expo developers who need a web-only library such as recharts in a native app
- Teams moving React web components to native step by step
- Developers who need canvas, WebGL or iframes inside an Expo app
Install expo-dom
Claude Code
- 1
Copy this prompt.
Install the expo-dom skill in Claude Code. Run this command: npx skills add https://github.com/expo/skills --skill expo-dom Then check that it loaded and tell me how to use it.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Node.js.
From its listing on skills.sh. Source.
What's in the skill
When it loads
Use Expo DOM components to run web code in a webview on native and as-is on web. Migrate web code to native incrementally. For the end-to-end migration of a whole web app, use the expo-web-to-native skill.
Sections in SKILL.md
- What are DOM Components?
- When to Use DOM Components
- When NOT to Use DOM Components
- Basic DOM Component
- Rules for DOM Components
- The dom Prop
- Common dom Prop Options
- Exposing Native Actions to the Webview
- Using Web Libraries
- CSS in DOM Components
- Expo Router in DOM Components
- Router APIs That Require Props
- Detecting DOM Environment
- Assets
- Usage from Native Components
- Platform Behavior
Key facts
- Author
- Expo (expo/skills)
- Installs on skills.sh
- 22,449 as of 2026-11-02
- GitHub stars
- 4,005 for the whole expo/skills repo, 2026-11-02
- License
- MIT (as detected by GitHub)
- Last commit to the repo
- 2026-11-01
- What is inside
- 2 files including SKILL.md (agents/openai.yaml)
What it includes
Web-only libraries, migrations, WebGL; not for simple UI or layout routes
Avoid DOM components when native performance is critical, the UI is simple, you need deep native integration, or the file is a _layout route.
Read ·
When to use and when not toA file with 'use dom' and one default export
Five rules: the directive, a single default export, its own file, serializable props only, and CSS inside the component file.
Try: “Wrap this recharts line chart as an Expo DOM component and use it on the home screen.”
Write ·
Basic DOM componentWebview options such as scrollEnabled and style
Every DOM component gets a dom prop. Examples: disable body scrolling, control size, or flow under the notch.
Write ·
The dom propPass async functions as props to call native code
Async function props let the webview trigger native functions such as an alert or saving data.
Write ·
Native actionsLink and useRouter work; search-params hooks need props
useLocalSearchParams, usePathname and four other hooks do not work inside a DOM component. Read them in the native parent and pass them as props.
Write ·
Expo Router in DOM componentsRequire assets, keep CSS in the file, detect the DOM environment
Prefer require() for assets. CSS imports must be in the DOM component file. IS_DOM from expo/dom shows where the code runs.
Write ·
Assets, CSS and IS_DOMWKWebView on iOS, WebView on Android, as-is on web
On web the dom prop is ignored. Keep DOM components focused and test on all platforms.
Read ·
Platform behavior and tipsRuns an npx command to report skill problems to Expo
The SKILL.md tells the agent to submit feedback with npx --yes @expo/agent-cli@latest feedback, only when it has something specific to report.
Runs code ·
Submitting feedback
From the official docs
Permissions
Low risk
The skill edits your Expo components and can run an npx command that sends feedback to Expo. Read the feedback text before you approve it.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only mode
Watch out for
It can send feedback to Expo
The SKILL.md tells the agent to run npx --yes @expo/agent-cli@latest feedback when it finds errors or repeated failures. The report includes task context, so read it before you approve the command.
Technical details
| Talks to | Expo feedback service via @expo/agent-cli, only when feedback is submitted |
|---|---|
| Scopes |
|
Questions
What does the expo-dom skill do?
It teaches your agent Expo DOM components. These run web React code in a webview on native and render as-is on web, which lets you use web-only libraries in an Expo app.
How do I install it in Claude Code, the Claude app or Codex?
Use the install box at the top of this page. The expo/skills README says Claude Code and Codex can install the Expo plugin from their plugin marketplaces, and that other agents use the skills CLI.
Does it migrate a whole web app to native?
No. The SKILL.md points to the expo-web-to-native skill for the end-to-end migration of a whole web app. This skill is for running web code in a webview and moving code over step by step.
Which DOM component rules matter most?
Put the 'use dom' directive at the top, give it one default export in its own file, pass only serializable props, and keep CSS inside the file.
Does it need an API key?
None is mentioned in the SKILL.md. The skill bundles no scripts.
Is it safe to install?
It is one markdown file with a reference file for Codex display text, and no scripts. It does tell the agent to run an npx feedback command to Expo when something is wrong with the skill. Review that command before you approve it.
Information
updated Nov 2, 2026
- Repository
- expo/skills
- Folder
plugins/expo/skills/expo-dom
Sources
Docs, issue trackers and discussions this page is built from.
Show all 2Hide
- expo-dom SKILL.md · github.com
- expo/skills README · github.com