Next.js 14 menjadi standar de‑facto untuk aplikasi React modern. Tutorial ini membimbing Anda step‑by‑step menginstal, mengonfigurasi, dan menulis kode contoh yang memanfaatkan App Router, Server Components, dan TailwindCSS, lengkap dengan best practice untuk Production.
1. Persiapan Lingkungan dan Prasyarat
Pastikan Anda memiliki:
- Node.js v20.12 atau lebih baru (unduh dari nodejs.org)
- npm v10 atau Yarn v4 (pilih salah satu)
- Git untuk version control
- Editor code modern, misalnya VS Code dengan ekstensi ESLint dan Tailwind CSS IntelliSense
Verifikasi instalasi dengan perintah:
node -v
npm -v # atau yarn -v
2. Membuat Project Next.js 14 Baru
Gunakan create-next-app dengan flag --experimental-app untuk mengaktifkan App Router secara default (meskipun sejak v14 sudah stabil, flag tetap memastikan kompatibilitas).
npx create-next-app@latest my-next14-app \
--ts \
--experimental-app \
--eslint
cd my-next14-app
Folder proyek akan berisi struktur:
app/– direktori utama App Routerpages/– masih ada untuk kompatibilitas legacypublic/– aset statisstyles/– CSS global (akan digantikan Tailwind)
3. Mengintegrasikan TailwindCSS 3.5
Tailwind memudahkan styling responsif tanpa meninggalkan HTML. Ikuti langkah resmi:
# Instalasi dependensi
npm install -D tailwindcss@latest postcss@latest autoprefixer@latest
# Inisialisasi konfigurasi
npx tailwindcss init -p
Edit tailwind.config.js agar mendeteksi file di dalam app/:
module.exports = {
content: [
"./app/**/*.{js,ts,jsx,tsx}",
"./pages/**/*.{js,ts,jsx,tsx}",
"./components/**/*.{js,ts,jsx,tsx}",
],
theme: { extend: {} },
plugins: [],
};
Hapus isi styles/globals.css dan gantikan dengan direktif Tailwind:
@tailwind base;
@tailwind components;
@tailwind utilities;
Terakhir, import file CSS di app/layout.tsx:
import "./globals.css";
4. Membuat Layout Global dengan Server Component
Di Next.js 14, app/layout.tsx adalah Server Component secara default. Tambahkan header, footer, dan metadata.
export const metadata = {
title: "Demo Next.js 14 – App Router",
description: "Aplikasi contoh dengan Server Components & TailwindCSS",
};
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
Next.js 14 Demo
{children}
);
}
Catatan: Karena ini Server Component, tidak ada use client di atas file.
5. Membuat Halaman Dashboard Menggunakan Server & Client Components
Contoh: app/dashboard/page.tsx sebagai Server Component yang memanggil API internal, dan components/ChartClient.tsx sebagai Client Component untuk visualisasi chart dengan Chart.js.
// app/dashboard/page.tsx
import ChartClient from "../components/ChartClient";
import { getStats } from "../lib/api";
export const revalidate = 60; // ISR tiap menit
export default async function DashboardPage() {
const stats = await getStats(); // panggil server‑side function
return (
Statistik Pengguna
{stats.activeUsers}
Active Users
{/* Client Component hanya di sini */}
);
}
Client Component:
// components/ChartClient.tsx
"use client"; // wajib di atas!
import { Line } from "react-chartjs-2";
import { Chart, CategoryScale, LinearScale, PointElement, LineElement } from "chart.js";
Chart.register(CategoryScale, LinearScale, PointElement, LineElement);
export default function ChartClient({ data }: { data: number[] }) {
const chartData = {
labels: data.map((_, i) => `Week ${i + 1}`),
datasets: [{ label: "Growth", data, borderColor: "#3b82f6", tension: 0.4 }],
};
return ;
}
Dengan memisahkan Server dan Client Component, Anda memanfaatkan streaming HTML otomatis dan mengurangi bundle size.
6. Membuat API Route dengan Edge Runtime
Next.js 14 mendukung Edge Functions yang berjalan di Vercel Edge Network atau Cloudflare Workers. Buat file app/api/stats/route.ts:
export const runtime = "edge"; // optional, memastikan dijalankan di edge
export async function GET() {
const data = {
activeUsers: Math.floor(Math.random() * 1000),
monthlyGrowth: Array.from({ length: 12 }, () => Math.floor(Math.random() * 100)),
};
return new Response(JSON.stringify(data), {
headers: { "Content-Type": "application/json" },
});
}
Fungsi getStats di lib/api.ts akan memanggil endpoint ini:
// lib/api.ts
export async function getStats() {
const res = await fetch("/api/stats", { cache: "no-store" });
if (!res.ok) throw new Error("Failed to fetch stats");
return res.json();
}
7. Menambahkan TypeScript Strict Mode & ESLint
Ubah tsconfig.json:
{
"extends": "next/core-web-vitals",
"compilerOptions": {
"strict": true,
"noImplicitAny": true,
"moduleResolution": "node",
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
}
}
Pastikan eslint ter‑configure untuk React Hook Rules dan Tailwind lint:
# install plugins
npm i -D eslint-plugin-react eslint-plugin-react-hooks eslint-plugin-tailwindcss
# .eslintrc.json
{
"extends": ["next", "next/core-web-vitals", "plugin:react/recommended", "plugin:react-hooks/recommended"],
"plugins": ["tailwindcss"],
"rules": {"tailwindcss/no-custom-classname": "warn"}
}
8. Optimasi Build & Deploy ke Vercel
Next.js 14 sudah menyertakan Automatic Image Optimization, Server‑Side Rendering, dan Incremental Static Regeneration. Untuk produksi:
# Build
npm run build
# Lokal preview
npm run start
Deploy ke Vercel (gratis tier) cukup dengan menghubungkan repositori GitHub:
- Buat repo di GitHub, push kode.
- Masuk ke vercel.com, pilih New Project.
- Gunakan
npm run buildsebagai build command; output directory otomatis.next.
Vercel otomatis meng‑detect next.config.js. Tambahkan konfigurasi optional untuk caching Edge:
// next.config.js
module.exports = {
images: { remotePatterns: [{ protocol: "https", hostname: "**" }] },
experimental: { runtime: "edge" },
};
9. Best Practice Production
- Enforce Strict TypeScript: mengurangi runtime error.
- Gunakan Edge Functions untuk latency rendah pada API yang tidak memerlukan akses DB.
- Aktifkan React 19 Concurrent Features dengan
experimental_concurrentFeatures: truedinext.config.jsjika proyek mendukung. - Cache static assets dengan
Cache-Controlheader lewat Vercel atau CDN. - Audit bundle size dengan
next build && next analyze– hapus dependensi tak terpakai.
10. Penutup & Langkah Selanjutnya
Anda kini memiliki aplikasi Next.js 14 modern yang menggabungkan App Router, Server Components, TailwindCSS, dan Edge API. Untuk memperdalam:
- Integrasi Auth.js (next‑auth) untuk otentikasi OAuth.
- Gunakan React Server Actions (fitur eksperimental) untuk operasi POST tanpa API terpisah.
- Tambahkan Internationalization (i18n) dengan
next-intl.
Eksperimen dengan Streaming dan Incremental Adoption untuk migrasi proyek legacy ke arsitektur baru.
Dengan mengikuti langkah‑langkah di atas, Anda dapat membangun aplikasi Next.js 14 yang cepat, scalable, dan mudah dipelihara. Kombinasi App Router, Server Components, dan TailwindCSS menyediakan fondasi modern untuk proyek Web Development, sementara edge API memastikan latency minimal. Terapkan best practice yang telah dibahas, dan siap-siap menjelajahi ekosistem Next.js yang terus berevolusi di tahun 2026.
Tutorial lengkap setup Next.js 14 dengan App Router, React Server Components, TailwindCSS, dan edge API. Langkah‑by‑step, contoh kode, dan best practice untuk Production 2026.
Programming,Software Engineering,Web Development
#Programming #SoftwareEngineering #WebDev #Tech #Coding
0 Komentar