Next.js 15
App Router conventions and best practices for Next.js 15 projects.
Enabled Rules
| Rule | Severity | Description |
|---|---|---|
quality/no-use-client-in-pages | block | Prevents "use client" in page and layout files |
quality/import-aliases | block | Enforces @/ path aliases over deep relative imports |
quality/file-structure | warn | Components and hooks in correct directories |
quality/no-deprecated-api | block | Catches deprecated Next.js API usage (e.g. legacy getServerSideProps) |
security/env-exposure | block | Prevents server env variables from leaking to client bundles |
Usage
import { defineConfig } from '@solanticai/vguard';
export default defineConfig({
presets: ['nextjs-15'],
});
What it enforces
- No
"use client"in pages/layouts — Page and layout files should be Server Components by default. Move client logic to child components. - Import aliases required — Use
@/components/Buttoninstead of../../../components/Button. - File structure conventions — Components live in
components/, hooks inhooks/, utilities inlib/orutils/. - No deprecated APIs — Flags usage of Pages Router patterns like
getServerSideProps,getStaticPropsin App Router projects. - Env safety — Blocks
process.env.SECRET_*from appearing in client components. OnlyNEXT_PUBLIC_*variables are allowed client-side.
Combining with other presets
export default defineConfig({
presets: ['nextjs-15', 'typescript-strict', 'tailwind'],
});