Token导航 LogoToken导航

Agent Skill · 前端设计

react-native-advanced(React native 高级)

用于辅助前端页面、组件、样式和交互逻辑的开发与维护。它适合让 Agent 生成或审查 React、Next.js、Vue、Tailwind、CSS 等相关代码,整理组件结构,或定位布局和性能问题。使用时需要结合项目现有设计系统、路由和构建方式,避免只生成孤立片段;涉及页面改动时,应配合本地预览和构建检查确认视觉效果。

react-native-advanced 是前端设计类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为需要联网;许可证信息还不明确,第三方扫描已通过,按安装量在前端设计类的 10,216 个 Skill 里排第 4,059。

总安装 1,014周安装 41GitHub Stars 4下载 318核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:react-native-advanced(React native 高级)
来源仓库:https://github.com/trancong12102/agentskills
仓库路径:skills/react-native-advanced
安装命令:
npx skills add https://github.com/trancong12102/agentskills --skill react-native-advanced
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/trancong12102/agentskills --skill react-native-advanced

这个 Skill 是做什么的

前端设计类 Skill 关注页面结构、视觉规范和组件写法,输出通常是可运行的界面代码。

用于辅助高级 React Native 移动应用的前端开发与组件维护。适合处理复杂组件结构与性能优化场景。react-native-advanced 属于前端设计类 Skill,可作为该场景下的辅助能力补充。可生成或审查 React Native、Expo 相关代码,定位布局问题。

使用时需结合项目现有设计系统与构建方式。涉及页面改动时应配合本地预览和构建检查确认效果。

来源仓库内路径:skills/react-native-advanced

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/trancong12102/agentskills --skill react-native…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

react-native-advanced 怎么安装?

在终端执行 npx skills add https://github.com/trancong12102/agentskills --skill react-native-advanced。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

react-native-advanced 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

react-native-advanced 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

react-native-advanced 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

react-native-advanced 用的人多吗?

公开数据是累计安装 1,014 次,近一周安装 41 次,下载 318 次,GitHub 4 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

react-native-advanced 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理前端设计类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

前端设计类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
frontend-design

前端设计 · Codex、Claude

8,823,360126,072只读MIT通过
vercel-composition-patterns

Vercel 组合模式 · Codex、Claude

3,858,81625,893需要联网MIT通过
vercel-react-native-skills

Vercel React native skills 前端 · Codex、Claude

2,468,66425,878只读MIT通过
adapt

adapt 搜索 · Codex、Claude

2,027,04023,125操作浏览器未明确通过
bolder

bolder 分析 · Codex、Claude

2,004,28823,130只读未明确通过
react-native-advanced

React native 高级 · 本页

1,0144需要联网未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

React Native Advanced: Expo + TanStack/XState/Zustand Ecosystem

React Native and Expo patterns for apps built with the TanStack ecosystem, XState, and Zustand. This skill extends react-advanced (core cross-platform patterns). Read that skill first for React Query, XState, Zustand, Zod, TanStack Form, and TanStack Table conventions.


RN Architecture

Libraries map differently in React Native compared to web:

Web LibraryRN EquivalentKey Difference
TanStack RouterExpo RouterNo route loaders on native, file-based navigation
TanStack Start—No SSR/server functions on native
TanStack VirtualFlashListNative view recycling, not DOM virtualization
localStorageMMKVSynchronous, native-thread, 30x faster
window eventsAppState/NetInfoManual wiring required for focus/online managers
CSS animationsReanimatedUI-thread worklets, CSS transitions (v4)
DOM eventsGesture HandlerGesture composition API, UI-thread callbacks
<img>expo-imageSDWebImage/Glide, blurhash, disk caching
Web Push APIexpo-notificationsFCM/APNs, channels, background tasks
Service Workersexpo-updatesOTA updates, staged rollout, emergency rollback

Cross-platform libraries (identical API on web and RN): React Query, XState, Zustand, Zod, TanStack Form, TanStack Table


Required Setup

Two integrations are mandatory — without them, React Query's auto-refetch and offline handling do not work in React Native:

  • focusManager — wire AppState to focusManager.setFocused() so refetchOnWindowFocus works when the app returns to foreground. Without this, the default is silently ignored.
  • onlineManager — wire NetInfo to onlineManager.setOnline() so queries pause/resume on connectivity changes.

Call both hooks once in the root _layout.tsx inside QueryClientProvider.

See references/react-query-rn.md for full implementation.


Data Fetching Without Route Loaders

Expo Router has no native route loaders (data loaders are web-only/alpha). The pattern is: prefetch on user interaction, consume in the destination screen.

Rules:

  • Fire prefetchQuery without await before router.push — awaiting makes navigation slow.
  • Use useFocusEffect (from expo-router) to invalidate stale data when a screen regains focus. useEffect does not re-run when navigating back because screens stay mounted.
  • Use invalidateQueries (respects staleTime) instead of refetch() (always re-fetches).

