Dev & Engineering exporeact-nativedom-componentswebviewexpo-routerweb-libraries

Expo DOM Components

Reuse web code and browser-only libraries inside Expo native apps with incremental migration support.

FollowSkills review · FSRS-2.0
Not recommended
49/ 100 5-point scale 2.5 / 5
Trust14 / 25 · 2.8/5

The document defines boundaries for native callbacks, serializable props, and WebView configuration, but it does not require user confirmation for native actions, constrain external iframes/libraries, explain sensitive-data handling, or provide rollback guidance. The MIT license is verifiable, so this is a deduction rather than a red-line finding.

Reliability7 / 20 · 1.8/5

The guidance is internally coherent and covers creation, routing, assets, platform behavior, and limitations with multiple examples. However, it lacks dependency/version setup, a test suite, abnormal-input handling, and diagnosable failure feedback; the score remains within the static-review ceiling.

Adaptability10 / 15 · 3.3/5

Use and non-use cases, platform differences, and several capability boundaries are reasonably clear for semantic triggering. Expo SDK/React version requirements, dependency prerequisites, broader non-fit ranges, and Chinese-language support are not specified. Core functionality does not entirely depend on overseas services, so no additional mainland-China reachability deduction is applied.

Convention9 / 15 · 3.0/5

The skill has a name, description, version, MIT license, layered sections, substantial examples, and disclosures about performance, hot reload, and context isolation. It lacks maintainer responsibility, changelog, update path, dependency installation notes, and FAQs; publisher identity is unknown under the stated rule.

Effectiveness6 / 15 · 2.0/5

The material directly addresses core tasks including migration, DOM configuration, web libraries, CSS, routing, and native actions, and the examples are useful starting points. There is no execution evidence, examples still require project dependencies and platform/version adaptation, and broad claims such as support for any web library are not substantiated; the score stays below the static cap.

Verifiability3 / 10 · 1.5/5

The skill supplies auditable rules, a platform table, and code examples, while repository context shows only generic limits and version-check workflows. There are no skill-specific tests, third-party execution records, or corroborating sources, so evidence coverage is thin.

Evidence confidence:Low Reviewed Jul 20, 2026 Reviewed revision 8bd359f8a44d
Before you use it
  • Treat WebView callbacks and external content as security boundaries; add least-privilege design, input validation, and explicit confirmation before sensitive-data transfer or native writes/alerts.
  • The examples do not pin Expo SDK, React, or web-library versions; verify against current Expo documentation and validate on iOS, Android, and Web before adoption.
  • Do not interpret “any web library” as unconditional compatibility; check for unsupported browser APIs, native integration, and build configuration requirements.
Review evidence [1][2][3][4][5][6][7]
See the full review method →

What does this skill do, and when should you use it?

This skill guides developers in using Expo DOM components to run web code in a WebView on native platforms and render it directly on the web. It covers component structure, serializable props, CSS, web libraries, Expo Router, assets, and bridging native actions. It fits incremental reuse of existing React web components and browser-dependent content. It is not intended for performance-critical native UI, deep native integration, or simple interfaces.

Guides developers to create standalone components with the “use dom” directive and one default export; type and configure expo/dom DOMProps; expose native actions through async props; import CSS, web libraries, and bundled assets in the isolated DOM context; use Expo Router Link and router APIs; pass synchronous routing state from native parents as props; and account for iOS, Android, and web rendering behavior.

  1. Expo developers who need recharts, Chart.js, syntax highlighters, or other web-only libraries in native apps.
  2. Teams bringing existing React web components to iOS and Android without an immediate rewrite.
  3. Projects requiring complex HTML/CSS layouts, iframes, external embeds, Canvas, or WebGL.
  4. Developers combining native screen content with specialized web content.

What are this skill's strengths and limitations?

Pros
  • Runs web code in native WebViews while rendering directly on web.
  • Supports web-only libraries, complex CSS layouts, iframes, Canvas, and WebGL.
  • Documents native-action bridging, DOMProps, CSS, assets, and routing patterns.
  • Enables incremental migration instead of requiring an immediate rewrite.
