---
title: "Expo Web to Native Migration: review, setup & limitations · Undominated.ai"
canonical: https://undominated.ai/skills/expo-expo-web-to-native/
description: "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."
---

# Expo Web to Native Migration: review, setup & limitations · Undominated.ai

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

[← Explore all skills](/skills/)

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.

 [See setup guidance ↓](#setup)[Original source ↗](https://github.com/expo/skills/tree/d4f484024fec15196bfd3c272e953e3f983972cf/plugins/expo/skills/expo-web-to-native)

SOURCE REVIEW

 Reviewed 2026-10-07
 Evidence 6 linked sources
 Publisher Expo
 Licence [MIT ↗](https://github.com/expo/skills/blob/d4f484024fec15196bfd3c272e953e3f983972cf/LICENSE)
 Revision d4f484024fec
 [Read what was—and wasn’t—checked ↓](#review)

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

 [Expo · upstream description ↗](https://github.com/expo/skills/blob/d4f484024fec15196bfd3c272e953e3f983972cf/plugins/expo/skills/expo-web-to-native/SKILL.md) Our analysis follows below.

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.

### A good fit for

 - Planning a Next.js or Vite React app migration to native
- Nativizing hot screens first while the long tail stays in DOM components

### Weigh up before choosing

 - The verification recipe is opinionated about tooling: it asks the user to install agent-browser and argent simulators rather than falling back to manual screenshots.
- Payments are a fork not a swap (store in-app purchase replaces web billing) and each DOM screen carries roughly a 2 MB web runtime per the skill; treat the size figure as guidance and measure the actual build.

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.

[Upstream setup instructions ↗](https://github.com/vercel-labs/skills/blob/7407f3893ad4dceab546ac002c3ef806e4000c73/README.md)

DOCUMENTED COMMAND

 npx skills add https://github.com/expo/skills/tree/d4f484024fec15196bfd3c272e953e3f983972cf/plugins/expo/skills/expo-web-to-native --skill expo-web-to-native Copy command ↗

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

### Compatibility

Agent Skills-compatible coding agents · A web React codebase plus an Expo shell; simulators and the named verification tools for device checks

### Both codebases; simulator and store operations

 - Read the web app and the Expo shell broadly to build the worklist
- Write migration worklists, shell routes and nativized screens when authorized
- Verification drives simulators and can trigger store or TestFlight builds with their own side effects

### Cost model

The instruction package is MIT-licensed; agent usage, EAS builds, simulators and store fees have their own costs.

04 / FOLLOW THE EVIDENCE

## The source trail.

Our notes are separate from the original resource. Check upstream before adopting a new version.

 - [Skill definition at reviewed revision ↗](https://github.com/expo/skills/blob/d4f484024fec15196bfd3c272e953e3f983972cf/plugins/expo/skills/expo-web-to-native/SKILL.md) Checked 2026-10-07 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
- [Reviewed reference or helper: references/false-friends.md ↗](https://github.com/expo/skills/blob/d4f484024fec15196bfd3c272e953e3f983972cf/plugins/expo/skills/expo-web-to-native/references/false-friends.md) Checked 2026-10-07 https://github.com/expo/skills/blob/d4f484024fec15196bfd3c272e953e3f983972cf/plugins/expo/skills/expo-web-to-native/references/false-friends.md Supports: review, whySelected, limitations
- [Upstream license or licensing declaration ↗](https://github.com/expo/skills/blob/d4f484024fec15196bfd3c272e953e3f983972cf/LICENSE) Checked 2026-10-07 https://github.com/expo/skills/blob/d4f484024fec15196bfd3c272e953e3f983972cf/LICENSE Supports: license
- [Publisher installation and project documentation ↗](https://github.com/expo/skills/blob/d4f484024fec15196bfd3c272e953e3f983972cf/README.md) Checked 2026-10-07 https://github.com/expo/skills/blob/d4f484024fec15196bfd3c272e953e3f983972cf/README.md Supports: install, compatibility, access
- [Skills installer source formats and selective installation ↗](https://github.com/vercel-labs/skills/blob/7407f3893ad4dceab546ac002c3ef806e4000c73/README.md) Checked 2026-10-07 https://github.com/vercel-labs/skills/blob/7407f3893ad4dceab546ac002c3ef806e4000c73/README.md Supports: install
- [Installer implementation: full commit SHA fallback ↗](https://github.com/vercel-labs/skills/blob/7407f3893ad4dceab546ac002c3ef806e4000c73/src/git.ts) Checked 2026-10-07 https://github.com/vercel-labs/skills/blob/7407f3893ad4dceab546ac002c3ef806e4000c73/src/git.ts Supports: install

KEEP COMPARING

## Other approaches to consider.

Related by category or shared topics. These are alternatives to inspect, not a measured quality order.

 [### Expo Design System ↗ Builds a token theme (color, spacing, typography, radius, shadow, motion) plus variant/size/state component conventions inside an Expo app, with grep-based drift audits and a named gallery of AI-generated-looking anti-patterns.](/skills/expo-expo-design-system/)[### Vercel React Native Skills ↗ Provides React Native and Expo patterns for scrolling, animations, native navigation and dependency layout.](/skills/vercel-labs-react-native-skills/)[### Expo Router Navigation ↗ File-based routing for Expo Router apps: route groups, NativeTabs, native stacks, headers and search bars, modals and form sheets, with SDK-version-aware option names.](/skills/expo-expo-router/)

 [AI Tools ↗](/tools/)[Skills ↗](/skills/)[Agents ↗](/agents/)[MCP Servers ↗](/mcp-servers/)[Workflows ↗](/workflows/)

## Continue your investigation

 - [Choose a toolkit](/tools/)
- [Inspect execution hosts](/agents/)
- [Check tool access](/mcp-servers/)
- [Check project dependencies](/check-repo/)