See references/react-query-rn.md for prefetch and useRefreshOnFocus patterns.


Navigation + Auth

Stack.Protected (Expo Router v5+, recommended)

// app/_layout.tsx
export default function RootLayout() {
  const session = useAuthStore((s) => s.session)

  return (
    <Stack>
      <Stack.Protected guard={!!session}>
        <Stack.Screen name="(tabs)" />
        <Stack.Screen name="modal" options={{ presentation: 'modal' }} />
      </Stack.Protected>
      <Stack.Protected guard={!session}>
        <Stack.Screen name="sign-in" />
      </Stack.Protected>
    </Stack>
  )
}

When session flips, Expo Router automatically redirects and cleans history. For complex auth flows (token check, refresh, error recovery), use XState to manage auth state and derive a boolean for the guard prop.

See references/expo-router.md for the XState auth variant and Zustand auth store patterns.


Lists: FlashList + React Query

FlashList replaces TanStack Virtual for RN — it uses native view recycling instead of DOM-based absolute positioning.

Rules:

  • The !isFetchingNextPage guard in onEndReached is essential — FlashList can fire onEndReached multiple times in quick succession, causing duplicate fetches.
  • Memoize the flattened items array with useMemo — data.pages.flatMap() creates a new reference each render.
  • Stabilize handleEndReached with useCallback.
  • getNextPageParam must return undefined (not null) to signal no next page.

See references/lists.md for the full infinite scroll pattern, FlashList v2 changes, and performance tuning.


TanStack Form in RN

TanStack Form is headless — no DOM dependency, no adapter needed. Key differences from web:

  • TextInput uses onChangeText (string directly) instead of onChange (event object). Wire field.handleChange directly to onChangeText.
  • For numeric fields, convert at the call site: onChangeText={(val) => field.handleChange(val === ''? null: Number(val))}.
  • Wrap forms in ScrollView with keyboardShouldPersistTaps="handled" — otherwise the first tap on Submit dismisses the keyboard instead of firing the press.

Zustand Persist with MMKV

MMKV is synchronous and runs on the native thread — no async hydration gap. Create the MMKV instance at module level (never inside a component). The StateStorage adapter must return null for missing keys: mmkv.getString(name)?? null.

For sensitive data, use an encrypted MMKV instance with encryptionKey. For the hybrid pattern (hardware-backed key + encrypted MMKV), see references/expo-essentials.md.

See references/zustand-rn.md for the full adapter, store creation, encrypted storage, hydration timing, and vanilla store patterns.


Animations & Gestures

Reanimated runs animations on the UI thread via worklets. Gesture Handler routes touch events to the same thread. Reanimated 4 adds CSS-style declarative transitions.

Critical Rules

  • Replace entire values: sv.value = {x: 50} not sv.value.x = 50 (breaks reactivity)
  • No destructuring: const {x} = sv.value creates a plain number, not reactive
  • No reads during render: shared value reads are side effects, violate Rules of React
  • Shared values don't re-render: if you need React to respond, maintain separate state
  • GestureHandlerRootView must wrap the app root with style={{flex: 1}}
  • Android modals need their own GestureHandlerRootView (outside native root view)

Threading Summary

Shared values live on the UI thread. Reading .value on the JS thread is a blocking bridge call — never do it in hot paths. Gesture callbacks and useAnimatedStyle run on the UI thread. Use runOnJS (Reanimated 3) or scheduleOnRN (Reanimated 4) to call JS functions.

Declarative vs Imperative

Use CSS transitions (Reanimated 4) for state-driven style changes (toggle colors, opacity, dimensions). Use layout animations (entering/exiting props) for mount/unmount. Use worklets + shared values for gesture-driven animations and imperative chains.

See references/animations.md for detailed patterns, Reanimated 4 API changes, gesture composition, and CSS transitions.


Bottom Sheets

@lodev09/react-native-true-sheet — a native bottom sheet backed by UISheetPresentationController (iOS) and BottomSheetDialog (Android). No Reanimated dependency. New Architecture only.

Key Rules

  • Imperative control only — use ref.present()/dismiss()/resize(), not state props.
  • Max 3 detents, sorted smallest to largest. Use 'auto' for content-fitting.
  • Never combine scrollable with 'auto' detent — they conflict. Use fixed detents.
  • Never use flex: 1 on sheet content — collapses to zero height. Use flexGrow or fixed height.
  • Always dismiss() before unmounting — the native sheet outlives the React component.
  • Standard TextInput works — no special keyboard component needed (native handling).
  • Standard ScrollView/FlashList works with scrollable + nestedScrollEnabled — auto-detected in v3 (up to 2 levels deep).

See references/bottom-sheet.md for full patterns, platform differences, and Expo Router integration.


Push Notifications

expo-notifications handles FCM (Android) and APNs (iOS) through Expo's push service.

SDK 53 Breaking Changes

  • Android push does not work in Expo Go — requires development build.
  • Config plugin must be explicit in app.json plugins array.

