Token导航 LogoToken导航TokenDH.com
研究检索需要联网github未标认证来源可访问许可证需确认审计通过

react-web-advancedReact WEB 高级

Agent Skill

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

总安装

917

周安装

39

GitHub Stars

4

下载量

321
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

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

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

命令行安装

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

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

简介

面向高级 React Web 开发提供架构设计与性能优化方案。

  • 适用于大型单页应用、微前端集成等高复杂度项目。
  • 技能模块托管于开源仓库,支持主流 AI 编程工具接入。
  • 建议结合具体业务规模评估技术选型与实施成本。
  • react-web-advanced 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

React Web Advanced: TanStack Router, Start & Virtual

Web-specific patterns for React apps built on the TanStack Router + Start + Virtual stack. 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.

Web Architecture

The web stack adds three layers on top of the shared core:

LayerLibraryResponsibility
Routing + URL stateTanStack RouterType-safe navigation, search params, route loaders
Full-stack boundaryTanStack StartServer functions (createServerFn), SSR, streaming
Large listsTanStack VirtualVirtualized rendering for 1000+ items

The golden rule: queryOptions as single source of truth

Define query options once, import everywhere — loaders, components, invalidation:

// queries/posts.ts
export const postsQueryOptions = queryOptions({
  queryKey: ["posts"],
  queryFn: fetchPosts,
  staleTime: 30_000,
});

Router + React Query wiring

The router receives QueryClient as context — the single integration point:

const router = createRouter({
  routeTree,
  context: { queryClient },
  defaultPreload: "intent",
  defaultPreloadStaleTime: 0, // Let React Query manage staleness
});

declare module "@tanstack/react-router" {
  interface Register {
    router: typeof router;
  }
}

defaultPreloadStaleTime: 0 is intentional — without it, the router caches loader results independently, causing React Query's staleTime to be ignored during preloads.


Route Loader + React Query Pattern

ensureQueryData for blocking, prefetchQuery for non-blocking

export const Route = createFileRoute('/posts/$postId')({
  loader: async ({ context: { queryClient }, params }) => {
    // Fire-and-forget secondary data
    queryClient.prefetchQuery(commentsQueryOptions(params.postId))
    // Block route render until critical data is ready
    await queryClient.ensureQueryData(postQueryOptions(params.postId))
  },
  component: PostDetail,
})

function PostDetail() {
  const { postId } = Route.useParams()
  // Data guaranteed in cache — instant, no loading state
  const { data: post } = useSuspenseQuery(postQueryOptions(postId))
  return <h1>{post.title}</h1>
}

Avoid waterfall requests

Prefetch all independent data in route loaders using Promise.all:

loader: async ({ context: { queryClient }, params }) => {
  await Promise.all([
    queryClient.ensureQueryData(userQueryOptions(params.id)),
    queryClient.ensureQueryData(permissionsQueryOptions(params.id)),
  ]);
  // Fire-and-forget for non-critical
  queryClient.prefetchQuery(activityQueryOptions(params.id));
};
  • Never fetch data in useEffect that could go in a route loader
  • Parent and child route loaders run concurrently by default

Performance Patterns

React Compiler (React 19+)

With the compiler enabled:

  • Do not manually wrap components in React.memo
  • Do not manually use useMemo / useCallback for performance
  • Do write idiomatic React — the compiler handles memoization
  • Do ensure code follows Rules of React (no mutation during render)

Manual useMemo/useCallback remain useful only for controlling effect dependencies.

Suspense boundaries placement

  • Route-level boundaries: use pendingComponent / errorComponent on route definitions
  • Within routes: wrap non-blocking data in <Suspense> individually
  • Group co-dependent queries under one <Suspense> so they resolve together
  • Independent queries get separate <Suspense> boundaries

Code splitting

  • Split routes using .lazy() or .lazy.tsx files — critical config (loader, params) stays in the main file, component/UI splits into the lazy file
  • Use React.lazy for heavy on-demand components (rich editors, charts)
  • Machine definitions auto-split since they are separate .ts files

File Organization

