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.
| Dimensi | Auth.js (NextAuth) | Clerk |
|---|---|---|
| Model hosting | Self-hosted, Anda yang memiliki database dan session | Full hosted, Clerk yang mengelola user dan session |
| Harga | Gratis, open source | Tier gratis lalu harga per monthly active user |
| Passkeys & MFA | Butuh setup provider manual | Sudah built-in dari awal |
| Status pemeliharaan | Dalam mode security-patch sejak tim Better Auth mengambil alih pada September 2025 | Aktif merilis fitur baru |
| B2B / organisasi | Butuh implementasi custom | Dukungan organisasi dan multi-tenant native |
| Paling cocok untuk | Tim yang ingin kontrol penuh atas data user mereka sendiri | Tim 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 everythingDari 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
- Wappalyzer — Clerk vs NextAuth.js Feature and Pricing Comparison — https://www.wappalyzer.com/compare/clerk-vs-nextauth-js/
- StarterPick Blog — Better Auth vs Clerk vs NextAuth: 2026 SaaS Showdown — https://starterpick.com/blog/better-auth-clerk-nextauth-saas-showdown-2026
- Clerk — User Authentication for Next.js: Top Tools 2025 — https://clerk.com/articles/user-authentication-for-nextjs-top-tools-and-recommendations-for-2025
