Scans an existing Next.js project and produces a detailed compatibility report showing which features are supported, partially supported, or unsupported by vinext.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/cloudflare/vinext/llms.txt
Use this file to discover all available pages before exploring further.
Usage
Options
Show help for this command. Can also use
-h.What It Checks
The check command analyzes four areas:- Imports: Scans source files for
next/*imports - Config: Analyzes
next.config.*for supported options - Libraries: Checks
package.jsondependencies for known libraries - Conventions: Examines file structure (pages, app, middleware, etc.)
Compatibility Scores
Each item gets a status:Feature works out of the box with no changes needed.
Feature works but with limitations or differences from Next.js.
Feature is not implemented or incompatible with vinext.
Example Output
How It Works
Import Scanning
Scans all.ts, .tsx, .js, .jsx, .mjs files for next/* imports:
import typestatements (type-only, erased at compile time)node_modules/,.next/,dist/,.git/directories
Config Analysis
Searchesnext.config.* for known config options:
basePath,trailingSlash,redirects,rewrites,headersi18n,env,images,output,transpilePackageswebpack,reactStrictMode,poweredByHeaderexperimental.ppr,experimental.typedRoutes,experimental.serverActionsi18n.domains
Library Checking
Readspackage.json and checks for known libraries:
- Auth:
next-auth,@auth/nextjs,@clerk/nextjs,better-auth - UI:
next-themes,nuqs,next-view-transitions,tailwindcss,styled-components,@emotion/react - Data:
prisma,drizzle,@t3-oss/env-nextjs,zod,react-hook-form - Monitoring:
@vercel/analytics,@sentry/nextjs - i18n:
next-intl - Components:
lucide-react,framer-motion,@radix-ui/*,shadcn-ui
Convention Checking
Examines file structure:- Router type: App Router (
app/), Pages Router (pages/), or both - Pages/routes: Counts pages, layouts, route handlers, API routes
- Special files:
_app,_document,middleware.ts,proxy.ts - Missing config:
"type": "module"in package.json - React canary APIs:
ViewTransitionusage - PostCSS config: String-form plugins that need resolution
Support Maps
Imports
| Import | Status | Notes |
|---|---|---|
next/link | ✓ Supported | |
next/image | ~ Partial | Uses @unpic/react, no local optimization |
next/router | ✓ Supported | Pages Router only |
next/navigation | ✓ Supported | App Router |
next/headers | ✓ Supported | headers(), cookies() |
next/server | ✓ Supported | NextRequest, NextResponse |
next/cache | ✓ Supported | revalidateTag, revalidatePath, unstable_cache |
next/dynamic | ✓ Supported | |
next/head | ✓ Supported | Pages Router |
next/script | ✓ Supported | |
next/font/google | ~ Partial | Fonts from CDN, not self-hosted |
next/font/local | ~ Partial | className works, variable mode broken |
next/og | ✓ Supported | ImageResponse via @vercel/og |
next/config | ✓ Supported | |
next/amp | ✗ Unsupported | AMP not implemented |
next/document | ✓ Supported | Custom _document.tsx |
next/app | ✓ Supported | Custom _app.tsx |
next/error | ✓ Supported | |
next/third-parties/* | ✗ Unsupported | Third-party script optimization not implemented |
server-only | ✓ Supported | |
client-only | ✓ Supported |
Config Options
| Option | Status | Notes |
|---|---|---|
basePath | ✓ Supported | |
trailingSlash | ✓ Supported | |
redirects | ✓ Supported | |
rewrites | ✓ Supported | |
headers | ✓ Supported | |
i18n | ✓ Supported | Path-prefix routing (domains not supported) |
env | ✓ Supported | |
images | ~ Partial | remotePatterns validated, no local optimization |
output | ✓ Supported | 'export' and 'standalone' modes |
transpilePackages | ✓ Supported | Vite handles natively |
webpack | ✗ Unsupported | Vite replaces webpack |
experimental.ppr | ✗ Unsupported | Partial prerendering not implemented |
experimental.typedRoutes | ✗ Unsupported | Typed routes not implemented |
experimental.serverActions | ✓ Supported | 'use server' directive |
i18n.domains | ✗ Unsupported | Domain-based i18n not implemented |
reactStrictMode | ✓ Supported | Always enabled |
poweredByHeader | ✓ Supported | Not sent (matching Next.js default) |
Libraries
| Library | Status | Notes |
|---|---|---|
next-themes | ✓ Supported | |
nuqs | ✓ Supported | |
next-view-transitions | ✓ Supported | |
@vercel/analytics | ✓ Supported | Client-side injection |
next-intl | ~ Partial | Middleware-based setup works |
@clerk/nextjs | ✗ Unsupported | Deep middleware integration not compatible |
@auth/nextjs | ✗ Unsupported | Relies on internal auth handlers |
next-auth | ✗ Unsupported | Migrate to better-auth |
better-auth | ✓ Supported | Uses only public APIs |
@sentry/nextjs | ~ Partial | Client works, server needs manual setup |
@t3-oss/env-nextjs | ✓ Supported | |
tailwindcss | ✓ Supported | |
styled-components | ~ Partial | Needs useServerInsertedHTML (not yet implemented) |
@emotion/react | ~ Partial | Needs useServerInsertedHTML (not yet implemented) |
lucide-react | ✓ Supported | |
framer-motion | ✓ Supported | |
@radix-ui/* | ✓ Supported | |
shadcn-ui | ✓ Supported | |
zod | ✓ Supported | |
react-hook-form | ✓ Supported | |
prisma | ✓ Supported | Works with Prisma Accelerate on Workers |
drizzle | ✓ Supported | Works with D1 on Workers |
Interpreting Results
High Compatibility (90%+)
Your project should work with minimal changes:- Run
vinext initto set up automatically - Start dev server:
npm run dev:vinext - Address any “partial” warnings if needed
Medium Compatibility (70-89%)
Most features work, but you’ll need to address some issues:- Review “unsupported” items in the report
- Plan migrations (e.g.,
next-auth→better-auth) - Run
vinext initto set up the basics - Test thoroughly and adjust
Low Compatibility (less than 70%)
Significant work required:- Review all unsupported features
- Check if alternatives exist (e.g., AMP → standard HTML)
- Consider gradual migration (run Next.js and vinext side-by-side)
- File issues for missing features you need
Common Issues and Solutions
Webpack Config Detected
Issue: You have custom webpack config innext.config.js
Solution: Migrate to Vite plugins. Most webpack loaders have Vite equivalents:
sass-loader→ Built into Vitebabel-loader→@vitejs/plugin-reactfile-loader→ Vite handles assets natively- Custom plugins → Check for Vite equivalents or write a Vite plugin
next-auth Detected
Issue:next-auth relies on Next.js internals
Solution: Migrate to better-auth:
Missing “type”: “module”
Issue: Yourpackage.json doesn’t have "type": "module"
Solution: Run vinext init to add it automatically, or add manually:
.cjs extension.
styled-components Detected
Issue: RequiresuseServerInsertedHTML (not yet implemented)
Solution: Either:
- Wait for
useServerInsertedHTMLsupport (tracked in issues) - Switch to CSS modules or Tailwind (both work perfectly)
- Use styled-components client-side only (not recommended for SSR)
Integration with vinext init
The check command runs automatically when you usevinext init:
Next Steps
init Command
Migrate your project automatically
Compatibility Guide
Deep dive into what’s supported