Key Pattern

// Must configure or foreground notifications are silently suppressed
Notifications.setNotificationHandler({
  handleNotification: async () => ({
    shouldShowBanner: true,
    shouldShowList: true,
    shouldPlaySound: true,
    shouldSetBadge: false,
  }),
});

Notification Rules

  • Android channels must exist before requesting permissions on Android 13+.
  • Channels are immutable — cannot change importance/vibration after creation.
  • Poll receipts in production — tickets only confirm Expo received the request.
  • Background tasks must be defined at module scope (not inside components).

For permission handling, listeners, and background tasks, see references/notifications.md.


OTA Updates

expo-updates enables over-the-air JavaScript bundle updates without app store releases.

Update Check Pattern

import * as Updates from "expo-updates";

// Run after first render, not during startup (can freeze UI on slow network)
const check = await Updates.checkForUpdateAsync();
if (check.isAvailable) {
  await Updates.fetchUpdateAsync();
  await Updates.reloadAsync();
}

Emergency Launch Detection

if (Updates.isEmergencyLaunch) {
  // OTA caused a crash — app rolled back to embedded bundle
  // Log immediately to error tracking
}

Always instrument this — it's your production crash signal for OTA updates.

For staged rollout, runtime versions, and reactive patterns, see references/expo-essentials.md.


File Organization

Structure: app/ contains route files with _layout.tsx per segment. Route groups (auth)/, (app)/, (tabs)/ organize without URL impact. Feature code lives outside app/: queries/ (queryOptions objects, not hooks), mutations/, machines/ (pure TS, no React imports), stores/ (Zustand + MMKV persist), hooks/, components/.


Common Pitfalls

  1. Missing focusManager/onlineManager setup — refetchOnWindowFocus and offline pausing do nothing without manual AppState and NetInfo wiring.
  2. Awaiting prefetchQuery before router.push — makes navigation feel slow. Fire prefetch without await, let React Query cache serve the destination screen.
  3. Using useGlobalSearchParams instead of useLocalSearchParams — global re-renders on every navigation event. Always prefer local.
  4. useEffect for screen focus refetch — useEffect doesn't re-run when navigating back (screens stay mounted). Use useFocusEffect from expo-router.
  5. getNextPageParam returning null — must return undefined to signal no next page. Coerce API nulls: lastPage.nextCursor?? undefined.
  6. FlashList v2 requires New Architecture — v2 is a ground-up rewrite for Fabric. estimatedItemSize is deprecated (ignored). overrideItemLayout only supports span.
  7. MMKV getString returns undefined — Zustand's StateStorage.getItem must return null for missing keys. Always coerce: ?? null.
  8. Creating MMKV instance inside a component — creates new instances each render. Declare at module level.
  9. keyboardShouldPersistTaps not set on form ScrollView — first tap dismisses keyboard instead of pressing Submit button.
  10. retry: 3 (default) on mobile — with flaky connections, 3 retries with exponential backoff can take 30+ seconds. Consider retry: 1 for time-sensitive UI.
  11. Mutating shared value properties — sv.value.x = 50 breaks reactivity. Must replace entire value: sv.value = {x: 50, y: 0}.
  12. GestureHandlerRootView missing flex: 1 — wrapper has zero height. Gestures appear to not work at all.
  13. Unmounting TrueSheet while open — the native sheet does NOT dismiss automatically. Always call dismiss() before removing from tree.
  14. auto detent with scrollable in TrueSheet — auto-sizing and scroll pinning conflict. Use fixed detents when scrollable={true}.
  15. Missing setNotificationHandler — all foreground notifications silently suppressed. No error.
  16. checkForUpdateAsync on slow network — can freeze Android UI for minutes. Run after first render with a manual timeout.
  17. expo-image recyclingKey in FlashList — without it, recycled cells flash the previous item's image.
  18. expo-secure-store biometric invalidation — keys with requireAuthentication become permanently unreadable when biometrics change. No recovery except clearing app data.

Reference Files

FileWhen to read
references/react-query-rn.mdFocus/online managers, cache persistence, prefetching
references/expo-router.mdTyped routes, layouts, modals, auth, search params
references/lists.mdFlashList + React Query, infinite scroll, performance
references/zustand-rn.mdMMKV persist adapter, encryption, hydration patterns
references/testing-rn.mdRNTL, testing Query/Router/Form/XState, MSW in RN
references/animations.mdReanimated, Gesture Handler patterns and gotchas
references/bottom-sheet.mdreact-native-true-sheet setup, detents, Expo Router
references/notifications.mdexpo-notifications permissions, listeners, background
references/expo-essentials.mdexpo-image, expo-secure-store, expo-haptics, expo-updates

平台分布

Codex

37.57%
按下载量换算119

Claude

29.48%
按下载量换算94

Cursor

19.97%
按下载量换算64

Gemini CLI

9.68%
按下载量换算31

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills