Expo Web To Native
expo/skills
Migrate an existing web React app to a native iOS/Android app with Expo.
Install and set up @data-client/react or @data-client/vue in a project.
$ npx skills add reactive/data-client --skill data-client-setup -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install reactive/data-client data-client-setup --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/reactive/data-client.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/data-client-setup .claude/skills/data-client-setup && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "data-client-setup" agent skill from https://github.com/reactive/data-client/tree/master/.agents/skills/data-client-setup into .claude/skills/data-client-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "data-client-setup", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/reactive/data-client/tree/master/.agents/skills/data-client-setupType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add reactive/data-client --skill data-client-setup -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install reactive/data-client data-client-setup --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/reactive/data-client.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/data-client-setup .agents/skills/data-client-setup && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "data-client-setup" agent skill from https://github.com/reactive/data-client/tree/master/.agents/skills/data-client-setup into .agents/skills/data-client-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "data-client-setup", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add reactive/data-client --skill data-client-setup -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install reactive/data-client data-client-setup --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/reactive/data-client.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/data-client-setup .cursor/skills/data-client-setup && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "data-client-setup" agent skill from https://github.com/reactive/data-client/tree/master/.agents/skills/data-client-setup into .cursor/skills/data-client-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "data-client-setup", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/reactive/data-client.git --path .agents/skills/data-client-setup--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add reactive/data-client --skill data-client-setup -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install reactive/data-client data-client-setup --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/reactive/data-client.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/data-client-setup .gemini/skills/data-client-setup && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "data-client-setup" agent skill from https://github.com/reactive/data-client/tree/master/.agents/skills/data-client-setup into .gemini/skills/data-client-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "data-client-setup", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install reactive/data-client data-client-setupInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add reactive/data-client --skill data-client-setup -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/reactive/data-client.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/data-client-setup .github/skills/data-client-setup && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "data-client-setup" agent skill from https://github.com/reactive/data-client/tree/master/.agents/skills/data-client-setup into .github/skills/data-client-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "data-client-setup", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add reactive/data-client --skill data-client-setup -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install reactive/data-client data-client-setup --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/reactive/data-client.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/data-client-setup .opencode/skills/data-client-setup && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "data-client-setup" agent skill from https://github.com/reactive/data-client/tree/master/.agents/skills/data-client-setup into .opencode/skills/data-client-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "data-client-setup", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
data-client-setupInstall and set up @data-client/react or @data-client/vue in a project.
Data Client Setup is an agent skill from reactive/data-client. Install and set up @data-client/react or @data-client/vue in a project. Detects project type (NextJS, Expo, React Native, Vue, plain React) and protocol (REST, GraphQL, custom), then follows the bundled protocol-specific setup guide.
Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 36 other files, including reference files (for example `references.json`, `references/DataClientPlugin.md` and `references/DataProvider.md`).
It sits in Mobile, covering Cross-platform mobile apps and GraphQL. It works with React, Vue.js, GraphQL and Next.js. The repository describes itself as: Async State Management without the Management. REST, GraphQL, SSE, Websockets. The licence is Apache-2.0.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 6d35253. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npmyarnpnpmclaudenpxbunFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm, yarn, pnpm and npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Data Client Setup loads about 2.2k tokens when it runs, and up to ~83k if it reads all its reference files. Until then it costs about 63 tokens; SKILL.md has 753 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from reactive/data-client at commit 6d35253, republished under its Apache-2.0 licence (© reactive). 753 words, ~2,236 tokens.
.claude/skills/data-client-setup/SKILL.md (or your agent's skills folder). This skill also uses 29 other files; get the full folder from GitHub.Before installing, detect the project type and protocol by checking these files:
Check which lock file exists:
yarn.lock → use yarn addpnpm-lock.yaml → use pnpm addpackage-lock.json or bun.lockb → use npm install or bun addCheck package.json dependencies:
| Check | Project Type |
|---|---|
"next" in dependencies | NextJS |
"expo" in dependencies | Expo |
"vue" in dependencies | Vue |
"react-native" in dependencies (no expo) | React Native |
"react" in dependencies | Plain React |
Scan the codebase to determine which data-fetching protocols are used:
Look for these patterns:
fetch() calls with REST-style URLs (/api/, /users/, etc.)axios, ky, got, superagent in package.jsonapi.ts, client.ts, services/*.ts/users/:id, /posts/:postId/commentsmethod: 'GET', method: 'POST', .get(, .post(Look for these patterns:
@apollo/client, graphql-request, urql, graphql-tag in package.json.graphql or .gql files in the projectquery {, mutation {, subscription {/graphqlFor async operations that don't match REST or GraphQL:
Protocol setup guides are bundled in this skill, but defining and using data afterwards is covered by other Data Client skills. Install the ones that match what you detected, skipping any already installed:
| Detected | Skills |
|---|---|
| Always | data-client-schema, data-client-manager |
| React (NextJS, Expo, React Native, plain React) | data-client-react, data-client-react-testing |
| Vue | data-client-vue, data-client-vue-testing |
| REST | data-client-rest |
| GraphQL | None beyond Always (data-client-schema covers @data-client/graphql) |
| Custom async | None beyond Always (data-client-schema covers @data-client/endpoint) |
Use the installer that installed this skill. For OpenSkills and the skills CLI, add -g if this skill lives under your home directory rather than the project.
~/.claude/plugins/): claude plugin install react@data-client or claude plugin install vue@data-client. Either includes every skill above.AGENTS.md lists skills in an <available_skills> block): npx openskills install reactive/data-client/.agents/skills/<skill>, once per skill.npx skills add reactive/data-client --yes --skill <skill> --skill <skill> ...Newly installed skills may not be loaded until the next session, so read their SKILL.md directly when this skill says to apply them.
| Framework | Core Package |
|---|---|
| React (all) | @data-client/react + dev: @data-client/test |
| Vue | @data-client/vue (testing included) |
React (NextJS, Expo, React Native, plain React):
npm install @data-client/react && npm install -D @data-client/test
yarn add @data-client/react && yarn add -D @data-client/test
pnpm add @data-client/react && pnpm add -D @data-client/testVue:
npm install @data-client/vue
yarn add @data-client/vue
pnpm add @data-client/vueAfter installing, add the provider at the top-level component.
Edit app/layout.tsx:
import { DataProvider } from '@data-client/react/nextjs';
export default function RootLayout({ children }) {
return (
<html>
<DataProvider>
<body>
{children}
</body>
</DataProvider>
</html>
);
}Important: NextJS uses @data-client/react/nextjs import path.
Edit app/_layout.tsx:
import { Stack } from 'expo-router';
import { DataProvider } from '@data-client/react';
export default function RootLayout() {
return (
<DataProvider>
<Stack>
<Stack.Screen name="index" />
</Stack>
</DataProvider>
);
}Edit entry file (e.g., index.tsx):
import { DataProvider } from '@data-client/react';
import { AppRegistry } from 'react-native';
const Root = () => (
<DataProvider>
<App />
</DataProvider>
);
AppRegistry.registerComponent('MyApp', () => Root);Edit entry file (e.g., index.tsx, main.tsx, or src/index.tsx):
import { DataProvider } from '@data-client/react';
import { createRoot } from 'react-dom/client';
createRoot(document.getElementById('root')!).render(
<DataProvider>
<App />
</DataProvider>,
);Edit main.ts:
import { createApp } from 'vue';
import { DataClientPlugin } from '@data-client/vue';
import App from './App.vue';
const app = createApp(App);
app.use(DataClientPlugin, {
// optional overrides
// managers: getDefaultManagers(),
// initialState,
// Controller,
// gcPolicy,
});
app.mount('#app');After provider setup, follow the guide for each detected protocol. These guides are bundled copies of the standalone protocol setup skills, so they need nothing else installed.
Follow references/data-client-rest-setup.md, which will:
@data-client/restBaseEndpoint class extending RestEndpointFollow references/data-client-graphql-setup.md, which will:
@data-client/graphqlGQLEndpoint instanceFollow references/data-client-endpoint-setup.md, which will:
@data-client/endpointnew Endpoint()If multiple protocols are detected, follow each protocol's guide. Each protocol package can be installed alongside others.
After setup, verify:
package.json@data-client/react/nextjs for NextJS)❌ Wrong:
import { DataProvider } from '@data-client/react';✅ Correct for NextJS:
import { DataProvider } from '@data-client/react/nextjs';The DataProvider must wrap all components that use data-client hooks. Place it at the topmost level possible.
In Vue, call app.use(DataClientPlugin) on the root app before app.mount().
After core setup and protocol-specific setup:
Entity - see skill "data-client-schema"useSuspense, useQuery, useController - see skill "data-client-react" or "data-client-vue"Vue projects: read <name>.vue.md instead of <name>.md when it exists.
For detailed API documentation, see the references directory:
DataClientPlugin instead; see installation)@data-client/rest setup and migration from axios, fetch, ky, superagent or got@data-client/graphql setup@data-client/endpoint© reactive, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 29 other files (references) in .agents/skills/data-client-setup of reactive/data-client.
Open the folder on GitHubat commit 6d35253
Data Client Setup next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Data Client Setup this skillreactive/data-client | 2k | — | ~2.2k | Automated safety check: Pass | Apache-2.0 | |
| Expo Web To Nativeexpo/skills | 2.7k | — | ~2.6k | Automated safety check: Pass | MIT | |
| React Nativeericrisco/rsc-harness | 167 | — | ~3k | Automated safety check: Pass | MIT | |
| Frontend Designavibebuilder/claude-prime | 120 | — | ~2.1k | Automated safety check: Pass | MIT | |
| Lunora Realtimeanolilab/lunora | 283 | — | ~2.7k | Automated safety check: Pass | Custom licence | |
| JSON Render Catalogyonatangross/orchestkit | 289 | — | ~6.4k | Automated safety check: Pass | MIT |
expo/skills
Migrate an existing web React app to a native iOS/Android app with Expo.
ericrisco/rsc-harness
A skill your agent uses when writing the JS/TS inside a React Native or Expo app — screens, Expo Router navigation, lists, Reanimated gestures, platform forks, offline state, native modules — or…
avibebuilder/claude-prime
Builds distinctive, production-grade UIs that avoid generic AI aesthetics.
anolilab/lunora
Wires Lunora's live data into a client app. An agent skill from anolilab/lunora.
yonatangross/orchestkit
json-render component catalog patterns for AI-safe generative UI.
aleqsio/screenmap
Generate a visual navigation map of an Expo / React Native or NativeScript app.
reactive/data-client
Set up and migrate to @data-client/rest for REST APIs. An agent skill from reactive/data-client.
reactive/data-client
Implement @data-client Managers for global/background side effects - websocket, SSE, polling, real-time updates, subscriptions, logging, analytics, metrics/timing, error reporting (Sentry), toast…
reactive/data-client
Use @data-client/react hooks for data fetching, mutations, and rendering - useSuspense, useFetch, useQuery, useCache, useLive, useDLE, useSubscription, useController, DataProvider, AsyncBoundary…
reactive/data-client
Test @data-client/react with renderDataHook and mountDataClient - jest unit tests, fixtures, interceptors, MockResolver, mock responses, nock HTTP mocking, fake timers for polling/subscription…
reactive/data-client
Define REST APIs with @data-client/rest - resource(), RestEndpoint, CRUD (GET/POST/PUT/PATCH/DELETE), HTTP fetch, normalize, cache, urlPrefix, path-to-regexp parameters, searchParams, pagination…
reactive/data-client
Model data with @data-client schemas (Entity, EntityMixin, Collection, Union, Query, Values, All, Invalidate, Lazy, Scalar) for atomic, consistent, referentially-equal async data via normalization…
Categories
Install and set up @data-client/react or @data-client/vue in a project. Data Client Setup is an agent skill from reactive/data-client. Install and set up @data-client/react or @data-client/vue in a project.
Data Client Setup fits situations like: tasks that involve Cross-platform mobile apps; tasks that involve GraphQL.
Run `npx skills add reactive/data-client --skill data-client-setup -a claude-code`. Or copy the skill folder (.agents/skills/data-client-setup in reactive/data-client) into .claude/skills/data-client-setup in your project. Claude Code loads it when a task matches its description.
Run `npx skills add reactive/data-client --skill data-client-setup -a codex`. Or copy the skill folder (.agents/skills/data-client-setup in reactive/data-client) into .agents/skills/data-client-setup in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add reactive/data-client --skill data-client-setup -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/data-client-setup, .gemini/skills/data-client-setup, .github/skills/data-client-setup and .opencode/skills/data-client-setup in your project.
Going by SKILL.md and its folder, Data Client Setup needs the command-line tools its instructions call (npm, yarn, pnpm, claude, npx and bun). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use npm and npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Data Client Setup is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 8.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 81k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Data Client Setup: Expo Web To Native (expo/skills, 2.7k stars), React Native (ericrisco/rsc-harness, 167 stars), Frontend Design (avibebuilder/claude-prime, 120 stars) and Lunora Realtime (anolilab/lunora, 283 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
reactive (a GitHub organization) maintains it in reactive/data-client, which has 2,037 GitHub stars. The repository holds 17 skills in this directory. The repository was last updated on October 8, 2026.
Source: reactive/data-client on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.