TypeScript Dünyasının Yeni Kimlik Doğrulama Standardı: Better Auth

TypeScript Dünyasının Yeni Kimlik Doğrulama Standardı: Better Auth
audio-thumbnail
TypeScript Dünyasının Yeni Kimlik Doğrulama Standardı: Better Auth
0:00
/0

TypeScript Dünyasının Yeni Kimlik Doğrulama Standardı: Better Auth

Modern web geliştirme dünyasında, kimlik doğrulama (authentication) her zaman geliştiricilerin en çok başını ağrıtan konulardan biri olmuştur. Yakın geçmişe kadar TypeScript ekosisteminde iki büyük oyuncu öne çıkıyordu: Next.js ekosisteminin gözbebeği Auth.js (NextAuth) ve geliştiricilere daha fazla esneklik sunan, veri tabanı odaklı Lucia Auth.

Ancak Lucia'nın yaratıcısının projeyi aktif olarak geliştirmeyi bırakacağını ve farklı bir yöne evrileceğini açıklaması, Auth.js'in ise karmaşık konfigürasyonları ve Next.js dışındaki framework'lerde yaşattığı entegrasyon zorlukları, ekosistemde büyük bir boşluk yarattı.

İşte tam bu kaosun ortasında, TypeScript dünyasının yeni süper kahramanı sahneye çıktı: Better Auth.

Bu yazıda, Better Auth’un neden kısa sürede bu kadar popülerleştiğini, Auth.js ve Lucia'nın tahtını nasıl salladığını ve bir sonraki projenizde neden onu tercih etmeniz gerektiğini detaylıca inceleyeceğiz.


Better Auth Nedir?

Better Auth, TypeScript ekosistemi için geliştirilmiş, framework-bağımsız (framework-agnostic), veri tabanı dostu ve tamamen tip güvenli (type-safe) bir kimlik doğrulama kütüphanesidir.

Sadece bir kimlik doğrulama sağlayıcısı olmanın ötesinde Better Auth; modern web uygulamalarının ihtiyaç duyduğu iki faktörlü doğrulama (2FA), organizasyon yönetimi (multi-tenancy), passkey desteği ve oturum yönetimi gibi gelişmiş özellikleri kutudan çıktığı gibi (out-of-the-box) sunar.


Neden Better Auth? Onu Benzersiz Kılan Özellikler

Better Auth'u rakiplerinden ayıran ve onu "yeni standart" yapan temel özellikleri şu şekilde sıralayabiliriz:

1. Gerçek Anlamda Framework-Bağımsız (Framework-Agnostic)

Auth.js her ne kadar "framework-agnostic" olduğunu iddia etse de, genetik kodlarında Next.js ağırlığı her zaman hissedilir. Better Auth ise en başından beri tüm modern framework'ler için eşit mesafede tasarlanmıştır.

  • Next.js
  • Nuxt (Vue)
  • SvelteKit
  • Astro
  • SolidStart
  • Remix

Hangi framework'ü seçerseniz seçin, Better Auth aynı tutarlılık ve kolaylıkla çalışır.

2. Veri Tabanı Dostu ve Şema Odaklı

Lucia Auth’un en sevilen yanı, veri tabanı şemalarınız üzerinde tam kontrol sunmasıydı. Better Auth bu felsefeyi devraldı ve bir adım ileriye taşıdı.

Prisma, Drizzle, Kysely veya doğrudan SQL kullanıyor olun; Better Auth sizin için gerekli olan kullanıcı, oturum ve hesap tablolarını otomatik olarak algılar veya oluşturur. Veri tabanı şemanızı bozmadan, mevcut yapınıza tereyağından kıl çeker gibi entegre olur.

3. Sıfır Konfigürasyonla Gelen Gelişmiş Özellikler (Plugins)

Geleneksel kütüphanelerde iki faktörlü doğrulama (2FA) veya Passkey eklemek günler süren bir çalışma gerektirirken, Better Auth ile bu özellikler sadece birkaç satır kodla aktif hale getirilebilir.

  • Passkeys (WebAuthn): Şifresiz giriş geleceğine tek satırla geçiş yapın.
  • Multi-Tenancy (Organizasyonlar): B2B uygulamalar için alt organizasyonlar, roller ve izinler (RBAC) hazır olarak gelir.
  • Oturum Yönetimi: Kullanıcının aktif cihazlarını listeleme ve uzaktan oturum kapatma (revoke) özellikleri yerleşiktir.

4. Kusursuz TypeScript ve Tip Güvenliği

Better Auth, TypeScript ile yazılmıştır. İstemci (client) ve sunucu (server) tarafındaki tüm API'ler, veri tabanı şemalarınızla dinamik olarak senkronize olur. Bu sayede, "user.id"nin var olup olmadığını kontrol etmekle uğraşmazsınız; TypeScript bunu sizin için zaten bilir.


Better Auth vs. Auth.js vs. Lucia

Geliştiricilerin zihnindeki resmi netleştirmek için bu üç popüler çözümü karşılaştıralım:

Özellik Better Auth Auth.js (NextAuth) Lucia Auth
Öğrenme Eğrisi Çok Kolay Orta / Zor Orta
Framework Desteği Tam (Next, Nuxt, Astro, Svelte...) Next.js ağırlıklı Tam
Tip Güvenliği Mükemmel (Dinamik) İyi (Manuel tanımlama gerekir) Mükemmel
Eklenti Ekosistemi Çok Zengin (2FA, Passkey, Org...) Sınırlı Yok (Kendiniz yazmalısınız)
Geliştirme Durumu Aktif ve Hızlı Büyüyor Yavaş güncelleniyor Bakım modunda / Değişiyor

Hızlı Bir Başlangıç: Better Auth Nasıl Kurulur?

Better Auth’un ne kadar temiz bir geliştirici deneyimi (DX) sunduğunu görmek için basit bir kurulum örneğine göz atalım.

1. Kurulum ve Başlatma

Öncelikle gerekli paketleri projemize dahil ediyoruz:

npm install better-auth

2. Sunucu Yapılandırması (auth.ts)

Better Auth istemcisini ve veri tabanı adaptörünü (örneğin Drizzle ORM ile) tanımlıyoruz:

import { betterAuth } from "better-auth";
import { drizzleAdapter } from "better-auth/adapters/drizzle";
import { db } from "./db"; // Sizin Drizzle DB bağlantınız

export const auth = betterAuth({
    database: drizzleAdapter(db, {
        provider: "pg", // Postgres, MySQL, SQLite vb.
    }),
    emailAndPassword: {  
        enabled: true // E-posta/Şifre ile giriş aktif
    },
    socialProviders: {
        github: {
            clientId: process.env.GITHUB_CLIENT_ID!,
            clientSecret: process.env.GITHUB_CLIENT_SECRET!,
        }
    }
});

3. İstemci Kullanımı (React/Next.js Örneği)

İstemci tarafında oturum durumunu kontrol etmek ve giriş/çıkış işlemlerini yönetmek işte bu kadar kolay:

import { createAuthClient } from "better-auth/react";

const authClient = createAuthClient();

export function LoginButton() {
    const handleLogin = async () => {
        await authClient.signIn.social({
            provider: "github"
        });
    };

    return <button onClick={handleLogin}>GitHub ile Giriş Yap</button>;
}

Sonuç: Tahtın Yeni Sahibi

TypeScript ekosistemi her zaman daha hızlı, daha güvenli ve geliştirici dostu çözümlere yönelir. Better Auth, Lucia’nın sunduğu o özgürlükçü ve veri tabanı dostu yapıyı, Auth.js’in hazır özellikleriyle birleştirerek mükemmel bir denge kurmayı başardı.

Eğer yeni bir projeye başlıyorsanız veya mevcut projenizdeki Auth.js karmaşasından sıkıldıysanız, Better Auth’a şans vermenin tam zamanı. TypeScript dünyasının yeni kimlik doğrulama standardı artık resmen burada!

Siz Better Auth hakkında ne düşünüyorsunuz? Projelerinizde hangi auth çözümünü tercih ediyorsunuz? Yorumlarda bizimle paylaşın!