Next.js 14 menjadi standar de‑facto untuk pengembangan React modern. Tutorial ini mengajarkan cara meng‑install, meng‑konfigurasi, dan meng‑optimalkan aplikasi Next.js 14 dengan App Router, Server Actions, TypeScript, dan deployment ke Vercel, lengkap dengan contoh kode dan best practice terkini pada Mei 2026.
1. Prasyarat dan Persiapan Lingkungan
Pastikan Anda telah meng‑install versi terbaru node.js (v20.12 atau lebih tinggi) dan npm (v10.6+). Gunakan nvm untuk mengelola versi Node:
nvm install 20
nvm use 20
Verifikasi instalasi:
node -v # harus 20.x
npm -v # harus 10.x
2. Membuat Project Next.js 14 Baru
Gunakan create-next-app dengan template TypeScript dan App Router aktif:
npx create-next-app@latest my-next14-app \
--ts \
--app-dir
cd my-next14-app
Perintah di atas menghasilkan struktur folder baru dengan /app sebagai root router, menggantikan /pages tradisional.
3. Instalasi Dependensi Tambahan
Untuk styling, gunakan tailwindcss versi 3.4, dan untuk data fetching di server actions gunakan axios atau node-fetch. Instal semua dalam satu langkah:
npm i tailwindcss@latest postcss@latest autoprefixer@latest \
axios@latest
npx tailwindcss init -p
Konfigurasikan tailwind.config.js untuk mendukung JIT dan mode content pada folder app:
module.exports = {
content: ["./app/**/*.{js,ts,jsx,tsx}", "./components/**/*.{js,ts,jsx,tsx}"],
theme: { extend: {} },
plugins: [],
};
4. Struktur Dasar App Router
Berikut contoh struktur penting di dalam /app:
/app
├─ layout.tsx # Layout global
├─ page.tsx # Homepage
├─ dashboard
│ ├─ layout.tsx # Layout nested
│ └─ page.tsx # Halaman dashboard
└─ api
└─ submit
└─ route.ts # Server Action endpoint
Semua file page.tsx otomatis menjadi route berdasarkan foldernya.
5. Membuat Layout Global dengan Metadata
/* app/layout.tsx */
import './globals.css';
import type { Metadata } from 'next';
export const metadata: Metadata = {
title: 'Next.js 14 Demo',
description: 'Demo aplikasi Next.js 14 dengan App Router dan Server Actions',
};
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
{children}
);
}
6. Membuat Server Action (POST) di Folder /app/api
Server Actions di Next.js 14 memungkinkan Anda menulis fungsi async yang dijalankan di server tanpa menulis API terpisah. Contoh penggunaan untuk menyimpan data ke database PostgreSQL melalui Prisma.
/* app/api/submit/route.ts */
import { prisma } from '@/lib/prisma';
import { NextResponse } from 'next/server';
export async function POST(request: Request) {
const { name, email } = await request.json();
try {
const user = await prisma.user.create({
data: { name, email },
});
return NextResponse.json({ success: true, user }, { status: 201 });
} catch (error) {
console.error('❌ Create user error:', error);
return NextResponse.json({ success: false, error: 'Server error' }, { status: 500 });
}
}
7. Mengkonsumsi Server Action di Client Component
Gunakan useTransition untuk UI responsif saat menunggu response.
/* components/SignupForm.tsx */
'use client';
import { useState, useTransition } from 'react';
export default function SignupForm() {
const [name, setName] = useState('');
const [email, setEmail] = useState('');
const [isPending, startTransition] = useTransition();
const [msg, setMsg] = useState('');
const handleSubmit = async (e: React.FormEvent) => {
e.preventDefault();
startTransition(async () => {
const res = await fetch('/api/submit', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name, email }),
});
const data = await res.json();
setMsg(data.success ? 'Berhasil mendaftar!' : 'Gagal');
});
};
return (
);
}
8. Menambahkan Prisma dan PostgreSQL
Instal Prisma CLI dan generator:
npm i -D prisma@latest @prisma/client@latest
npx prisma init --datasource-provider postgresql
Edit .env dengan string koneksi produksi atau lokal:
DATABASE_URL="postgresql://user:password@localhost:5432/next14_demo?schema=public"
Definisikan model User di prisma/schema.prisma:
model User {
id Int @id @default(autoincrement())
name String
email String @unique
createdAt DateTime @default(now())
}
Jalankan migrasi:
npx prisma migrate dev --name init
9. Optimasi Build dan Performance
- Image Optimization: gunakan
next/imagedengan loader default Vercel. Pastikanimages.remotePatternsdinext.config.jsmencakup domain eksternal. - Incremental Static Regeneration (ISR): tambahkan
revalidatepadafetchdi server components untuk data yang berubah tiap 60 detik. - Edge Runtime: ubah
runtime: 'edge'pada route yang butuh latensi ultra‑rendah, misalnya API autentikasi JWT. - Bundling: aktifkan
experimental turbopack(default sejak Next.js 14) untuk build yang lebih cepat.
10. Deploy ke Vercel (Zero‑Config)
Jika Anda memiliki akun Vercel, cukup push repository ke GitHub dan import project di dashboard Vercel. Vercel otomatis mendeteksi next.config.js, meng‑install dependencies, dan meng‑set environment variable DATABASE_URL.
Contoh next.config.js yang siap production:
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
swcMinify: true,
images: {
remotePatterns: [{ protocol: 'https', hostname: 'images.unsplash.com' }],
},
experimental: {
appDir: true,
},
};
module.exports = nextConfig;
11. Best Practice yang Harus Diikuti
- Type‑Safety: gunakan TypeScript pada semua level, termasuk API route return types.
- Folder Modular: pisahkan UI components (
/components), server utilities (/lib), dan business logic (separate service layer). - Security: aktifkan
Content‑Security‑Policydinext.config.js, sanitasi input di server actions, dan gunakan rate‑limiting middleware (contohnext-rate-limit). - Testing: gunakan
jest+@testing-library/reactuntuk unit test, danplaywrightuntuk end‑to‑end testing pada route/dashboard. - Logging: integrasikan dengan
pinoatauwinstondan kirim ke layanan observability seperti Logtail atau Datadog.
12. Monitoring & Error Tracking
Tambahkan Sentry SDK untuk Next.js:
npm i @sentry/nextjs
npx @sentry/wizard -i nextjs
Konfigurasi sentry.client.config.ts dan sentry.server.config.ts sesuai dokumentasi resmi.
13. Penutup
Dengan langkah‑langkah di atas, Anda memiliki aplikasi Next.js 14 yang modern, aman, dan siap produksi. Manfaatkan App Router untuk routing berbasis file, Server Actions untuk logika server tanpa boilerplate, dan deployment otomatis ke Vercel sehingga tim dapat fokus pada fitur utama, bukan infrastruktur.
Next.js 14 memberikan paradigma baru yang menyederhanakan pengembangan full‑stack React. Dengan menggabungkan App Router, Server Actions, TypeScript, dan Prisma, Anda dapat membangun aplikasi yang performant, mudah dipelihara, dan siap skala. Ikuti best practice keamanan, testing, dan observability untuk memastikan kualitas tinggi dalam jangka panjang. Selamat coding!
Panduan lengkap setup Next.js 14 dengan App Router, Server Actions, TypeScript, Prisma, dan deployment Vercel. Tutorial step‑by‑step, contoh kode, dan best practice untuk Programming, Software Engineering, dan Web Development di 2026.
Programming,Software Engineering,Web Development,Next.js 14,App Router,Server Actions,TypeScript,Prisma,Vercel
#Programming #SoftwareEngineering #WebDev #Tech #Coding
0 Komentar