PlugWiki

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. 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. 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

  1. What are DOM Components?
  2. When to Use DOM Components
  3. When NOT to Use DOM Components
  4. Basic DOM Component
  5. Rules for DOM Components
  6. The dom Prop
  7. Common dom Prop Options
  8. Exposing Native Actions to the Webview
  9. Using Web Libraries
  10. CSS in DOM Components
  11. Expo Router in DOM Components
  12. Router APIs That Require Props
  13. Detecting DOM Environment
  14. Assets
  15. Usage from Native Components
  16. Platform Behavior

Key facts

Installs on skills.sh
22,449 as of 2026-11-02
License
MIT (as detected by GitHub)
Last commit to the repo
2026-11-01

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 to

  • A 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 component

  • Webview 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 prop

  • Pass 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 actions

  • Link 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 components

  • Require 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_DOM

  • WKWebView 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 tips

  • Runs 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 toExpo feedback service via @expo/agent-cli, only when feedback is submitted
Scopes
  • Edits React components in your Expo project

  • May run npx --yes @expo/agent-cli@latest feedback to report skill problems

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

expo/skillsskills.sh

Sources

Docs, issue trackers and discussions this page is built from.

Show all 2
  1. expo-dom SKILL.md · github.com
  2. expo/skills README · github.com

Updated Nov 2, 2026.