Pelajari cara menyiapkan proyek Next.js 14 terbaru, memanfaatkan App Router, Server Actions, dan best practice untuk performa optimal serta keamanan modern.
1. Persiapan Lingkungan
Pastikan Anda memiliki Node.js versi 20.10+ atau lebih tinggi, serta npm atau pnpm terbaru. Anda dapat memeriksa versi dengan perintah:
node -v
npm -v # atau pnpm -v
Jika belum terinstall, unduh dari nodejs.org dan ikuti instruksi instalasi untuk sistem operasi Anda.
2. Membuat Proyek Next.js 14 Baru
Gunakan create-next-app yang sudah terintegrasi dengan Next.js 14. Kami rekomendasikan pnpm untuk kecepatan instalasi:
pnpm create next-app@latest my-next14-app --ts --app
Parameter yang dipakai:
--ts: menyertakan TypeScript.--app: mengaktifkan struktur App Router secara default.
Masuk ke direktori proyek:
cd my-next14-app
3. Menjalankan Server Development
pnpm dev
Server akan tersedia di http://localhost:3000. Buka di browser dan pastikan halaman Welcome to Next.js muncul.
4. Memahami Struktur App Router
Folder app/ menggantikan pages/ tradisional. Setiap subfolder menjadi route otomatis. Contoh struktur dasar:
app/
├─ layout.tsx # Layout global
├─ page.tsx # Route root (/)
├─ about/
│ └─ page.tsx # Route /about
└─ api/
└─ hello/route.ts # Route API /api/hello
File layout.tsx biasanya berisi <html>, <head>, dan <body> wrapper.
5. Menambahkan Server Action
Server Actions memungkinkan Anda menulis fungsi yang dijalankan di server langsung dari komponen client, tanpa endpoint API terpisah. Langkah pertama, aktifkan experimental flag di next.config.js:
/** @type {import('next').NextConfig} */
const nextConfig = {
experimental: {
serverActions: true,
},
};
module.exports = nextConfig;
Selanjutnya, buat komponen client dengan 'use client' dan panggil Server Action:
// app/contact/page.tsx
'use client';
import { useState } from 'react';
export default function ContactPage() {
const [status, setStatus] = useState('');
async function sendMessage(formData) {
'use server';
// Simulasi penyimpanan ke DB
await new Promise(r => setTimeout(r, 500));
console.log('Message received:', formData);
return 'Message sent!';
}
const handleSubmit = async (e) => {
e.preventDefault();
const data = { name: e.target.name.value, message: e.target.message.value };
const result = await sendMessage(data);
setStatus(result);
};
return (
Contact Us
{status && {status}
}
);
}
Catatan penting:
- Server Action hanya dapat dipanggil dari komponen client.
- Gunakan
'use server'di dalam fungsi untuk menandakan eksekusi di server. - Data tidak di‑serialize ke JSON, sehingga Anda dapat mengoper object kompleks secara langsung.
6. Konfigurasi ESLint & Prettier
Next.js 14 sudah menyertakan preset ESLint, namun kami menambahkan rule khusus untuk Server Actions:
// .eslintrc.js
module.exports = {
root: true,
extends: ['next/core-web-vitals', 'plugin:@typescript-eslint/recommended'],
plugins: ['@typescript-eslint'],
rules: {
'@typescript-eslint/no-explicit-any': 'off',
'no-restricted-syntax': [
'error',
{
selector: "CallExpression[callee.name='fetch']",
message: 'Gunakan built‑in Next.js fetch di server only, hindari di client component.'
}
]
}
};
Jalankan linting:
pnpm lint
7. Deploy ke Vercel dengan Zero‑Config
Vercel otomatis mendeteksi Next.js 14 dan mengaktifkan Server Actions. Ikuti langkah:
- Push repositori ke GitHub.
- Buka vercel.com dan impor proyek.
- Pilih
Next.jssebagai framework, biarkan semua variabel environment default. - Deploy! Vercel akan menyediakan URL
https://your-project.vercel.app.
Jika Anda menggunakan custom domain, tambahkan di dashboard Vercel dan atur DNS A record ke alias Vercel.
8. Best Practice untuk Performansi & Keamanan
- Static Rendering bila memungkinkan: gunakan
export const dynamic = 'force-static'pada page yang tidak memerlukan data dinamis. - Edge Runtime: tambahkan
export const runtime = 'edge'untuk mengurangi latency pada route API. - Rate Limiting: implementasikan middleware dengan
next-rate-limituntuk melindungi Server Actions dari abuse. - Content Security Policy (CSP): set CSP di
next.config.jsmelaluiheaders()untuk mencegah XSS.
// next.config.js (lanjutan)
module.exports = {
async headers() {
return [
{
source: '/(.*)',
headers: [
{ key: 'Content-Security-Policy', value: "default-src 'self'; script-src 'self' 'unsafe-eval';" },
{ key: 'X-Frame-Options', value: 'DENY' },
],
},
];
},
};
9. Monitoring & Logging
Gunakan Vercel Observability atau integrasi dengan Logflare untuk capture log Server Actions. Tambahkan kode berikut pada Server Action:
import { logger } from '@vercel/sdk';
export async function sendMessage(formData) {
'use server';
logger.info('Contact form submitted', { payload: formData });
// ...logic
}
10. Upgrade ke Next.js 15 (Preview)
Jika Anda ingin mencoba versi preview, cukup jalankan:
pnpm add next@canary
Pastikan untuk membaca panduan upgrade resmi karena ada perubahan pada app/route.ts dan API baru untuk parallelRoutes.
Dengan mengikuti langkah-langkah di atas, Anda kini memiliki aplikasi Next.js 14 modern yang memanfaatkan App Router, Server Actions, serta best practice untuk keamanan dan performa. Deploy ke Vercel menjadi satu klik, sementara konfigurasi linting, CSP, dan monitoring memastikan kode tetap bersih dan terukur. Jangan ragu untuk bereksperimen dengan fitur preview Next.js 15 ketika sudah siap, dan terus pantau komunitas di Reddit, Hacker News, serta GitHub Trending untuk tetap up‑to‑date dengan evolusi ekosistem React dan Server‑Side Rendering.
Tutorial lengkap setup Next.js 14 dengan App Router, Server Actions, best practice, dan deployment Vercel. Panduan step-by-step untuk developer tahun 2026.
Programming,Software Engineering,Web Development
#Programming #SoftwareEngineering #WebDev #Tech #Coding
0 Komentar