1. Pengenalan Vercel
Vercel adalah cloud platform yang dirancang khusus untuk frontend developer. Didirikan oleh Guillermo Rauch (pembuat Socket.io dan Mongoose), Vercel adalah perusahaan di balik Next.js — framework React paling populer saat ini. Platform ini menyediakan infrastruktur yang dioptimalkan untuk frontend, memungkinkan developer untuk deploy dengan mudah dan cepat.
Vercel menawarkan pendekatan Git-centric deployment — setiap push ke repository secara otomatis menghasilkan deployment baru. Tidak perlu mengkonfigurasi CI/CD pipeline, Docker, atau server. Cukup hubungkan repository, dan Vercel menangani sisanya.
Mengapa Vercel Populer?
| Keunggulan | Penjelasan |
|---|---|
| Zero-Config Deploy | Auto-detect framework, build, dan deploy tanpa konfigurasi |
| Preview Deployments | Setiap PR mendapatkan URL preview untuk review |
| Edge Network | Global CDN — konten disajikan dari edge terdekat ke user |
| Serverless Functions | Backend API tanpa mengelola server |
| Edge Functions | Code yang berjalan di edge — latency sangat rendah |
| Next.js Optimal | First-class support untuk Next.js — ISR, SSR, SSG, App Router |
| Free Tier | Hobby plan gratis untuk personal project — cukup generous |
| DX Terbaik | Developer experience yang sangat baik — logs, analytics, speed insights |
Vercel bukan hanya untuk Next.js — mendukung React, Vue, Svelte, Astro, Nuxt, Remix, Gatsby, dan banyak lagi. Namun integrasi terbaik memang dengan Next.js karena Vercel adalah pengembangnya.
2. Memulai dengan Vercel
Instalasi Vercel CLI
Branch Alias
# Preview deployments mendapatkan URL random
# Contoh: my-app-git-feature-login-username.vercel.app
# Set branch alias untuk URL yang lebih mudah diingat
# Di Vercel Dashboard > Project > Settings > Domains
# atau dengan CLI:
vercel alias set my-app-git-feature-login-username.vercel.app staging.myapp.com
# Set branch-level alias otomatis di vercel.json
{
"git": {
"deploymentEnabled": {
"main": true,
"develop": true,
"feature/*": true
}
}
}
Aktifkan "Protect Preview Deployments" di settings untuk membatasi akses preview hanya ke tim Anda. Ini penting jika preview mengandung data sensitif atau belum siap untuk publik.
7. Environment Variables
Environment variables di Vercel digunakan untuk menyimpan konfigurasi yang berbeda per environment (development, preview, production). Vercel mendukung beberapa jenis variable yang bisa diakses di build time atau runtime.
Jenis Environment Variables
| Jenis | Penggunaan |
|---|---|
| NEXT_PUBLIC_* | Exposed ke client browser (build-time) |
| Server-only | Hanya tersedia di server/API routes (runtime) |
| Encrypted | Ter-enkripsi di Vercel, tidak bisa dilihat lagi |
# Set environment variable via CLI
vercel env add DATABASE_URL
# Pilih environment: Production, Preview, Development
# Set untuk semua environment sekaligus
vercel env add API_SECRET production preview development
# List semua environment variables
vercel env ls
# Pull environment variables ke .env.local
vercel env pull .env.local
# Hapus environment variable
vercel env rm DATABASE_URL
Jangan pernah commit .env.local ke Git! Pastikan .env.local ada di .gitignore. Gunakan Vercel Dashboard atau CLI untuk mengelola environment variables di production.
8. Custom Domains
Vercel mendukung custom domains dengan SSL otomatis. Setiap project mendapatkan .vercel.app subdomain gratis, tetapi untuk production sebaiknya gunakan domain sendiri.
Menambah Custom Domain
# Tambah domain via CLI
vercel domains add myapp.com
# Tambah subdomain
vercel domains add blog.myapp.com
# List semua domains
vercel domains ls
# Konfigurasi DNS:
# Type: A Record, Name: @, Value: 76.76.21.21
# Type: CNAME, Name: www, Value: cname.vercel-dns.com
# Wildcard domain (Pro/Enterprise plan)
vercel domains add "*.myapp.com"
# Redirect www ke apex domain
# Di vercel.json:
{
"redirects": [
{ "source": "https://www.myapp.com/:path*", "destination": "https://myapp.com/:path*", "permanent": true }
]
}
9. Caching & ISR
Vercel memiliki caching layer yang sangat canggih yang terintegrasi langsung dengan Next.js. Incremental Static Regeneration (ISR) adalah fitur unggulan yang memungkinkan Anda meng-update konten statis tanpa rebuild seluruh site.
ISR di Next.js
// app/products/[id]/page.tsx — ISR dengan revalidation
export const revalidate = 60; // Revalidate setiap 60 detik
export default async function ProductPage({ params }) {
const { id } = await params;
const product = await fetch(
`https://api.store.com/products/${id}`,
{ next: { revalidate: 60, tags: ['products'] } }
);
return (
<div>
<h1>{product.name}</h1>
<p>Harga: Rp {product.price}</p>
</div>
);
}
// On-demand revalidation via API route
// app/api/revalidate/route.ts
import { revalidateTag } from 'next/cache';
import { NextRequest, NextResponse } from 'next/server';
export async function POST(request: NextRequest) {
const { tag, secret } = await request.json();
if (secret !== process.env.REVALIDATION_SECRET) {
return NextResponse.json({ error: 'Invalid secret' }, { status: 401 });
}
revalidateTag(tag); // 'products'
return NextResponse.json({ revalidated: true, tag });
}
10. Best Practices
Performance
- Gunakan ISR sebisa mungkin — lebih cepat dari SSR, lebih fleksibel dari SSG
- Optimize images — Gunakan
next/imageuntuk auto-optimasi gambar (WebP, resize, lazy load) - Font optimization — Gunakan
next/fontuntuk auto-optimize Google Fonts - Code splitting — Next.js otomatis split code per route, tapi hindari barrel files yang besar
- Edge Functions — Gunakan untuk logic ringan yang butuh latency rendah (auth, redirect, A/B test)
Deployment
- Protect production — Set branch protection di GitHub, deploy ke preview dulu
- Use preview deployments — Review setiap PR secara visual sebelum merge
- Environment variables — Pisahkan config per environment, jangan hardcode secrets
- Monitoring — Aktifkan Vercel Analytics dan Speed Insights untuk production
- Error tracking — Integrasi dengan Sentry atau LogRocket untuk error monitoring
Pricing Tips
| Plan | Harga | Cocok Untuk |
|---|---|---|
| Hobby (Free) | $0/bulan | Personal project, portfolio, belajar |
| Pro | $20/user/bulan | Tim kecil, startup, production apps |
| Enterprise | Custom | Perusahaan besar, SLA, SSO, advanced security |