Next.js 14 menjadi standar de‑facto untuk aplikasi React modern. Tutorial ini membimbing Anda langkah demi langkah menginstal, mengkonfigurasi, dan mengoptimalkan proyek Next.js 14 dengan TypeScript, Turbopack, dan best practice terbaru untuk performance dan security.
1. Persiapan Lingkungan
Pastikan Anda menggunakan Node.js LTS 20.12 atau lebih baru serta npm atau pnpm versi 9+. Verifikasi versi dengan:
node -v
npm -v # atau pnpm -v
Jika belum terpasang, download Node.js dari nodejs.org dan instal pnpm secara global:
npm install -g pnpm
2. Membuat Projek Next.js 14
Gunakan starter resmi yang sudah mengaktifkan App Router dan Turbopack secara default.
pnpm create next-app@latest my-next14-app \
--ts # TypeScript
--eslint # Linter
--app # Aktifkan App Router
--turbo
Setelah proses selesai, masuk ke folder proyek:
cd my-next14-app
3. Struktur Direktori Baru (App Router)
Next.js 14 memindahkan logika ke folder app. Contoh struktur yang diharapkan:
app/
layout.tsx # Root layout
page.tsx # Halaman utama
globals.css
(dashboard)/
layout.tsx
page.tsx
loading.tsx
api/
route.ts # API route modern
public/
favicon.ico
...
Perhatikan bahwa pages sudah tidak dipakai kecuali untuk migrasi legacy.
4. Instalasi Dependensi Tambahan
Tambahkan library yang paling umum dipakai di 2026:
react-hook-form– form handlingzod– schema validationnext-auth– otentikasinext-seo– SEO meta tags@tanstack/react-query– data fetching
pnpm add react-hook-form zod next-auth next-seo @tanstack/react-query
Untuk dev dependencies, install ESLint konfigurasi Next.js dan stylelint:
pnpm add -D eslint-config-next stylelint stylelint-config-standard
5. Konfigurasi Turbopack (Opsional)
Next.js 14 menggantikan Webpack dengan Turbopack secara default, tetapi Anda dapat menyesuaikannya lewat next.config.mjs:
import { defineConfig } from 'next/config';
export default defineConfig({
compiler: {
// Enable React Server Components secara eksplisit
reactServerComponents: true,
},
experimental: {
// Aktifkan caching edge per‑route
serverActions: true,
},
// Optimasi bundling Turbopack
turbo: {
rules: {
// Contoh mengexclude large assets dari cache
'*.{png,jpg,svg}': { type: 'asset', parser: { dataUrlCondition: { maxSize: 8 * 1024 } } },
},
},
});
6. Menambahkan Layout Global dengan Tailwind CSS
Tailwind tetap populer pada 2026. Install dan inisialisasi:
pnpm add -D tailwindcss@latest postcss@latest autoprefixer@latest
npx tailwindcss init -p
Update tailwind.config.cjs:
module.exports = {
content: [
'./app/**/*.{js,ts,jsx,tsx}',
'./components/**/*.{js,ts,jsx,tsx}',
],
theme: {
extend: {},
},
plugins: [],
};
Tambahkan Tailwind directives ke app/globals.css:
@tailwind base;
@tailwind components;
@tailwind utilities;
Modifikasi app/layout.tsx untuk menyertakan CSS:
import './globals.css';
export const metadata = {
title: 'Next.js 14 Starter',
description: 'Demo aplikasi modern dengan App Router',
};
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
{children}
);
}
7. Membuat API Route dengan Edge Runtime
Next.js 14 mendukung Edge Runtime secara native. Buat file app/api/hello/route.ts:
import { NextResponse } from 'next/server';
export const runtime = 'edge';
export async function GET(request: Request) {
const hello = { message: 'Hello from Edge Runtime! 🚀' };
return NextResponse.json(hello);
}
Uji dengan pnpm dev dan buka http://localhost:3000/api/hello.
8. Implementasi Form dengan react-hook-form + Zod
Buat komponen sederhana di components/ContactForm.tsx:
import { useForm } from 'react-hook-form';
import { zodResolver } from '@hookform/resolvers/zod';
import { z } from 'zod';
const schema = z.object({
name: z.string().min(2, 'Nama terlalu pendek'),
email: z.string().email('Email tidak valid'),
message: z.string().min(10, 'Pesan minimal 10 karakter'),
});
type FormData = z.infer;
export default function ContactForm() {
const { register, handleSubmit, formState: { errors, isSubmitting } } = useForm({
resolver: zodResolver(schema),
});
const onSubmit = async (data: FormData) => {
const res = await fetch('/api/contact', { method: 'POST', body: JSON.stringify(data) });
if (!res.ok) {
// handle error
}
// success handling
};
return (
);
}
9. Menambahkan SEO dengan next-seo
Update app/layout.tsx:
import { DefaultSeo } from 'next-seo';
import SEO from '../next-seo.config';
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
{children}
);
}
File next-seo.config.ts:
export default {
titleTemplate: '%s | Next.js 14 Demo',
defaultTitle: 'Next.js 14 Demo',
description: 'Contoh implementasi Next.js 14 dengan App Router, Turbopack, dan best practice 2026.',
openGraph: {
type: 'website',
locale: 'id_ID',
url: 'https://yourdomain.com',
site_name: 'Next14Demo',
},
};
10. Deploy ke Vercel dengan Edge Functions
Push repository ke GitHub, kemudian hubungkan dengan Vercel. Pastikan vercel.json berisi:
{
"functions": {
"api/**/*.ts": {
"runtime": "edge"
}
}
}
Vercel otomatis akan menggunakan Turbopack dan mengoptimalkan build. Setelah deploy, cek https://your-app.vercel.app/api/hello untuk memastikan Edge Runtime berfungsi.
11. Best Practice Tambahan
- Static Generation (SSG) vs Server‑Side Rendering (SSR): Gunakan
generateStaticParamsbila data tidak berubah tiap request. - Image Optimization: Manfaatkan
next/imagedengan loader default Vercel untuk format WebP otomatis. - Security Headers: Tambahkan middleware untuk CSP, X‑XSS‑Protection, dan Referrer‑Policy.
- Type‑Safety: Selalu gunakan generics pada
fetchdenganzoduntuk validasi response. - Logging: Integrasikan dengan
logtailatauoteluntuk tracing distribusi.
12. Debugging dan Profiling
Next.js 14 menyediakan next dev --inspect untuk attach debugger di VS Code. Untuk profiling, aktifkan next start --profile dan gunakan Chrome DevTools > Performance.
13. Menyimpan State Global dengan TanStack Query
Wrap aplikasi di QueryClientProvider di app/layout.tsx:
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
const queryClient = new QueryClient();
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
{children}
);
}
Contoh fetching data di app/dashboard/page.tsx:
import { useQuery } from '@tanstack/react-query';
export default function Dashboard() {
const { data, isLoading, error } = useQuery(['stats'], async () => {
const res = await fetch('/api/stats');
if (!res.ok) throw new Error('Failed');
return res.json();
});
if (isLoading) return Loading...
;
if (error) return Error loading stats
;
return (
Dashboard
{JSON.stringify(data, null, 2)}
);
}
14. Testing dengan Playwright
Instal dan buat skrip dasar:
pnpm add -D @playwright/test
npx playwright install
# contoh test di tests/example.spec.ts
import { test, expect } from '@playwright/test';
test('homepage loads', async ({ page }) => {
await page.goto('http://localhost:3000');
await expect(page).toHaveTitle(/Next.js 14 Demo/);
});
Jalankan pnpm test untuk melihat hasil.
15. Optimasi Produksi
- Aktifkan
compressiondinext.config.mjsuntuk GZIP/Brotli. - Gunakan
next/imagedenganloader: 'custom'bila CDN internal. - Set
reactStrictMode: falsehanya jika ukuran bundle menjadi bottleneck.
Build final:
pnpm run build
pnpm start
Itulah semua langkah mulai dari instalasi hingga deploy produksi untuk Next.js 14 di 2026.
Next.js 14 membawa paradigma App Router, Turbopack, dan Edge Runtime yang memudahkan developer membangun aplikasi React ultra‑cepat dengan konfigurasi minimal. Dengan mengikuti tutorial ini—instalasi, setup TypeScript, integrasi Tailwind, form handling, SEO, serta deployment ke Vercel—Anda sudah memiliki pondasi kuat untuk proyek skala produksi. Terapkan best practice keamanan, caching, dan observability untuk memastikan aplikasi tetap stabil, aman, dan mudah dipelihara di masa depan.
Tutorial lengkap Next.js 14 2026: setup App Router, Turbopack, TypeScript, Tailwind, SEO, edge functions, dan deployment Vercel dalam langkah praktis.
Programming,Software Engineering,Web Development
#Programming #SoftwareEngineering #WebDev #Tech #Coding
0 Komentar