src/
  routes/                  # TanStack Router file-based routes
    __root.tsx             # Root layout, router context type
    (auth)/                # Route group — no URL impact
    (app)/
      users/
        $userId.tsx
        $userId.lazy.tsx   # Component-only code split
        -components/       # "-" prefix excludes from route tree
  queries/                 # queryOptions definitions — one file per entity
  mutations/               # useMutation wrappers
  machines/                # XState machine definitions (pure TS, no React)
  stores/                  # Zustand stores
  serverFns/               # TanStack Start server functions
  components/
    ui/                    # Design system primitives
    shared/                # Cross-feature shared components
  lib/
    query-client.ts        # QueryClient singleton
    router.ts              # Router singleton
  test/
    setup.ts               # Vitest setup
    test-utils.tsx         # renderWithProviders
    mocks/handlers.ts      # MSW handlers

Key conventions:

  • Route-specific components use - prefix directories to avoid route tree inclusion
  • Pathless route groups (name)/ for organization without URL impact
  • .lazy.tsx files export component/pendingComponent/errorComponent only
  • Co-locate test files next to source (.test.ts / .test.tsx)

Common Pitfalls

  1. Wrong property order in createFileRoute — must be validateSearch -> loaderDeps -> beforeLoad -> loader for TypeScript inference. Install @tanstack/eslint-plugin-router with create-route-property-order rule.
  2. Returning entire search in loaderDeps — invalidates cache on any param change. Extract only the deps the loader uses.
  3. preload="intent" without React Query cache — preloaded data is discarded if user doesn't navigate. Combine with React Query's ensureQueryData for cache persistence.
  4. Not registering the router — without declare module Register, everything is any.
  5. Forgetting <Suspense> around <Await> — runtime error without a Suspense ancestor.
  6. defaultPreloadStaleTime not set to 0 — Router's default staleTime overrides React Query's staleTime during preloads, causing stale data to be served.
  7. useLoaderData in notFoundComponent — not valid. Use Route.useParams() or pass data via throw notFound({data:...}).
  8. Building all pages before verifying auth flow — implement and verify the auth flow first (login → session cookie → protected route guard → redirect) end-to-end before building feature pages. Auth integration bugs hide behind each other (7+ layers deep). See references/ssr-auth.md.
  9. defaultPreload: "intent" triggering auth checks on hover — with intent preloading, beforeLoad fires on every link hover. If beforeLoad does auth validation, every hover triggers a session check. Disable intent preloading during auth debugging, or make auth checks cache-aware (queryClient.getQueryData(sessionKey) before fetching).
  10. Blanket invalidateQueries() cascading through auth hooksqueryClient.invalidateQueries() with no key filter invalidates everything, including session queries. Auth reactive hooks refetch, components re-render, beforeLoad re-runs. Always scope invalidation to the specific entity query key. See references/integration.md for query key namespacing patterns.
  11. Auth nanostores re-rendering on every API mutation — libraries like Better Auth use nanostores internally. Every successful mutation toggles signals, causing all useSession()/useActiveOrganization() subscribers to re-render synchronously. Combined with TanStack Router, this creates infinite re-render loops. Replace auth hooks with React Query wrappers. See references/better-auth-start.md.
  12. beforeLoad re-runs on every client-side navigation — if the session check inside beforeLoad calls a server function without React Query caching, every link click triggers a server round-trip. Use ensureQueryData with staleTime to serve from cache. See references/ssr-auth.md.

Reference Files

Read the relevant reference file when working with a specific library:

FileWhen to read
references/router.mdRouting, search params, loaders, code splitting, navigation
references/start.mdServer functions, SSR, middleware, deployment
references/virtual.mdVirtualization, dynamic heights, infinite scroll, grids
references/integration.mdRouter+Query wiring, auth guards, query key namespacing, org data
references/ssr-auth.mdSSR cookie auth, Vite proxy, CORS, route guards, FOUC, CF Workers
references/better-auth-start.mdBetter Auth + TanStack Start: signals, RQ wrapper, org state
references/testing.mdTesting Router routes, renderWithProviders

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

37.5%
按下载量换算120

Claude

29.21%
按下载量换算94

Cursor

19.54%
按下载量换算63

Gemini CLI

9.09%
按下载量换算29

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

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

安装前确认

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

来源信息

继续浏览同类 Skills