Limitations
  • WebViews add overhead on native platforms, so this is unsuitable for performance-critical native UI.
  • Components must be standalone files with “use dom”, one default export, and serializable props.
  • The WebView has its own JavaScript context and cannot directly share native state.
  • The source provides no test suite, performance benchmarks, or specific Expo SDK compatibility matrix.

How do you install this skill?

The skill is located at plugins/expo/skills/expo-dom/SKILL.md in the repository. To install the full Expo skill collection, run: npx skills@latest add expo/skills --skill '*'. In Codex, the Expo plugin can also be installed with: codex plugin add expo@openai-curated. The source does not provide a command for installing only expo-dom.

How do you use this skill?

In an Expo project, ask an agent for a concrete task such as: “Create an Expo DOM chart component using recharts inside a native screen and set its height through the dom prop.” Ensure the component file starts with “use dom”, has one default export, and receives serializable props from its native parent.

How does this skill compare with similar options?

Compared with React Native components, DOM components are better suited to web-only libraries and complex web layouts but carry WebView overhead. Compared with local modules, they are not the recommended choice for deep native API integration. For migrating an entire web app, the source points to the expo-web-to-native skill.

FAQ

Is this skill paid?
It is marked MIT and listed in the open-source Framework skills group; the source does not state that Expo DOM components carry an additional fee.
Can every Expo Router hook be used directly inside a DOM component?
No. useLocalSearchParams, useGlobalSearchParams, usePathname, useSegments, and root-navigation hooks require synchronous native routing state; read them in the native parent and pass the values as props.
When should I avoid DOM components?
Avoid them when native performance is critical, the UI is simple, deep native integration is required, or the component is a _layout route.

More skills from this repository

All from expo/skills

Dev & Engineering

Expo Web-to-Native Migration

Turn an existing React website into a shippable Expo app, screen by screen.

Dev & Engineering

Expo App Structure Guide

A clear, scalable starting layout for a brand-new Expo Router app.

Dev & Engineering

Expo Native UI Builder

Build native-feeling, cross-platform interfaces with @expo/ui.

Dev & Engineering

Expo Brownfield Integrator

Guides teams in incrementally embedding Expo and React Native into existing native iOS or Android applications.

Automation & Ops

EAS Observe Performance Guide

Helps Expo teams instrument, query, and interpret production startup, navigation, and custom-event performance metrics.

Dev & Engineering

Expo Data Fetching

Practical networking guidance for Expo apps, covering API calls, caching, offline behavior, and authentication.

Dev & Engineering

Expo Skill Feedback

Collects feedback about Expo skills or Expo itself and manages anonymous usage telemetry.

Dev & Engineering

Expo Integration Examples

Adapt Expo’s official patterns for third-party integrations.

Design & Frontend

Expo Native UI Guide

Helps Expo developers build responsive screens with Apple-informed styling and a native-feeling experience.

Dev & Engineering

Expo SDK Upgrade Assistant

Guides Expo SDK upgrades, dependency fixes, and compatibility cleanup.

Dev & Engineering

Expo EAS Hosting Deployments

Deploy Expo websites and API routes while configuring secrets, domains, and the edge runtime.

Dev & Engineering

Expo Skill Eval

End-to-end testing for Expo skill triggering, code quality, and runtime rendering.

Dev & Engineering

Expo Tailwind Styling Setup

Configure Tailwind CSS v4, NativeWind v5, and cross-platform styling for Expo apps.

Dev & Engineering

Expo Router Navigation Guide

Design file-based routes and native navigation for Expo apps.

Dev & Engineering

Expo Native Module Migration Assistant

Move an existing Expo Swift module from the 1.0 DSL to the 2.0 macro API without changing its JavaScript contract.

Dev & Engineering

EAS Cloud Simulator

Run, control, and capture Expo apps remotely when a local iOS simulator or Android emulator is unavailable.

Automation & Ops

EAS Update Health Insights

Use the CLI to measure EAS Update health, adoption, crashes, and rollout readiness.

Dev & Engineering

Expo App Clip Builder

Configure an iOS App Clip for an Expo app and launch it from web URLs.

Dev & Engineering

Expo Development Client Builder

Build and distribute Expo development clients for native-code testing.

Dev & Engineering

Expo App Store Release Assistant

Build and ship Expo apps to the App Store, Google Play, and TestFlight with EAS.

Related skills