Skip to main content
BlogWeb Dev

NextAuth vs Clerk: Autentikasi di Aplikasi Next.js 2025

Perbandingan nyata NextAuth.js dan Clerk untuk autentikasi Next.js — harga, DX, fitur, dan kapan masing-masing masuk akal untuk proyek Anda.

Matthews Wong

Software Engineer

Juni 20259 menit baca
Web Dev

Auth.js v5 (NextAuth baru) mencapai stable di akhir 2024 sebagai penulisan ulang yang hampir lengkap. Pada September 2025, tim Better Auth mengambil alih pemeliharaan Auth.js, dan library memasuki mode patch keamanan. Sementara itu, Clerk terus merilis fitur dengan cepat dan kini menangani segalanya dari MFA hingga passkey hingga manajemen organisasi B2B dari kotak. Lanskap autentikasi bergeser signifikan di 2025.

DimensiAuth.js (NextAuth)Clerk
Model hostingSelf-hosted, Anda yang memiliki database dan sessionFull hosted, Clerk yang mengelola user dan session
HargaGratis, open sourceTier gratis lalu harga per monthly active user
Passkeys & MFAButuh setup provider manualSudah built-in dari awal
Status pemeliharaanDalam mode security-patch sejak tim Better Auth mengambil alih pada September 2025Aktif merilis fitur baru
B2B / organisasiButuh implementasi customDukungan organisasi dan multi-tenant native
Paling cocok untukTim yang ingin kontrol penuh atas data user mereka sendiriTim yang ingin ship auth dengan cepat tanpa mengelola infrastruktur

Arsitektur: Pendekatan yang Sangat Berbeda

Clerk adalah platform identitas yang di-host, bukan library sesi. Database pengguna, penyimpanan sesi, dan kunci signing JWT Anda berada di infrastruktur Clerk. Aplikasi Anda adalah klien dari API Clerk. NextAuth (Auth.js) adalah kebalikannya: middleware sesi yang Anda deploy bersama database Anda sendiri. Anda memiliki segalanya — tabel pengguna, token sesi, handler callback OAuth.

Kecepatan Setup dan Pengalaman Pengembang

Clerk menang dalam kecepatan setup, secara tegas. Dengan Clerk, Anda menginstal SDK, menambahkan middleware, membungkus aplikasi Anda dalam ClerkProvider, dan menambahkan komponen siap pakai seperti <SignIn /> dan <UserButton />. Alur auth yang berfungsi membutuhkan kurang dari satu jam. NextAuth memerlukan konfigurasi adapter, skema database, memilih dan menyiapkan penyedia OAuth, dan menangani session callback.

Clerk (Hosted Platform)            NextAuth / Auth.js (Self-hosted)
───────────────────────            ────────────────────────────────
Your App                           Your App
    │                                  │
    ▼                                  ▼
ClerkProvider (SDK)               auth.ts config (adapters, providers)
    │                                  │
    ▼                                  ▼
Clerk API (hosted)                Your Database (users/sessions tables)
    │                                  │
    ├── User store                 ├── NextAuth JWT / database sessions
    ├── Session management         ├── OAuth callbacks (you handle)
    ├── MFA / passkeys (included)  ├── MFA (build it yourself)
    └── Org management             └── Token rotation (build it yourself)

Setup time: ~1 hour               Setup time: ~4-8 hours
Cost at 50k MAU: $25/month        Cost: database + email only
Data location: Clerk's servers    Data location: your infrastructure
Compliance: check their ToS       Compliance: you control everything

Dari membangun prototipe SaaS dengan Clerk: gunakan Webhook Sync Clerk untuk menjaga sinkronisasi database Anda sendiri dengan catatan pengguna Clerk. Saat pengguna dibuat atau diperbarui di Clerk, webhook ditembakkan dan handler API NestJS atau Next.js Anda melakukan upsert catatan di database PostgreSQL Anda. Dengan cara ini Anda masih bisa melakukan query relasional terhadap data pengguna Anda sendiri tanpa query ke API Clerk di setiap request.

Harga: Di Mana Clerk Menjadi Mahal

NextAuth gratis — Anda hanya membayar untuk database dan penyedia email Anda. Harga Clerk dimulai gratis (hingga 10.000 MAU) kemudian naik ke $25/bulan (Pro, ditagih bulanan) untuk 50.000 Monthly Retained Users. Melampaui itu, Anda membayar per MRU tambahan. Fitur B2B — manajemen organisasi, SSO — $100/bulan tambahan.

// Clerk setup (minimal)
// middleware.ts
import { clerkMiddleware } from '@clerk/nextjs/server'
export default clerkMiddleware()
export const config = { matcher: ['/((?!_next|.*\..*).*)'] }

// app/layout.tsx
import { ClerkProvider } from '@clerk/nextjs'
export default function Layout({ children }) {
  return <ClerkProvider>{children}</ClerkProvider>
}

// Protected page — done
import { auth } from '@clerk/nextjs/server'
export default async function Dashboard() {
  const { userId } = await auth()
  if (!userId) redirect('/sign-in')
  return <div>Dashboard for {userId}</div>
}

// ─────────────────────────────────────────

// Auth.js v5 (NextAuth) setup
// auth.ts
import NextAuth from "next-auth"
import { PrismaAdapter } from "@auth/prisma-adapter"
import GitHub from "next-auth/providers/github"
import { prisma } from "@/lib/db"

export const { handlers, auth, signIn, signOut } = NextAuth({
  adapter: PrismaAdapter(prisma),
  providers: [GitHub],
  // also need: DATABASE_URL, GITHUB_ID, GITHUB_SECRET, AUTH_SECRET env vars
  // also need: prisma schema with User, Account, Session, VerificationToken tables
})

