Expo Web-to-Native Migration
Turn an existing React website into a shippable Expo app, screen by screen.
The skill scopes migration, backend placement, and absolute native API paths, with no evidence of malware, credential theft, or covert exfiltration. However, it instructs agents to install global npm tools, use browser/simulator tooling and potentially EAS services, and supports unattended goal loops without stepwise confirmation, least-privilege guidance, data-flow disclosure, rollback, or safe recovery procedures; 11 points are deducted.
The sequence, references, and verification workflow are internally coherent across DOM shelling, native conversion, data, and shipping. Still, the supplied files contain no committed tests or reproducible execution evidence; operation depends on agent-browser, argent, Expo SDK behavior, and other skills, while abnormal-input, missing-tool, and installation-failure diagnostics are limited. 11 points are deducted, with the static ceiling applied.
The audience is clear: existing Next.js, Vite, or CRA React applications, while the document explicitly excludes fresh native builds. Trigger conditions and non-fit cases are reasonably clear, but Chinese-language support and mainland-China reachability of the tooling/services are not addressed, and project, platform, and backend boundary evidence is limited; 5 points are deducted.
The skill is well layered and links to focused references for idiom mapping, native UX, device verification, and goal execution. It declares a name, version 1.0.0, and MIT license, and repository context includes version-check CI. It does not identify a maintainer, update path, changelog, dependency versions, or systematic FAQ/troubleshooting coverage; 6 points are deducted.
The skill gives a usable migration spine from assessment through DOM shell, screen-by-screen native redesign, verification, and release, and its mapping tables can directly guide implementation. However, the outcome depends on several external skills, project-specific configuration, running web/native apps, and backend/authentication availability; static evidence cannot show a directly usable final result. 9 points are deducted, with the static ceiling applied.
The evidence consists mainly of revision-pinned skill documentation, internal references, and repository CI maintenance checks, making the principal claims auditable. There are no key-path tests, real execution records, or independent corroborating sources; the external Expo article is only cited as a reference. 6 points are deducted, with the static ceiling applied.
- This is a source-only review; migration, tool installation, and iOS/Android behavior were not executed.
- Global installation of agent-browser and argent, simulator use, and goal-loop automation may create external state changes; users should confirm permissions, network, authentication, and rollback plans.
- Chinese-language support and mainland-China network reachability are not documented, and the workflow depends heavily on other Expo skills and project-specific environment.
- Claims about SDK 56, @expo/ui, DOM components, and store payment policy were not independently verified from the supplied material.
What does this skill do, and when should you use it?
This open-source skill is part of Expo’s official skills collection and guides migrations from Next.js, Vite, or CRA React apps to iOS and Android with Expo. Its approach is incremental: create a native Expo shell, run the complete web UI through DOM components, then replace screens with native designs according to product value. It covers route mapping, backend boundaries, data and authentication changes, native redesign, and runtime verification. It is intended for teams with an existing React web app, not for building a native app from scratch.
Reads the existing web project’s routes, pages, server routes, data-fetching patterns, authentication, styling, and third-party SDKs, then creates and maintains a migration-progress.md worklist; uses create-expo-app to scaffold an Expo shell and maps web routes to Expo Router; guides the team through running the full web UI in DOM components before replacing screens with @expo/ui, Expo Router, and React Native primitives; routes data, hosting, and release work through expo-data-fetching, EAS Hosting, and eas-app-stores; requires agent-browser to inspect the web original and argent to drive the native simulator while comparing content and behavior.
- A team with an existing Next.js app that wants a mobile release before gradually introducing native screens.
- A developer maintaining a Vite or CRA React codebase who needs to migrate pages to iOS and Android by priority.
- A product team that wants low-value pages to remain DOM-based while converting high-traffic or gesture-heavy screens to native.
- An engineer assessing how server routes, cookie sessions, localStorage, environment variables, or browser SDKs must change for mobile.
What are this skill's strengths and limitations?
- Provides an end-to-end migration order from assessment through store delivery.
- Separates screens from backend concerns and keeps the app shippable throughout the migration.
- Covers web-to-native changes involving routing, DOM, CSS, data, authentication, storage, and third-party SDKs.
- Defines a runtime verification workflow using agent-browser and argent.
- Assumes an existing React web application; for a fresh native build, it recommends using expo-router instead.
- Each DOM screen carries an approximately 2 MB web runtime, so keeping everything DOM-based can increase app weight.
- If agent-browser or argent is unavailable, the guide requires installing it, but the supplied SKILL.md does not provide the installation procedure.
- The source documents no test suite, platform support matrix, or real migration case studies.
How do you install this skill?
Install the full Expo Skills collection with npx skills@latest add expo/skills --skill '*', follow the installer prompts, then restart or refresh the Agent session. Codex users can also run codex plugin add expo@openai-curated to install the official plugin. The supplied source does not document a complete standalone install command for only expo-web-to-native.
How do you use this skill?
After installation, ask an Agent something like: Migrate this existing Next.js React app incrementally to an Expo iOS/Android app. First assess the routes and create migration-progress.md, then scaffold the DOM-component shell. Follow the assessment, shell, and DOM stages before converting screens one at a time and checking content and behavior against the running web original.
How does this skill compare with similar options?
Unlike a one-time rewrite, this skill prescribes incremental migration: run the whole web UI in a native shell first, then convert screens by value. Unlike using DOM components alone, it calls for redesigning high-value screens to follow iOS and Android conventions.