Next.js 14 memperkenalkan App Router generasi berikutnya, Server Actions, dan integrasi TypeScript yang lebih kuat. Ikuti tutorial step‑by‑step ini untuk membangun aplikasi React modern dengan performa optimal, SEO‑friendly, dan siap produksi pada Juli 2026.

1. Prasyarat & Persiapan Lingkungan

Pastikan Anda memiliki:

  • Node.js >= 20.10 (LTS) – unduh di nodejs.org
  • npm atau Yarn (versi 2+), atau pnpm (rekomendasi)
  • Git untuk version control
  • Editor kode – VS Code dengan ekstensi ESLint, Prettier, dan Tailwind CSS IntelliSense

Verifikasi instalasi:

node -v
npm -v

2. Membuat Project Next.js 14 Baru

2.1 Inisialisasi dengan pnpm

pnpm create next-app@latest my-next14-app --ts --app

Perintah di atas akan:

  • Menggunakan create-next-app versi terbaru yang mendukung Next.js 14.
  • Mengaktifkan TypeScript (--ts) dan App Router (--app).
  • Membuat struktur folder app/ alih‑alih pages/.

2.2 Install Dependensi Tambahan

cd my-next14-app
pnpm add tailwindcss@latest postcss@latest autoprefixer@latest
pnpm add -D @types/node eslint prettier eslint-config-next
pnpm exec tailwindcss init -p

Konfigurasi tailwind.config.cjs:

module.exports = {
  content: ["./app/**/*.{js,ts,jsx,tsx}", "./components/**/*.{js,ts,jsx,tsx}"],
  theme: { extend: {} },
  plugins: [],
};

Tambahkan Tailwind ke globals.css:

@tailwind base;
@tailwind components;
@tailwind utilities;

3. Struktur Dasar App Router

Folder app/ kini menggantikan pages/. Contoh struktur minimal:

app/
├─ layout.tsx          # Layout global
├─ page.tsx            # Halaman beranda
├─ about/
│   └─ page.tsx       # Halaman /about
├─ api/
│   └─ hello/route.ts # API Route contoh
└─ globals.css

3.1 Membuat Layout Global

/* app/layout.tsx */
import "./globals.css";
import type { Metadata } from "next";

export const metadata: Metadata = {
  title: "Next.js 14 App Router Demo",
  description: "Aplikasi contoh dengan Server Actions dan TypeScript",
};

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    
      
        

Next.js 14 Demo

{children}
© {new Date().getFullYear()} Next.js 14
); }

3.2 Membuat Halaman Beranda

/* app/page.tsx */
import Link from "next/link";

export default function Home() {
  return (
    

Selamat Datang di Next.js 14

Ini adalah contoh implementasi App Router, Server Actions, dan Tailwind.

); }

4. Menggunakan Server Actions (Beta di 14)

Server Actions memungkinkan fungsi dijalankan di server tanpa membuat API terpisah. Cocok untuk form handling, mutasi database, atau panggilan OpenAI API.

4.1 Mengaktifkan Experimental Flag

Tambahkan ke next.config.mjs:

export default defineConfig({
  experimental: { serverActions: true },
});

4.2 Membuat Form dengan Server Action

/* app/contact/page.tsx */
"use server";
import { revalidatePath } from "next/cache";

async function submitContact(formData: FormData) {
  const name = formData.get("name") as string;
  const email = formData.get("email") as string;
  const message = formData.get("message") as string;

  // Simulasi penyimpanan – dalam produksi gunakan Prisma atau Drizzle ORM
  console.log("Contact submission:", { name, email, message });

  // Opsional: revalidate cache pada halaman /contact
  revalidatePath("/contact");
}

export default function ContactPage() {
  return (