Fitur: Yang Clerk Sertakan Out-of-Box

Paket Pro Clerk mencakup MFA (TOTP, SMS), passkey, 1 koneksi SSO enterprise, dan manajemen organisasi. NextAuth tidak memiliki MFA bawaan — Anda mengimplementasikannya sendiri dengan library TOTP dan kolom database. Rotasi token akses, penanganan refresh token, dan perlindungan bot semuanya memerlukan implementasi manual di NextAuth.

Clerk menyimpan data pengguna di AS secara default (wilayah EU tersedia dalam paket Enterprise). Untuk bisnis Indonesia atau Asia Tenggara dengan persyaratan residensi data, atau untuk aplikasi apa pun yang menangani PII sensitif yang harus tetap di wilayah, Clerk mungkin tidak patuh secara default. NextAuth dengan database Anda sendiri memberi Anda kontrol penuh atas lokalitas data. Periksa persyaratan regulasi Anda sebelum memilih penyedia auth yang di-host.

NextAuth Auth.js v5: Apa yang Berubah

Auth.js v5 adalah penulisan ulang besar — dukungan runtime universal (Edge, Node, Deno), konfigurasi terpadu baru di auth.ts, dan API TypeScript yang lebih bersih. Pola adapter meningkat secara signifikan. Namun, dengan tim Better Auth mengambil alih pemeliharaan di akhir 2025, proyek Auth.js baru harus mengevaluasi Better Auth, yang menawarkan lebih banyak fitur dengan pengembangan aktif.

Yang Saya Gunakan dan Mengapa

Untuk proyek klien di mana saya mengontrol anggaran dan jumlah pengguna tetap di bawah 50k, saya menggunakan Clerk. Keuntungan produktivitas selama pengembangan tahap awal nyata — saya tidak men-debug callback OAuth ketika seharusnya membangun fitur produk. Untuk proyek open-source, alat internal, atau proyek apa pun di mana saya ingin nol ketergantungan vendor pada auth, saya menggunakan NextAuth/Auth.js dengan adapter PostgreSQL.

Kerangka Keputusan

Pilih Clerk jika: Anda membangun SaaS konsumen atau B2C dengan kebutuhan auth yang mudah, Anda menghargai kecepatan pengembang, Anda butuh MFA dan passkey tanpa implementasi kustom, dan jumlah pengguna Anda membenarkan biaya. Pilih NextAuth/Auth.js jika: Anda membutuhkan kepemilikan data penuh, Anda memiliki persyaratan residensi data yang ketat, Anda membangun perangkat lunak open-source, atau Anda mengerjakan proyek dengan anggaran nol.

Sumber & Bacaan Lanjut

Artikel Terkait

FAQ

Pertanyaan Umum

Jawaban singkat untuk pertanyaan yang paling sering diajukan pembaca tentang topik ini.

Apa perbedaan arsitektur mendasar antara Clerk dan NextAuth?

Clerk adalah platform identitas yang di-host, di mana database pengguna, penyimpanan sesi, dan kunci signing JWT berada di infrastruktur Clerk — aplikasi Anda adalah klien dari API Clerk. NextAuth (Auth.js) adalah middleware sesi yang Anda deploy bersama database Anda sendiri, sehingga Anda memiliki segalanya: tabel pengguna, token sesi, dan handler callback OAuth.

Seberapa cepat proses setup Clerk dibandingkan NextAuth untuk proyek Next.js baru?

Clerk menang secara tegas dalam kecepatan setup: instal SDK, tambahkan middleware, bungkus aplikasi dalam ClerkProvider, dan tambahkan komponen siap pakai seperti <SignIn /> dan <UserButton /> — alur auth yang berfungsi membutuhkan kurang dari satu jam. NextAuth memerlukan konfigurasi adapter, skema database untuk tabel pengguna, sesi, dan akun, memilih penyedia OAuth, serta menangani session callback, yang membutuhkan waktu jauh lebih lama.

Berapa biaya paket Pro Clerk, dan kapan biayanya mulai memberatkan untuk SaaS?

Clerk gratis hingga 10.000 MAU, lalu $25/bulan untuk hingga 50.000 Monthly Retained Users, dengan biaya tambahan per MRU di atasnya. Fitur B2B seperti manajemen organisasi dan SSO dikenakan biaya tambahan $100/bulan, artinya SaaS B2B yang membutuhkan SSO untuk beberapa organisasi bisa menghadapi tagihan yang signifikan sebelum mencapai product-market fit.

Fitur MFA dan keamanan apa yang disertakan Clerk tetapi tidak ada di NextAuth?

Paket Pro Clerk mencakup MFA (TOTP dan SMS), passkey, satu koneksi SSO enterprise, manajemen organisasi, deteksi bot, pemeriksaan password yang bocor, dan penanganan reputasi IP secara otomatis. NextAuth tidak memiliki MFA bawaan — Anda harus mengimplementasikannya sendiri menggunakan library TOTP dan kolom database tambahan, dan rotasi token akses, penanganan refresh token, serta perlindungan bot semuanya memerlukan implementasi manual.

Mengapa Clerk bisa menjadi masalah kepatuhan bagi bisnis di Indonesia atau Asia Tenggara?

Clerk menyimpan data pengguna di AS secara default, dengan wilayah EU hanya tersedia di paket Enterprise — tidak ada opsi wilayah untuk Asia Tenggara. Untuk bisnis Indonesia atau aplikasi apa pun yang menangani PII sensitif dengan persyaratan residensi data lokal, Clerk mungkin tidak patuh secara default, sementara NextAuth dengan database sendiri memberi Anda kendali penuh atas lokasi penyimpanan data.