mcpField
N
nextjs-ppr-patterns

nextjs-ppr-patterns

github.com/pproenca开发218124 次安装11 周前更新
代码仓库

关于 nextjs-ppr-patterns

面向 Next.js 16 App Router 与 Cache Components 的 Partial Prerendering 编写和审查参考技能。21 条规则涵盖静态与动态边界、缓存、运行时数据、页面组合、表单和变更操作。

主要功能

  1. 01分为 6 类的 21 条规则
  2. 02使用 Cache Components 启用 PPR
  3. 03为动态内容设置 Suspense 边界
  4. 04配置缓存与失效
  5. 05组合流式页面和仪表板
  6. 06处理表单、变更操作与向导

适用场景

  1. 01构建包含静态与个性化内容的页面
  2. 02从已移除的实验性 PPR 标志迁移
  3. 03排查未缓存数据的边界错误
  4. 04组合流式仪表板或多步骤表单

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pproenca/dot-skills --skill nextjs-ppr-patterns

安装后在 Claude Code 中输入/nextjs-ppr-patterns确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

AGENTS.md
metadata.json
assets/templates/
_template.md
references/
_debug-boundaries.md
_sections.md
cache-in-memory-not-durable-serverless.md
cache-keys-are-automatic.md
cache-pass-runtime-values-as-props.md
cache-pass-through-children-and-actions.md
cache-set-lifetime-and-tags.md
cache-use-cache-directive.md
compose-do-not-opt-out-the-shell.md
compose-parallel-holes.md
compose-single-dynamic-hole.md
compose-stream-to-client-with-use.md
mutate-updatetag-vs-revalidatetag.md
mutate-wizard-url-driven-steps.md
runtime-gate-nondeterminism-with-connection.md
runtime-keep-param-routes-static.md
runtime-request-apis-force-a-boundary.md
setup-dynamic-by-default.md
setup-enable-cache-components.md
shell-place-boundaries-low.md
shell-suspense-does-not-force-dynamic.md
shell-suspense-is-the-boundary.md
shell-wrap-uncached-data.md

详细介绍

Next.js 16 部分预渲染模式

适用于 Next.js 16 App Router、采用 Cache Components 模型的部分预渲染(PPR)——PPR 会带来哪些决策,以及如何做出选择。本文旨在让 Agent 在编写或审查代码时应用这些规则。共包含 6 个类别中的 21 条规则,从简单到复杂依次排列:启用 PPR → 理解静态/动态边界 → 缓存 → 处理运行时数据 → 组合完整页面 → 构建表单和向导。每条规则都针对模型默认沿用 Next.js 14/15 时会出现的特定错误默认做法;对于模型本来就能正确处理的内容,不设规则。

版本特定。 本技能面向 Next.js 16(通过 cacheComponents 使用 PPR,React 19.2)。Next.js 14/15 的 experimental.ppr 标志和 export const experimental_ppr 路由导出已被移除——请参阅 setup-enable-cache-components。迁移现有应用请参阅迁移指南。

先编写,再验证。 这些规则用于编写 PPR,无法告诉你实际渲染了什么。若要通过实证拆解边界——对比静态外壳与水合后的 DOM,找出动态空缺、定位 'use client' 岛、测量加载情况,并解释路由为何是动态的——请根据 _debug-boundaries.md 运行 next build 并使用真实浏览器。

适用场景

  • 构建或审查混合静态界面元素与个性化、实时或按请求变化内容的 Next.js 16 页面
  • 启用或迁移 PPR(cacheComponents),或发现无效的 experimental.ppr / experimental_ppr 代码
  • 决定 <Suspense> 边界的位置,或排查 Uncached data was accessed outside of <Suspense> 构建错误
  • 添加 'use cache'、cacheLife、cacheTag,或在变更后选择使用 updateTag / revalidateTag / refresh
  • 组合表单、多步骤向导、仪表板,或将流式服务器数据传入交互式客户端组件
  • 通过实证验证或排查实际渲染结果——哪些部分属于静态外壳、哪些部分以流式方式传输、CSR/SSR 边界在哪里,以及路由为何变成动态

规则类别

#类别前缀涵盖内容
1设置与心智模型setup-通过 cacheComponents 启用 PPR;已移除的实验性标志;默认动态 / 可选择启用缓存的反转
2Suspense 边界shell-<Suspense> 作为静态/动态分界;构建错误;边界粒度;Suspense 不会 做什么
3使用 'use cache' 进行缓存cache-指令级别;自动生成的键;将运行时值作为属性传入;透传;cacheLife/cacheTag;无服务器环境中的持久性
4运行时 API 与非确定性runtime-异步请求 API 会强制要求边界;generateStaticParams;使用 connection() 获取随机值/时间
5页面组合方案compose-单个空缺 → 并行仪表板 → Promise + use() 流式传输 → 避免让整个应用退出静态外壳
6表单、变更与向导mutate-updateTag 与 revalidateTag、refresh 的区别;由 URL 驱动的向导步骤;<Activity> 保留字段内容

快速参考

1. 设置与心智模型
  • setup-enable-cache-components — 通过 cacheComponents: true 启用 PPR;experimental.ppr / experimental_ppr 标志已移除
  • setup-dynamic-by-default — 所有内容都在请求时渲染;通过 'use cache' 可选择启用缓存(且 fetch 不再默认缓存)
2. Suspense 边界
3. 使用 'use cache' 缓存
4. 运行时 API 与非确定性
5. 页面组合方案
6. 表单、变更与向导

如何使用

遇到相应决策时,请阅读参考文件。每条规则都会指出其要纠正的错误默认做法,然后展示规范做法(仅当错误做法确实容易造成问题时,才会对比错误与正确做法)。如果你刚开始接触,请先阅读 setup- 开头的文件——其余内容都以“默认动态”的思维模型为前提。

  • 章节定义 — 类别结构与排序
  • 边界调试 — 使用 next build 和 chrome-devtools-mcp(通过 mcporter)实证拆解静态/动态边界及加载过程;当 PPR 结果出乎意料或你正在排查 blocking-route 错误时,请使用
  • 规则模板 — 用于添加新规则
  • AGENTS.md — 自动生成的涵盖所有规则的目录

相关技能

  • nextjs — 更全面的 Next.js 16 App Router 最佳实践(缓存、服务端组件、路由、规范)
  • opinionated-nextjs-patterns — 完整的观点鲜明的架构(数据层、变更操作、客户端边界),采用这些 PPR 模式
  • react-fetch-cache-patterns — 面向数据密集型 React UI 的请求编排和客户端缓存

参考文件

文件描述
references/_sections.md类别定义和排序
references/_debug-boundaries.md实证 CSR/SSR 边界与加载调试(next build + 通过 mcporter 使用 chrome-devtools-mcp)
assets/templates/_template.md新规则模板
metadata.json版本和来源参考

评论

支持 Markdown