MOBILE DEVELOPMENT / Expo
Expo Web to Native Migration
Migrates a web React codebase to a native Expo app screen by screen: native shell first, whole web UI shippable in DOM components on day one, then strangler-order nativization with device verification.
“Migrate an existing web React app to a native iOS/Android app with Expo. Use when the user wants to turn a website into a mobile app, port a Next.js/Vite/CRA React codebase to React Native, or reuse web code on native incrementally.”
01 / THE REASONING
Why this made the selection.
- The migration spine keeps the app shippable at every step: assess into a durable worklist, scaffold, DOM-component shell as the day-one milestone, then one nativized screen per pass in value order.
- The false-friends idiom map and the verify-by-running parity recipe judge content and behavior on running apps rather than treating a clean build as proof.
02 / THE REVIEW RECORD
What we actually inspected.
Source review has boundaries.
A clear record is more useful than a “safe” badge.
Material inspected
- plugins/expo/skills/expo-web-to-native/SKILL.md
- plugins/expo/skills/expo-web-to-native/references/false-friends.md
- LICENSE
Our findings
- The assess step sorts every route into port-as-is, nativize-now, nativize-later or hybrid and flags third-party browser SDKs before migration starts.
- Nativize means redesign with platform UI first and styled primitives as fallback, explicitly not a web-layout reskin.
- The skill routes each step into existing Expo skills (expo-dom, expo-router, expo-data-fetching, eas-app-stores) instead of re-explaining their mechanisms.
Not established by this review
- No web app was migrated with this skill.
- DOM-component runtime size and simulator verification flows were not measured.
The review applies to the material and revision named here. A newer upstream release can change its behavior.
03 / PUT IT TO WORK
Add a skill to your workflow.
DOCUMENTED COMMAND
npx skills add https://github.com/expo/skills/tree/d4f484024fec15196bfd3c272e953e3f983972cf/plugins/expo/skills/expo-web-to-native --skill expo-web-to-native Copying does not execute this command. It may retrieve a newer version than the reviewed source.
- Install the complete skill directory with its references; a copied SKILL.md alone loses the false-friends map and device-verification recipe.
- Choose the intended agent and project scope in the installer, then review its permissions before using the skill.
Before you start
- Node.js/npm for this installer
- An agent that supports the Agent Skills format
- The web codebase to migrate and an Expo shell; simulators for verification runs
04 / FOLLOW THE EVIDENCE
The source trail.
Our notes are separate from the original resource.
Check upstream before adopting a new version.
https://github.com/expo/skills/blob/d4f484024fec15196bfd3c272e953e3f983972cf/plugins/expo/skills/expo-web-to-native/SKILL.md
Supports: summary, upstreamDescription, whySelected, bestFor, limitations, review, compatibility, access
https://github.com/expo/skills/blob/d4f484024fec15196bfd3c272e953e3f983972cf/plugins/expo/skills/expo-web-to-native/references/false-friends.md
Supports: review, whySelected, limitations
https://github.com/expo/skills/blob/d4f484024fec15196bfd3c272e953e3f983972cf/LICENSE
Supports: license
https://github.com/expo/skills/blob/d4f484024fec15196bfd3c272e953e3f983972cf/README.md
Supports: install, compatibility, access
https://github.com/vercel-labs/skills/blob/7407f3893ad4dceab546ac002c3ef806e4000c73/README.md
Supports: install
https://github.com/vercel-labs/skills/blob/7407f3893ad4dceab546ac002c3ef806e4000c73/src/git.ts
Supports: install