API 覆盖
94% 的 Next.js 16 API
约 94% 的 Next.js 16 API 表面已获得完整或局部支持。剩余的缺口是有意为之的桩 (针对已废弃特性),再加上 Partial Prerendering 与 Cache Components。 Next.js 16 把 PPR 重做成了 "use cache"; vinext 为该指令实现了文件级与函数级缓存,但完整的 cacheComponents行为仍不完整——见正在解决的已知缺口。
完整实现
运行时行为与构建期优化均到位
局部实现
运行时行为正确,部分构建期优化缺失
有意桩/空操作
针对已废弃特性的有意识排除
共 59 项
模块垫片
| 特性 / 模块 | 状态 | 说明 |
|---|---|---|
| next/link | 完整实现 | 全部 props,包括 prefetch(IntersectionObserver)、onNavigate、滚动恢复、basePath、locale |
| next/image | 局部实现 | 远程图片通过 @unpic/react(28 个 CDN),本地图片通过 <img> + srcSet,无构建期优化/缩放 |
| next/head | 完整实现 | SSR 收集 + 客户端 DOM 操作 |
| next/router | 完整实现 | useRouter、Router 单例、事件、客户端导航、SSR 上下文、i18n |
| next/navigation | 完整实现 | usePathname、useSearchParams、useParams、useRouter、redirect、notFound、forbidden、unauthorized |
| next/server | 完整实现 | NextRequest、NextResponse、NextURL、cookies、userAgent、after、connection、URLPattern |
| next/headers | 完整实现 | 异步的 headers()、cookies()、draftMode() |
| next/dynamic | 完整实现 | ssr: true、ssr: false、loading 组件 |
| next/script | 完整实现 | 全部 4 种策略(beforeInteractive、afterInteractive、lazyOnload、worker) |
| next/font/google | 局部实现 | 运行时 CDN 加载,无自托管、字体子集化或兜底度量 |
| next/font/local | 局部实现 | 运行时 @font-face 注入,不在构建时提取 |
| next/og | 完整实现 | 通过 @vercel/og(Satori + resvg)生成 OG 图片 |
| next/cache | 完整实现 | revalidateTag、revalidatePath、unstable_cache、可插拔的 CacheHandler、带 cacheLife() 与 cacheTag() 的 "use cache" |
| next/form | 完整实现 | GET 表单拦截 + POST Server Action 委托 |
| next/legacy/image | 完整实现 | 把旧版 props 翻译成现代 Image |
| next/error | 完整实现 | 默认错误页组件 |
| next/config | 完整实现 | getConfig / setConfig |
| next/document | 完整实现 | Html、Head、Main、NextScript |
| next/constants | 完整实现 | 全部阶段常量 |
| next/amp | 有意桩/空操作 | 空操作(AMP 已废弃) |
| next/web-vitals | 有意桩/空操作 | 空操作(直接使用 web-vitals 库) |
路由
| 特性 / 模块 | 状态 | 说明 |
|---|---|---|
| 文件系统路由(pages/) | 完整实现 | 自动扫描,文件变更时热重载 |
| 文件系统路由(app/) | 完整实现 | 页面、路由、布局、模板、loading、error、not-found、forbidden、unauthorized |
| 动态路由 [param] | 完整实现 | 两种路由器 |
| 全捕获 [...slug] | 完整实现 | 两种路由器 |
| 可选全捕获 [[...slug]] | 完整实现 | 两种路由器 |
| 路由分组 (group) | 完整实现 | 对 URL 透明,布局仍生效 |
| 平行路由 @slot | 完整实现 | 发现、布局 props、default.tsx、继承的插槽 |
| 拦截路由 | 完整实现 | (.)、(..)、(..)(..)、(...) 约定 |
| 路由处理器(route.ts) | 完整实现 | 具名 HTTP 方法、自动 OPTIONS/HEAD、cookie 附加 |
| 中间件 | 完整实现 | middleware.ts 与 proxy.ts(Next.js 16),匹配模式:字符串、数组、正则、:param、:path*、:path+ |
| i18n 路由 | 局部实现 | Pages Router 的 locale 前缀、Accept-Language 探测、NEXT_LOCALE cookie,无基于域名的路由 |
| basePath | 完整实现 | 应用于各处——URL、Link、Router、导航 hooks |
| trailingSlash | 完整实现 | 308 重定向到规范形式 |
服务端特性
| 特性 / 模块 | 状态 | 说明 |
|---|---|---|
| SSR(Pages Router) | 完整实现 | 流式渲染、_app/_document、__NEXT_DATA__、水合 |
| SSR(App Router) | 完整实现 | RSC 流水线、嵌套布局、流式渲染、面向客户端组件的导航上下文 |
| getStaticProps | 完整实现 | props、redirect、notFound、revalidate |
| getStaticPaths | 完整实现 | fallback: false、true、"blocking" |
| getServerSideProps | 完整实现 | 完整上下文(含 locale) |
| ISR | 完整实现 | stale-while-revalidate、可插拔的 CacheHandler、后台再生 |
| Server Actions("use server") | 完整实现 | Action 执行、FormData、变更后重渲染、Action 内的 redirect() |
| React Server Components | 完整实现 | 通过 @vitejs/plugin-rsc 实现,"use client" 边界正确生效 |
| 流式 SSR | 完整实现 | 两种路由器 |
| Metadata API | 完整实现 | metadata、generateMetadata、viewport、generateViewport、标题模板 |
| generateStaticParams | 完整实现 | 配合 dynamicParams 强制校验 |
| Metadata 文件路由 | 完整实现 | sitemap.xml、robots.txt、manifest、favicon、OG 图片(静态 + 动态) |
| 静态导出(output: 'export') | 完整实现 | 为所有路由生成静态 HTML/JSON |
| Standalone 输出 | 完整实现 | 生成带 server.js、构建产物与运行时依赖的 dist/standalone |
| connection() | 完整实现 | 强制动态渲染 |
| "use cache" 指令 | 完整实现 | 文件级与函数级,cacheLife() 配置文件、cacheTag()、stale-while-revalidate |
| instrumentation.ts | 完整实现 | register()、onRequestError(),以及 framework tracing |
| 路由段配置 | 局部实现 | revalidate、dynamic、dynamicParams、runtime(非位置相关),无 preferredRegion |
配置
| 特性 / 模块 | 状态 | 说明 |
|---|---|---|
| next.config.js / .ts / .mjs | 完整实现 | 函数式配置、phase 参数 |
| rewrites / redirects / headers | 完整实现 | 所有 phase、参数插值 |
| 环境变量(.env*、NEXT_PUBLIC_*) | 完整实现 | 自动加载 Next.js 风格的 dotenv 文件,仅 public 变量会被内联 |
| images 配置 | 局部实现 | 会被解析,但不用于优化 |
| experimental.optimizePackageImports | 完整实现 | RSC/SSR 环境中把 barrel 导入改写为直接子模块导入,默认集合含 lucide-react、date-fns、radix-ui、antd、MUI 等 |
| vinext({ nextConfig }) | 完整实现 | 从 vite.config.* 内联 Next 风格配置,支持对象与函数形式,提供时覆盖根 next.config.* |
| vinext({ react: { compiler: true } }) | 完整实现 | React Compiler 自动记忆化,需要 @vitejs/plugin-react 6.1+ 与可选的 oxc-transform-react |
每一个 next/*导入都被垫片为一个 Vite 兼容的实现。需要 Next.js 内部实现(例如styled-jsx)的兼容特性, 在使用时可能仍需要匹配版本的 Next.js 安装。 vinext 为受支持的 next 与next/* API 提供了兜底的类型声明,因此应用可以在没有 next 包的情况下运行并做类型检查。