Next.js 14 menjadi standar baru bagi pengembang React yang menginginkan performa tinggi dan SEO optimal. Tutorial ini memandu Anda langkah demi langkah mulai dari instalasi, konfigurasi, hingga contoh kode lengkap dengan best practice.
1. Persiapan Lingkungan
Sebelum memulai, pastikan Anda memiliki Node.js 20.x LTS atau lebih baru, serta package manager pnpm (direkomendasikan) atau npm/yarn. Anda dapat mengunduh Node.js dari situs resmi. Untuk menginstal pnpm, jalankan:
npm install -g pnpm
Verifikasi instalasi:
node -v
pnpm -v
2. Membuat Proyek Next.js 14 Baru
pnpm create next-app@latest my-next14-app --typescript
Perintah di atas akan membuat folder my-next14-app dengan TypeScript terkonfigurasi. Pilih opsi "app" ketika diminta untuk memilih router (App Router). Setelah selesai, masuk ke direktori proyek:
cd my-next14-app
3. Instalasi Dependensi Tambahan
Untuk memanfaatkan React Server Components (RSC) dan fitur image optimization terbaru, tambahkan paket berikut:
pnpm add @next/font@latest next-auth@latest prisma@latest @prisma/client@latest
Jika menggunakan database PostgreSQL, pastikan PostgreSQL terinstal dan jalankan:
pnpm prisma init
File prisma/schema.prisma akan dibuat, edit sesuai kebutuhan.
4. Konfigurasi Next.js (next.config.mjs)
import { createSecureHeaders } from 'next-secure-headers';
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
swcMinify: true,
images: {
remotePatterns: [{
protocol: 'https',
hostname: '**',
}],
},
async headers() {
return [{
source: '/(.*)',
headers: createSecureHeaders({
contentSecurityPolicy: {
directives: {
defaultSrc: "'self'",
scriptSrc: "'self' 'unsafe-inline'",
styleSrc: "'self' 'unsafe-inline'",
imgSrc: "'self' data:",
},
},
}),
}];
},
};
export default nextConfig;
Konfigurasi di atas mengaktifkan Strict Mode, minifikasi SWC, dukungan image remote, dan header keamanan.
5. Membuat Struktur App Router
Next.js 14 menggunakan folder app sebagai root router. Berikut contoh struktur minimal:
app/
├─ layout.tsx # Layout global
├─ page.tsx # Halaman beranda
├─ about/
│ └─ page.tsx # Halaman tentang
├─ dashboard/
│ ├─ layout.tsx # Layout khusus dashboard (client)
│ └─ page.tsx # Server Component dashboard
└─ api/
└─ auth/
└─ route.ts # Route API untuk autentikasi
5.1 layout.tsx (global)
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
Next.js 14 Demo
{children}
);
}
5.2 page.tsx (beranda)
export const metadata = { title: 'Beranda' };
export default async function HomePage() {
const res = await fetch('https://api.example.com/latest-news');
const news = await res.json();
return (
Selamat Datang di Next.js 14
{news.map(item => (
- {item.title}
))}
);
}
Catatan: Karena file berada di folder app, fungsi ini dijalankan di server secara default (React Server Component).
6. Menambahkan Client Component untuk Interaktivitas
Jika Anda membutuhkan state atau efek di browser, gunakan directive 'use client' pada file.
// app/dashboard/Counter.tsx
'use client';
import { useState } from 'react';
export default function Counter() {
const [count, setCount] = useState(0);
return (
Count: {count}
);
}
Lalu import di dashboard/page.tsx:
import Counter from './Counter';
export default function DashboardPage() {
return (
Dashboard
);
}
7. Integrasi Autentikasi dengan NextAuth.js
NextAuth.js versi 5 (rilis 2026) mendukung middleware berbasis Edge. Tambahkan file app/api/auth/[...nextauth]/route.ts:
import NextAuth from 'next-auth';
import GithubProvider from 'next-auth/providers/github';
export const runtime = 'edge'; // menjalankan di Edge Runtime
export const GET = NextAuth({
providers: [
GithubProvider({
clientId: process.env.GITHUB_ID,
clientSecret: process.env.GITHUB_SECRET,
}),
],
callbacks: {
async session({ session, token }) {
session.user.id = token.sub;
return session;
},
},
});
Jangan lupa menambahkan variabel lingkungan di .env.local:
GITHUB_ID=your_github_client_id
GITHUB_SECRET=your_github_client_secret
NEXTAUTH_URL=http://localhost:3000
8. Deploy ke Vercel (Edge Network)
Next.js 14 teroptimasi untuk Vercel Edge Functions. Ikuti langkah:
- Push repository ke GitHub.
- Buka Vercel Dashboard → New Project.
- Hubungkan ke repositori, pilih
Next.jssebagai framework. - Tambahkan environment variables (GITHUB_ID, GITHUB_SECRET, NEXTAUTH_URL).
- Deploy! Vercel otomatis mengatur serverless atau edge sesuai konfigurasi
runtime.
9. Best Practice untuk Production
- Static Generation (SSG) bila memungkinkan: gunakan
generateStaticParamsuntuk halaman dinamis yang tidak berubah sering. - Image Optimization: manfaatkan
next/imagedengan loader default dan aturdomainsdinext.config.mjs. - Security Headers: gunakan
next-secure-headersseperti contoh konfigurasi di atas. - TypeScript Strict Mode: pastikan
tsconfig.jsonmemiliki"strict": trueuntuk mengurangi bug. - Monitoring: integrasikan dengan Vercel Analytics atau open‑source tool seperti
Umamiuntuk tracking performa.
10. Testing dengan Playwright
Instal Playwright dan tambahkan skrip test:
pnpm add -D @playwright/test
# buat file e2e.test.ts di folder tests
npx playwright install
pnpm test
Contoh test sederhana:
import { test, expect } from '@playwright/test';
test('homepage has welcome message', async ({ page }) => {
await page.goto('/');
await expect(page.locator('h1')).toHaveText('Selamat Datang di Next.js 14');
});
11. Kesimpulan Langkah Selanjutnya
Setelah berhasil menguasai dasar Next.js 14, eksplorasi fitur lanjutan seperti Incremental Static Regeneration (ISR) dengan revalidate, Route Handlers untuk API custom, dan integrasi dengan layanan AI (misalnya OpenAI) untuk konten dinamis.
Dengan mengikuti tutorial ini, Anda kini memiliki aplikasi Next.js 14 yang modern, cepat, dan aman. Mulailah menambahkan fitur bisnis Anda, manfaatkan server components untuk mengurangi bundle size, dan scale secara otomatis lewat Vercel Edge Network. Selamat coding!
Tutorial langkah demi langkah setup Next.js 14 dengan App Router, React Server Components, autentikasi NextAuth, dan deployment Vercel. Cocok untuk developer Web Development 2026.
Programming,Software Engineering,Web Development
#Programming #SoftwareEngineering #WebDev #Tech #Coding
0 Komentar