Next.js 14 menjadi standar de‑facto untuk pengembangan web modern. Tutorial ini memandu Anda step‑by‑step menginstal, mengonfigurasi, dan menulis kode contoh dengan best practice terkini, termasuk TypeScript, edge runtime, dan optimasi performa.
1. Prasyarat dan Persiapan Lingkungan
Pastikan Anda sudah menginstal Node.js 20 LTS (atau lebih baru) dan npm 10 atau pnpm 9. Verifikasi dengan:
node -v
npm -v # atau pnpm -v
Jika belum terpasang, unduh dari nodejs.org. Kami merekomendasikan pnpm karena workspace handling yang lebih cepat.
2. Membuat Proyek Next.js 14 Baru
# Menggunakan pnpm (pilihan utama)
pnpm create next-app@latest my-next14-app -- --ts --eslint --tailwind
# alternatif dengan npm
npm create next-app@latest my-next14-app -- --ts --eslint --tailwind
Perintah di atas membuat struktur folder lengkap dengan TypeScript, ESLint, dan Tailwind CSS terintegrasi. Pilih Yes pada semua prompt untuk menambahkan src/ layout dan app/ directory (App Router).
3. Instalasi Dependency Tambahan
Kita akan menambahkan beberapa paket yang menjadi standar di 2026:
pnpm add @vercel/analytics @next/font react-icons
pnpm add -D @types/react-icons
@vercel/analytics menyediakan metric real‑time, sedangkan @next/font menggantikan next/font legacy untuk loading font optimal.
4. Konfigurasi Dasar Next.js
Update next.config.mjs untuk mengaktifkan edge runtime pada halaman yang memerlukan latensi ultra‑rendah, serta menambahkan experimental flag untuk serverActions yang stabil di versi 14:
import { NextConfig } from 'next';
/** @type {NextConfig} */
const nextConfig = {
reactStrictMode: true,
swcMinify: true,
experimental: {
serverActions: true,
appDir: true,
},
images: {
remotePatterns: [{ protocol: 'https', hostname: '**' }],
},
async rewrites() {
return [{ source: '/api/:path*', destination: '/api/:path*' }];
},
};
export default nextConfig;
Konfigurasi ini memastikan kompatibilitas dengan app/ router, enable server actions, dan mengoptimalkan image handling.
5. Struktur Direktori Utama
my-next14-app/
├─ app/
│ ├─ layout.tsx # Root layout dengan metadata
│ ├─ page.tsx # Halaman utama (Server Component)
│ ├─ dashboard/
│ │ ├─ page.tsx # Server Component contoh
│ │ └─ loading.tsx # UI loading state
│ └─ api/
│ └─ hello/route.ts # Route handler (Edge)
├─ public/
├─ styles/
├─ tsconfig.json
└─ package.json
Folder app/ menggantikan pages/ dan mendukung file‑based routing dengan layout.tsx, page.tsx, dan loading.tsx.
6. Membuat Root Layout dengan Tailwind dan Font Optimasi
/* app/layout.tsx */
import './globals.css';
import { Inter } from '@next/font/google';
const inter = Inter({ subsets: ['latin'], variable: '--font-inter' });
export const metadata = {
title: 'Next.js 14 Demo',
description: 'Tutorial setup Next.js 14 dengan App Router dan TypeScript',
};
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
{children}
);
}
Font Inter dimuat secara optimal dengan @next/font. Tailwind di‑import lewat globals.css yang didefinisikan pada langkah instalasi.
7. Menulis Halaman Utama sebagai Server Component
/* app/page.tsx */
import Image from 'next/image';
import { Analytics } from '@vercel/analytics/react';
export const revalidate = 60; // ISR tiap menit
export default async function HomePage() {
const data = await fetch('https://api.github.com/repos/vercel/next.js', {
next: { revalidate: 300 },
}).then(res => res.json());
return (
Welcome to Next.js 14
Stars: {data.stargazers_count?.toLocaleString() ?? 'N/A'}
);
}
Komponen di‑render sepenuhnya di server, memanfaatkan fetch dengan next: { revalidate } untuk Incremental Static Regeneration (ISR).
8. Membuat Route API Edge yang Cepat
/* app/api/hello/route.ts */
import { NextResponse } from 'next/server';
export const runtime = 'edge'; // Menjalankan di Vercel Edge Functions
export async function GET(request: Request) {
const now = new Date().toISOString();
return NextResponse.json({ message: 'Hello from Edge!', timestamp: now });
}
Dengan runtime = 'edge', fungsi ini dijalankan di lokasi terdekat dengan pengguna, menghasilkan latency <10 ms di kebanyakan wilayah.
9. Menambahkan Server Action pada Dashboard
/* app/dashboard/page.tsx */
'use server';
import { revalidatePath } from 'next/cache';
import { useState } from 'react';
async function addTodo(formData: FormData) {
// Simulasi penyimpanan ke DB (contoh menggunakan Supabase client)
const title = formData.get('title') as string;
await fetch(process.env.NEXT_PUBLIC_SUPABASE_URL + '/todos', {
method: 'POST',
headers: { 'apikey': process.env.SUPABASE_ANON_KEY!, 'Content-Type': 'application/json' },
body: JSON.stringify({ title }),
});
revalidatePath('/dashboard');
}
export default function Dashboard() {
const [title, setTitle] = useState('');
return (
Todo Dashboard
);
}
Server Action memungkinkan pengiriman data langsung ke server tanpa API route terpisah, memanfaatkan revalidatePath untuk memperbarui UI secara otomatis.
10. Best Practice yang Harus Diterapkan
- TypeScript Strict Mode: aktifkan
"strict": trueditsconfig.jsonuntuk menghindari bug runtime. - ESLint + Prettier: gunakan konfigurasi
next/core-web-vitalsdanplugin:prettier/recommendeduntuk konsistensi kode. - Static Image Optimization: semua gambar eksternal harus lewat
next/imagedengandomainsdinext.config.mjs. - Incremental Static Regeneration (ISR): set
revalidatehanya pada data yang berubah tidak sering. - Edge Functions: gunakan untuk endpoint yang perlu latency rendah, namun hindari operasi berat yang memerlukan file system.
- Security: aktifkan
Content‑Security‑Policydiheaders()dinext.config.mjsdan gunakanhelmetpada API routes custom.
11. Deploy ke Vercel (Zero‑Config)
- Push repository ke GitHub.
- Buka vercel.com dan pilih New Project.
- Import repository, Vercel otomatis mendeteksi Next.js 14.
- Tambahkan environment variables (
NEXT_PUBLIC_SUPABASE_URL,SUPABASE_ANON_KEY, dll). - Deploy! Vercel akan memberikan preview URL dalam hitungan detik.
Jika menggunakan pnpm, pastikan file pnpm-lock.yaml ikut di‑commit.
12. Monitoring & Analitik
Pasang @vercel/analytics di RootLayout atau halaman penting, kemudian lihat metrik di dashboard Vercel. Untuk error tracking, integrasikan Sentry dengan menambahkan Skrip berikut di next.config.mjs:
env: { SENTRY_DSN: process.env.SENTRY_DSN },
webpack: (config) => {
config.plugins.push(new webpack.DefinePlugin({
__SENTRY_DSN__: JSON.stringify(process.env.SENTRY_DSN),
}));
return config;
},
13. Kesimpulan dan Langkah Selanjutnya
Dengan mengikuti tutorial ini, Anda kini memiliki proyek Next.js 14 yang sepenuhnya modern—TypeScript, App Router, Server Components, Edge API, dan Server Actions. Selanjutnya, eksplorasi Next.js Middleware untuk autentikasi, React Server Components yang lebih kompleks, serta incremental static regeneration pada skala besar.
Next.js 14 menyatukan produktivitas developer dengan performa kelas dunia. Menggunakan App Router, Server Components, dan Edge Functions memungkinkan Anda membangun aplikasi web yang cepat, aman, dan mudah dipelihara. Ikuti best practice di atas, pantau metrik dengan Vercel Analytics, dan terus eksplorasi fitur baru yang terus dirilis setiap quarter untuk menjaga aplikasi Anda tetap kompetitif di 2026.
Tutorial lengkap setup Next.js 14 dengan App Router, TypeScript, Server Components, Edge API, dan Server Actions. Langkah demi langkah, contoh kode, dan best practice terbaru 2026.
Programming,Software Engineering,Web Development
#Programming #SoftwareEngineering #WebDev #Tech #Coding
0 Komentar