Code Explainers
Next.js code explainers
javascript
import type { MetadataRoute } from 'next' import { db } from '@/lib/db' const URLS_PER_SITEMAP = 50_000
Sharding a large sitemap in Next.js
sitemap
pagination
seo
Intermediate
6 steps
javascript
'use client'; import { useActionState } from 'react'; import { submitSignup } from './actions';
Multi-step forms with useActionState in Next.js
server-actions
form-state
progressive-enhancement
Intermediate
10 steps
javascript
import { notFound } from 'next/navigation' import { getPhotoById } from '@/lib/photos' import Modal from '@/components/modal' import Image from 'next/image'
An intercepted photo modal route in Next.js
dynamic-routes
async-components
metadata
Intermediate
6 steps
javascript
import type { MetadataRoute } from 'next' const BASE_URL = process.env.NEXT_PUBLIC_SITE_URL ?? 'https://example.com'
Environment-aware robots.txt in Next.js
seo
environment-config
web-crawlers
Intermediate
6 steps
javascript
import { NextResponse } from 'next/server'; import { readFile, stat } from 'node:fs/promises'; import { join, extname, normalize } from 'node:path'; import { createHash } from 'node:crypto';
Serving private assets from a Next.js route
path-traversal
http-caching
etag
Intermediate
6 steps
javascript
export default function DashboardLayout({ children, analytics, notifications }) { return ( <div className="flex h-screen overflow-hidden"> <Sidebar />
Parallel routes in a Next.js layout
parallel-routes
layouts
app-router
Intermediate
8 steps
javascript
'use server' import { z } from 'zod' import { revalidatePath } from 'next/cache'
Handling form submits with Next.js Server Actions
server-actions
validation
form-handling
Intermediate
7 steps
javascript
import { cache } from 'react' import { notFound } from 'next/navigation' import { db } from '@/lib/db'
Deduping data fetches with React cache in Next.js
request-memoization
data-fetching
server-components
Intermediate
6 steps
javascript
import fs from 'node:fs/promises'; import path from 'node:path'; import { notFound } from 'next/navigation'; import matter from 'gray-matter';
Static MDX blog pages in Next.js
static-generation
mdx
frontmatter
Intermediate
7 steps
javascript
import OpenAI from 'openai'; const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
Streaming OpenAI tokens from a Next.js edge route
streaming
edge-runtime
readablestream
Advanced
9 steps
javascript
import { NextResponse } from 'next/server'; import { Redis } from '@upstash/redis'; export const runtime = 'edge';
A deduped page-view counter in Next.js
edge-runtime
redis
rate-limiting
Intermediate
8 steps
javascript
import { NextResponse } from 'next/server'; import { revalidatePath } from 'next/cache'; import crypto from 'node:crypto';
A GitHub webhook that revalidates Next.js docs
webhooks
hmac-verification
cache-revalidation
Intermediate
8 steps
javascript
import { after } from "next/server"; import { NextResponse } from "next/server"; import { z } from "zod"; import { resend } from "@/lib/resend";
Deferring work with after() in Next.js
validation
background-tasks
route-handlers
Intermediate
8 steps
javascript
const legacyRedirects = [ { from: '/blog/:slug', to: '/articles/:slug' }, { from: '/shop/product/:id', to: '/store/items/:id' }, { from: '/about-us', to: '/about' },
How redirects work in Next.js config
redirects
routing
configuration
Intermediate
7 steps
javascript
import { NextResponse } from 'next/server'; import { db } from '@/lib/db'; function csvCell(value) {
Streaming a CSV export in a Next.js route
streaming
csv
readablestream
Advanced
9 steps
javascript
import { Suspense } from 'react'; import { searchProducts } from '@/lib/products'; import SearchInput from './search-input';
Streaming search results in a Next.js Server Component
server-components
suspense
streaming
Intermediate
8 steps
javascript
import { notFound } from 'next/navigation' import { Suspense } from 'react' import { getPostBySlug, getRelatedPosts } from '@/lib/posts' import { RelatedPosts } from '@/components/related-posts'
Building a dynamic blog post page in Next.js
server-components
dynamic-routing
metadata
Intermediate
8 steps
javascript
import { NextResponse } from 'next/server'; import { Redis } from '@upstash/redis'; const redis = Redis.fromEnv();
Sliding-window rate limiting in a Next.js route
rate-limiting
redis
sorted-set
Advanced
8 steps