Di artikel ini Anda akan belajar cara memulai proyek Next.js 14 terbaru, mengaktifkan App Router, memanfaatkan React Server Components, serta menyiapkan TypeScript dan best practice untuk produksi.
1. Persiapan Lingkungan
Pastikan Anda telah menginstal Node.js versi 20.12+ dan npm atau pnpm latest. Cek dengan:
node -v
npm -v # atau pnpm -v
Jika belum, unduh dari nodejs.org.
1.1. Instalasi Paket Global
npm install -g create-next-app
# atau dengan pnpm
pnpm add -g create-next-app
2. Membuat Proyek Next.js 14 dengan TypeScript
npx create-next-app@latest my-next14-app \
--ts \
--app
cd my-next14-app
Opsional: gunakan pnpm install untuk instalasi lebih cepat.
2.1. Struktur Direktori Baru (App Router)
app/– folder utama untuk route berbasis file.app/layout.tsx– layout root yang membungkus semua halaman.app/page.tsx– halaman beranda default.app/api/– route API built‑in yang otomatis menjadi serverless functions.
3. Konfigurasi TypeScript & ESLint
Next.js 14 sudah men-generate tsconfig.json yang optimal, namun Anda dapat menambahkan strict mode:
{
"compilerOptions": {
"strict": true,
"noImplicitAny": true,
"forceConsistentCasingInFileNames": true,
"esModuleInterop": true,
"moduleResolution": "node",
"skipLibCheck": true,
"jsx": "preserve"
}
}
Selanjutnya, tambahkan ESLint preset untuk Next.js:
npm install --save-dev eslint eslint-config-next
npx eslint --init
3.1. Aturan Penting
react-hooks/rules-of-hooks– wajib untuk React Server Components.@next/next/no-img-element– gunakannext/imagebila memungkinkan.
4. Mengaktifkan React Server Components (RSC)
Secara default, file dalam app/ yang berekstensi .tsx dianggap Server Component kecuali Anda menambahkan 'use client' di baris pertama.
4.1. Contoh Server Component
// app/products/page.tsx (Server Component)
import { getProducts } from '@/lib/db';
export default async function ProductsPage() {
const products = await getProducts(); // dapat dipanggil langsung di server
return (
Produk Kami
{products.map(p => (
- {p.name} – ${p.price}
))}
);
}
Karena ini server‑side, tidak ada bundle JavaScript yang dikirim ke klien untuk bagian ini, meningkatkan Performance.
4.2. Membuat Client Component
// app/components/ThemeToggle.tsx
'use client';
import { useState } from 'react';
export default function ThemeToggle() {
const [dark, setDark] = useState(false);
return (
);
}
Import komponen ini dalam Server Component jika diperlukan.
5. Membuat API Route dengan App Router
// app/api/checkout/route.ts
import { NextResponse } from 'next/server';
export async function POST(request: Request) {
const body = await request.json();
// Simulasi proses pembayaran
const result = { status: 'success', orderId: Date.now() };
return NextResponse.json(result);
}
Endpoint ini otomatis tersedia di /api/checkout dengan method POST.
6. Optimasi Performansi
- Edge Runtime: Tambahkan
export const runtime = 'edge';pada file route untuk mengeksekusi di edge network. - Streaming: Gunakan
await fetch(...)dalam Server Component bersamaan denganReact.Suspenseuntuk streaming UI. - Image Optimization: Ganti
<img>dengan<Image>darinext/imagesupaya CDN otomatis mengoptimalkan ukuran.
7. Deploy ke Vercel (atau Platform Lain)
- Push repository ke GitHub.
- Buka vercel.com dan import repository.
- Pilih framework Next.js – Vercel mendeteksi otomatis versi 14.
- Set environment variable
NODE_ENV=productiondan optionalNEXT_PUBLIC_API_URL. - Deploy! Vercel akan menjalankan
npm run builddan menyediakan preview URL.
7.1. Deploy ke Docker (Opsional)
# Dockerfile
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY --from=builder /app/.next .next
COPY --from=builder /app/public public
COPY --from=builder /app/package*.json ./
RUN npm ci --omit=dev
EXPOSE 3000
CMD ["npm", "start"]
Build & run:
docker build -t next14-app .
docker run -p 3000:3000 next14-app
8. Best Practice untuk Produksi
- File‑system based routing – Hindari dynamic route yang tidak diperlukan untuk meningkatkan caching.
- Static Generation (SSG) – Gunakan
generateStaticParamsbila data tidak berubah sering. - Security – Aktifkan
Content‑Security‑Policydinext.config.js, gunakanhelmetpada custom server jika ada. - Telemetry – Non‑aktifkan dengan
NEXT_TELEMETRY_DISABLED=1bila tidak ingin mengirim data usage. - Monitoring – Integrasikan dengan Vercel Analytics atau Sentry untuk error tracking.
9. Menambahkan Unit & Integration Test
Next.js 14 mendukung Jest dan React Testing Library out‑of‑box.
# Install dependencies
npm install --save-dev jest @testing-library/react @testing-library/jest-dom ts-jest
# jest.config.ts
export default {
preset: 'ts-jest',
testEnvironment: 'jsdom',
moduleNameMapper: {
'^@/(.*)
Dengan mengikuti tutorial ini Anda tidak hanya menguasai setup dasar Next.js 14, tetapi juga memahami arsitektur modern yang menggabungkan Server Components, TypeScript, dan praktik DevOps terkini. Implementasi yang tepat akan menghasilkan aplikasi web yang cepat, aman, dan mudah dipelihara—semua hal yang sangat dibutuhkan dalam dunia Programming, Software Engineering, dan Web Development tahun 2026.
Panduan lengkap setup Next.js 14 dengan App Router, React Server Components, dan TypeScript. Langkah demi langkah, contoh kode, konfigurasi, dan best practice untuk produksi.
Programming,Software Engineering,Web Development
#Programming #SoftwareEngineering #WebDev #Tech #Coding
: '/$1',
},
};
# contoh test
// __tests__/ThemeToggle.test.tsx
import { render, screen, fireEvent } from '@testing-library/react';
import ThemeToggle from '@/app/components/ThemeToggle';
test('toggles theme', () => {
render( );
const btn = screen.getByRole('button');
expect(btn).toHaveTextContent('Dark Mode');
fireEvent.click(btn);
expect(btn).toHaveTextContent('Light Mode');
});
10. Kesimpulan Langkah Selanjutnya
Setelah Anda menyelesaikan semua langkah di atas, proyek Next.js 14 Anda sudah siap untuk skala produksi, memanfaatkan keunggulan App Router, Server Components, dan TypeScript. Selanjutnya, eksplorasi fitur incremental static regeneration (ISR), middleware edge, serta integrasi AI dengan OpenAI API untuk menambah nilai bisnis.
{{ $json.conclusion }}
{{ $json.seo.meta_description }}
{{ $json.seo.keywords }}
{{ $json.hashtags }}
0 Komentar