Next.js 14 menjadi standar de‑facto untuk pembangunan UI React modern. Tutorial ini memandu Anda step‑by‑step menyiapkan proyek, mengkonfigurasi App Router, memanfaatkan Server Components, serta mengoptimalkan build dengan Turbopack.
1. Prasyarat dan Persiapan Lingkungan
Sebelum memulai, pastikan Anda memiliki:
- Node.js v20.12+ (unduh dari nodejs.org)
- npm 10.x atau pnpm 9.x (kami rekomendasikan pnpm karena lebih cepat dalam monorepo)
- Git untuk version control
- Editor kode – VS Code dengan ekstensi ESLint, Prettier, dan Tailwind CSS IntelliSense
1.1 Instalasi Node & pnpm
# Instal Node 20.x (gunakan nvm jika ingin mengelola banyak versi)
curl -fsSL https://fnm.vercel.app/install | bash
fnm install 20
fnm use 20
# Instal pnpm secara global
npm i -g pnpm@9
2. Membuat Proyek Next.js 14 dengan Turbopack
Next.js 14 mengaktifkan Turbopack secara default ketika Anda menggunakan create-next-app dengan flag --turbo. Turbopack adalah bundler baru yang diklaim hingga 3× lebih cepat dibandingkan Webpack.
2.1 Inisialisasi Proyek
# Buat folder proyek
mkdir next14-app && cd $_
# Inisialisasi dengan template TypeScript dan Turbopack
pnpm create next-app@latest . --ts --eslint --src-dir --app --turbo
Perintah di atas menghasilkan struktur folder src/app (App Router) dan src/pages (legacy) secara otomatis.
2.2 Memeriksa Versi
pnpm list next
# Output: next@14.2.3 (atau versi terbaru pada saat 2026-05-27)
3. Memahami App Router dan Server Components
App Router (src/app) menggantikan pages tradisional. Setiap folder menjadi route, dan file page.tsx adalah komponen UI. Dengan "use client" Anda dapat menandai komponen yang harus dijalankan di browser, sedangkan defaultnya adalah Server Component (SSR).
3.1 Membuat Route Home dengan Server Component
src/app/page.tsx
export default async function HomePage() {
// Contoh fetch data langsung di server component
const res = await fetch('https://api.github.com/repos/vercel/next.js', {
next: { revalidate: 60 } // ISR 60 detik
});
const repo = await res.json();
return (
Next.js 14 Demo
⭐ {repo.stargazers_count} bintang pada repositori Next.js
);
}
Catatan: Karena HomePage adalah Server Component, tidak ada useState atau event handler di dalamnya.
3.2 Menambahkan Client Component
src/components/Counter.tsx
"use client";
import { useState } from "react";
export default function Counter() {
const [count, setCount] = useState(0);
return (
);
}
Lalu import di page.tsx:
import Counter from "@/components/Counter";
// ... di dalam return JSX
4. Konfigurasi Tailwind CSS + Shadcn UI (Opsional)
Tailwind masih menjadi pilihan utama untuk styling utility‑first. Shadcn UI menyediakan komponen React yang sudah ter‑optimasi untuk Server/Client Component.
4.1 Instalasi Tailwind
pnpm add -D tailwindcss@latest postcss@latest autoprefixer@latest
npx tailwindcss init -p
Update tailwind.config.ts:
/** @type {import('tailwindcss').Config} */
export default {
content: ["./src/**/*.{js,ts,jsx,tsx}", "./app/**/*.{js,ts,jsx,tsx}"],
theme: { extend: {} },
plugins: [],
};
4.2 Instalasi Shadcn UI
pnpm dlx shadcn-ui@latest init
pnpm dlx shadcn-ui@latest add button dialog
Komponen dapat langsung dipakai di dalam Counter atau halaman lain.
5. Mengatur Environment Variables & Secrets
Gunakan file .env.local untuk variabel yang tidak di‑commit.
# .env.local
NEXT_PUBLIC_GA_ID=G-XXXXXXXXXX
API_KEY=super-secret-key
Dalam Server Component, akses lewat process.env.API_KEY. Pada Client Component, gunakan prefix NEXT_PUBLIC_ untuk ekspos.
6. Menambahkan CI/CD dengan GitHub Actions & Vercel
Next.js memiliki integrasi seamless ke Vercel, tetapi contoh berikut menunjukkan workflow GitHub Actions yang men-deploy ke Vercel via vercel-action.
6.1 Buat file .github/workflows/deploy.yml
name: Deploy to Vercel
on:
push:
branches: [main]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: pnpm
- name: Install pnpm
run: npm i -g pnpm@9
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm run build
- name: Deploy to Vercel
uses: amondnet/vercel-action@v25
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}
working-directory: .
github-token: ${{ secrets.GITHUB_TOKEN }}
Pastikan Anda menyimpan token Vercel dan ID organisasi di Settings → Secrets repository.
7. Optimasi Performa dengan Turbopack & Edge Functions
- Lazy Loading: gunakan
next/dynamicuntuk memecah bundle. - Edge Middleware: jalankan logika autentikasi di edge network.
7.1 Contoh Dynamic Import
import dynamic from "next/dynamic";
const Chart = dynamic(() => import("@/components/Chart"), { ssr: false });
7.2 Edge Middleware (auth)
// src/middleware.ts
import { NextResponse } from "next/server";
export async function middleware(request: Request) {
const token = request.headers.get("authorization");
if (!token) return NextResponse.redirect(new URL("/login", request.url));
// validasi token di edge (fast)
return NextResponse.next();
}
export const config = { matcher: "/dashboard/:path*" };
8. Testing dan Linting
8.1 Jest + React Testing Library
pnpm add -D jest @testing-library/react @testing-library/jest-dom ts-jest
# jest.config.ts
export default {
preset: "ts-jest",
testEnvironment: "jsdom",
moduleNameMapper: {
"^@/(.*)$": "/src/$1",
},
};
8.2 ESLint & Prettier
pnpm add -D eslint prettier eslint-config-next eslint-plugin-react-hooks
# .eslintrc.json
{ "extends": ["next", "next/core-web-vitals", "prettier"] }
9. Deploy ke Produksi
Setelah CI/CD selesai, Vercel otomatis menyediakan URL produksi. Untuk kebutuhan enterprise, Anda dapat men‑deploy ke AWS CloudFront menggunakan next start pada server EC2 dengan Turbopack --no-optimizer untuk image‑heavy apps.
10. Best Practices & Tips Tambahan
- Gunakan Incremental Static Regeneration (ISR) bila data tidak berubah tiap detik.
- Jangan menaruh kode yang heavy di Server Component tanpa
cache– gunakanrevalidateatauCache-Controlheader. - Hindari
"use client"berlebih; tiap client component menambah bundle size. - Manfaatkan React Server Actions (fitur eksperimental di Next 14) untuk mutasi data tanpa API route terpisah.
- Selalu lint kode dengan
pnpm run lint && pnpm run formatsebelum merge.
Dengan mengikuti tutorial ini, Anda kini memiliki aplikasi Next.js 14 lengkap – menggunakan App Router, Server Components, Turbopack, dan CI/CD berbasis Vercel. Kombinasi ini memberikan performa kelas dunia, pengembangan yang lebih produktif, dan alur kerja yang siap skalabilitas enterprise. Eksperimenlah dengan React Server Actions, Edge Middleware, dan strategi caching untuk memaksimalkan kecepatan serta keamanan aplikasi Anda.
Panduan step‑by‑step membangun aplikasi Next.js 14 dengan App Router, Server Components, dan Turbopack. Termasuk instalasi, konfigurasi, contoh kode, CI/CD, serta best practice untuk Programming, Software Engineering, dan Web Development di 2026.
Programming,Software Engineering,Web Development,Next.js 14,App Router,Server Components,Turbopack
#Programming #SoftwareEngineering #WebDev #Tech #Coding
0 Komentar