Next.js 14 menjadi standar de‑facto untuk aplikasi React modern. Artikel ini memberikan tutorial step‑by‑step untuk menginstal, mengkonfigurasi, dan menerapkan fitur terbaru seperti App Router, Server Actions, dan Streaming, lengkap dengan contoh kode dan best practice untuk Production‑ready.
1. Prasyarat dan Persiapan Lingkungan
Sebelum memulai, pastikan Anda memiliki:
- Node.js >= 20.10 (LTS)
- npm atau yarn (versi 9+)
- Git untuk version control
- Editor kode (VS Code direkomendasikan)
Verifikasi instalasi dengan:
node -v
npm -v
2. Membuat Proyek Next.js 14 Baru
Gunakan create-next-app yang sudah ter‑update ke versi 14.
npx create-next-app@latest my-next14-app --ts --app
cd my-next14-app
Flag --app secara otomatis membuat struktur App Router (folder app/) yang menggantikan pages/. Proyek akan berisi TypeScript, ESLint, dan lint‑staged siap pakai.
3. Menjalankan Development Server
npm run dev # atau yarn dev
Buka http://localhost:3000 di browser. Anda sudah melihat halaman beranda default.
4. Memahami Struktur App Router
Folder app/ berisi:
layout.tsx– layout global (header, footer, metadata)page.tsx– halaman utamaloading.tsx– UI loading untuk streamingerror.tsx– fallback error handling- Sub‑folder untuk route nested (mis.
dashboard/)
Contoh layout sederhana
/* app/layout.tsx */
import './globals.css';
export const metadata = {
title: 'Next.js 14 Starter',
description: 'Demo App Router & Server Actions',
};
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
My Next.js 14 App
{children}
);
}
5. Menambahkan Server Action (POST) untuk Formulir
Server Actions memungkinkan Anda menulis fungsi server langsung di komponen React tanpa API route terpisah.
Langkah 1: Buat Formulir di app/contact/page.tsx
/* app/contact/page.tsx */
'use client'; // Karena akan menggunakan useState di client
import { useState } from 'react';
export default function ContactPage() {
const [status, setStatus] = useState('');
async function submitForm(data: FormData) {
'use server'; // Server Action marker
const name = data.get('name');
const message = data.get('message');
// Simulasi penyimpanan (mis. DB atau API)
console.log('Received', { name, message });
// Return response yang bisa di‑handle di client
return 'Success';
}
return (
Contact Us
{status && {status}
}
);
}
Catatan:
- Gunakan
'use server'di dalam fungsi untuk menandai bahwa fungsi dijalankan di server. - Dengan App Router, tidak perlu membuat
/apiterpisah.
6. Mengaktifkan Streaming dan Loading UI
Next.js 14 native streaming untuk data‑heavy pages. Tambahkan loading.tsx di folder yang sama.
/* app/dashboard/loading.tsx */
export default function Loading() {
return Loading dashboard data…
;
}
Ketika data di page.tsx di‑fetch secara async, Next.js akan menampilkan komponen ini sampai resolved.
7. Konfigurasi ESLint, Prettier, & TypeScript Strict Mode
File eslint.config.mjs sudah ada, tetapi pastikan rule berikut aktif:
import eslintPluginNext from '@next/eslint-plugin-next';
export default eslintPluginNext.config({
rules: {
'react/react-in-jsx-scope': 'off',
'@next/strict-docs': 'warn',
},
});
Untuk Prettier, buat .prettierrc:
{
"singleQuote": true,
"trailingComma": "es5",
"printWidth": 100
}
TypeScript strict dapat di‑aktifkan di tsconfig.json:
{
"compilerOptions": {
"strict": true,
"noImplicitAny": true,
"skipLibCheck": true,
"resolveJsonModule": true
}
}
8. Optimasi Performance – Image, Font, dan Edge Runtime
- next/image sudah di‑deprecate di versi 14; gunakan
next/legacy/imagehanya bila diperlukan, atau migrasi ke native<img>denganloading="lazy"danwidth/heightstatis. - Tambahkan
next/fontuntuk loading Google Fonts secara optimal:
import { Inter } from 'next/font/google';
const inter = Inter({ subsets: ['latin'] });
export default function RootLayout({ children }) {
return (...);
}
- Gunakan
runtime: 'edge'pada API route atau Server Action yang membutuhkan latensi rendah.
9. Penambahan CI/CD dengan GitHub Actions
Buat file .github/workflows/ci.yml:
name: CI
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20.x'
- run: npm ci
- run: npm run lint
- run: npm run build
- name: Deploy to Vercel
uses: amondnet/vercel-action@v20
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-args: '--prod'
working-directory: .
Workflow ini menjalankan lint, build, dan otomatis deploy ke Vercel (platform hosting resmi Next.js).
10. Deploy ke Production dengan Vercel
- Login ke Vercel dan hubungkan repository GitHub.
- Pilih framework Next.js. Vercel secara otomatis meng‑detect
next.config.jsdan meng‑enableEdge Functionsbila ada. - Set environment variables (contoh:
DATABASE_URL) melalui dashboard. - Deploy selesai, dapat diakses lewat domain
yourproject.vercel.app.
11. Best Practice untuk Production
- Static Generation (SSG) ketika memungkinkan – gunakan
generateStaticParamsuntuk route dinamis. - Cache-Control – tambahkan header di
next.config.jsuntuk asset statis. - Security – aktifkan
Content-Security-PolicypadaHeadersAPI Vercel atau dinext.config.js. - Observability – integrasikan dengan OpenTelemetry atau Vercel Analytics untuk monitoring RPS & latency.
- Upgrade Cycle – gunakan
npm outdatedtiap minggu, dan upgrade dengannpm i next@latestuntuk tetap berada di rilis stable.
12. Troubleshooting Umum
| Masalah | Penyebab | Solusi |
|---|---|---|
| "React 19 is not a peer dependency" | Next.js 14 masih meng‑use React 18.15 | Jangan upgrade React lebih dulu; tunggu Next.js 15 atau gunakan alias. |
| Server Action tidak dipanggil | Form tidak memiliki attribute action atau 'use server' hilang | Pastikan fungsi berada di file .tsx dan 'use server' berada di baris pertama. |
| Statik image tidak dimuat | Ukuran width/height tidak ditentukan | Setel width dan height atau gunakan loading="lazy". |
13. Studi Kasus: Migrasi Blog Lama (Next.js 12) ke Next.js 14
Tim engineering di sebuah startup media meng‑upgrade blog mereka dengan langkah:
- Export konten Markdown ke
content/folder. - Mengganti
pages/denganapp/dan memanfaatkangenerateStaticParamsuntuk membuat route dinamis. - Menambahkan Server Actions untuk komentar tanpa menulis API terpisah.
- Deploy ke Vercel, meng‑aktifkan Image Optimization otomatis.
Hasil: Load Time berkurang 45%, LCP turun dari 2.8s ke 1.4s, dan tim dapat menambah fitur komentar dalam satu hari kerja.
Next.js 14 membawa paradigma baru dengan App Router, Server Actions, dan streaming yang memudahkan developer membangun aplikasi React yang cepat, aman, dan mudah di‑scale. Dengan mengikuti tutorial ini—mulai dari instalasi, konfigurasi, contoh kode, CI/CD, hingga best practice—Anda siap mengembangkan proyek modern dan memanfaatkan ekosistem Vercel untuk deployment otomatis. Jangan lupa memantau rilis patch setiap bulan dan terus memperbarui dependensi untuk menjaga keamanan dan performa aplikasi Anda.
Panduan lengkap step-by-step setup Next.js 14 dengan App Router, Server Actions, streaming, CI/CD, dan best practice untuk performance optimization di 2026.
Programming,Software Engineering,Web Development
#Programming #SoftwareEngineering #WebDev #Tech #Coding
0 Komentar