TanStack DB ile Frontend Veri Yönetimi Nasıl Değişiyor

TanStack DB ile Frontend Veri Yönetimi Nasıl Değişiyor

Modern frontend uygulamaları büyüdükçe veri yönetimi de karmaşıklaşıyor. API'den gelen verileri cache'lemek, UI'ı güncel tutmak, kullanıcı aksiyonlarını anında yansıtmak ve tüm bunları performanslı yapmak... Geliştiricilerin çoğu bu döngüde useState, useEffect ve bir sürü boilerplate kodla boğuşuyor.

TanStack DB, bu problemi kökünden çözmek için tasarlanmış bir client-side reaktif veritabanı. Differential dataflow motoru sayesinde 100.000 satırlık veri setlerinde bile milisaniye altı sorgular sunuyor ve frontend'de veri yönetimini tamamen yeniden tanımlıyor.

TanStack DB Nedir

TanStack DB, TanStack Query'nin üzerine inşa edilmiş gömülü bir client-side veritabanı. Tanner Linsley ve ekibi tarafından geliştirilen bu kütüphane, frontend uygulamalarda reaktif sorgular, transactional mutation'lar ve gerçek zamanlı senkronizasyon sunuyor.

Kütüphanenin temel vaadi basit: verilerinizi bir koleksiyona koyun, sorguları tanımlayın, gerisini TanStack DB halletsin. Veri değiştiğinde sadece değişen kısımlar yeniden hesaplanır — tüm liste yeniden render edilmez.

React, Vue, Solid, Svelte ve vanilla JavaScript adaptörleriyle framework-agnostik bir yapıda çalışıyor. TanStack ekosisteminin (Query, Router, Form, Start) en yeni ve belki de en iddialı parçası.

Differential Dataflow Neden Önemli

Geleneksel yaklaşımda bir todo listesinde tek bir öğeyi tamamladığınızda, çoğu state management çözümü tüm listeyi yeniden filtreler ve render eder. 10 öğede fark etmezsiniz, 10.000 öğede performans çöker.

TanStack DB'nin differential dataflow motoru farklı çalışır. Sadece değişen veriyi takip eder ve sorgu sonuçlarını incrementally günceller.

Differential dataflow ile sadece değişen satır yeniden hesaplanır, geri kalan veriye dokunulmaz
Differential dataflow ile sadece değişen satır yeniden hesaplanır, geri kalan veriye dokunulmaz

Pratik sonuçlar:

  • 100.000+ satırlık koleksiyonlarda 1 milisaniyenin altında güncelleme
  • Tek bir satır değiştiğinde sadece o satırın query üzerindeki etkisi hesaplanır
  • Filtreleme, sıralama ve aggregation işlemleri incremental olarak çalışır

Bu, akademik bir optimizasyon değil. Büyük veri tablolarında, gerçek zamanlı dashboard'larda veya karmaşık filtreleme UI'larında kullanıcı deneyimini doğrudan etkileyen bir performans farkı.

Koleksiyonlar, Live Query ve Mutation Üçlüsü

TanStack DB üç temel kavram üzerine kurulu:

Koleksiyonlar (Collections)

Koleksiyonlar, veritabanındaki tablolarınızın client-side karşılığı. API yanıtlarınızı, domain modellerinizi veya herhangi bir tipli veri setini bir koleksiyonda tutarsınız.

typescript
1import { createCollection } from '@tanstack/db'
2
3const todosCollection = createCollection<Todo>({
4  id: 'todos',
5  getId: (todo) => todo.id,
6})

Live Query'ler

Live query'ler koleksiyonlardan veri okur ve veri değiştiğinde otomatik olarak güncellenir. Differential dataflow burada devreye girer — sorgu sonuçları sadece değişen kısımlar üzerinden yeniden hesaplanır.

typescript
1import { useQuery } from '@tanstack/react-db'
2
3const activeTodos = useQuery({
4  collection: todosCollection,
5  where: { completed: false },
6  orderBy: { createdAt: 'desc' },
7})

Mutation'lar

Mutation'lar varsayılan olarak optimistiktir. Veriyi önce lokalde güncellersiniz, kullanıcı değişikliği anında görür, ardından backend'e senkronize edilir. Backend başarısız olursa otomatik rollback yapılır.

typescript
1const toggleTodo = createOptimisticAction({
2  collection: todosCollection,
3  mutationFn: async (todo) => {
4    return api.updateTodo(todo.id, { completed: !todo.completed })
5  },
6})

Bu üçlü birlikte çalıştığında ortaya güçlü bir döngü çıkıyor: koleksiyona veri yaz → live query otomatik güncellenir → UI anında yansır → backend'e senkronize et → onay gelirse optimistic state atılır, hata gelirse rollback.

Query-Driven Sync ile Backend Entegrasyonu

TanStack DB 0.5 ile gelen Query-Driven Sync özelliği, kütüphanenin belki de en pratik yeniliği. Component'inizdeki query doğrudan API çağrısına dönüşüyor. REST, GraphQL veya tRPC — mevcut backend API'niz ne olursa olsun çalışıyor.

Geleneksel yaklaşımda iki zor tercih vardı:

  • Çok sayıda küçük API çağrısı → network waterfall'lar
  • Az sayıda büyük API çağrısı → client-side işleme yavaşlığı

Query-Driven Sync ikisinin de avantajını sunuyor: daha az network round-trip ve milisaniye altı client-side sorgular.

ElectricSQL gibi sync engine'lerle entegre edildiğinde ise gerçek zamanlı streaming, otomatik delta senkronizasyonu ve predicate translation gibi ek özellikler devreye giriyor. Bu sayede Postgres veritabanınızdaki değişiklikler otomatik olarak client'a akıyor.

TanStack DB Ne Zaman Tercih Edilmeli

Her proje TanStack DB gerektirmez. İşte doğru tercih yapmanız için bir karşılaştırma:

TanStack DB'yi düşünün eğer:

  • Büyük veri setleriyle çalışan tablolar, listeler veya dashboard'lar yapıyorsanız
  • Optimistic UI ve anında kullanıcı geri bildirimi kritikse
  • Karmaşık filtreleme, sıralama ve aggregation ihtiyacınız varsa
  • Local-first veya offline-ready uygulama geliştiriyorsanız

TanStack Query yeterli olabilir eğer:

  • Basit CRUD işlemleri ve standart API cache'lemesi yeterliyse
  • Veri setleriniz küçük ve filtreleme ihtiyacı minimumse
  • Ekibiniz zaten TanStack Query'yi verimli kullanıyorsa

Redux ile birlikte kullanın:

  • Redux'ı UI state (tema, modal, navigation) için tutun
  • Server state'i TanStack DB veya Query'ye taşıyın

TanStack DB henüz stabil 1.0'a ulaşmadı (şu an 0.5.x), bu yüzden production'da dikkatli değerlendirin. Ancak API tasarımı olgunlaşmış durumda ve breaking change riski giderek azalıyor.

TanStack Ekosisteminin Büyük Resmi

TanStack DB tek başına güçlü, ama asıl potansiyeli ekosistemin parçası olarak ortaya çıkıyor. TanStack Query ile veri fetching, Router ile type-safe routing, Form ile form yönetimi ve Start ile full-stack SSR — hepsi aynı felsefe üzerine kurulu: headless, framework-agnostik ve end-to-end type-safe.

2026'da TypeScript'in standart haline gelmesiyle birlikte, TanStack'in tip güvenliğine dayanan yaklaşımı daha da değerli hale geliyor. Eğer frontend stack'inizi modernize etmeyi düşünüyorsanız, TanStack ekosistemi bütünsel bir çözüm sunuyor.

Sonuç

  • TanStack DB, frontend'de client-side reaktif veritabanı konseptini mainstream'e taşıyor
  • Differential dataflow motoru sayesinde 100K+ satırda bile milisaniye altı performans sunuyor
  • Koleksiyonlar, live query'ler ve optimistic mutation'lar ile veri akışını basitleştiriyor
  • Query-Driven Sync, mevcut REST/GraphQL API'lerinizle sıfır migration ile çalışıyor
  • ElectricSQL gibi sync engine'lerle gerçek zamanlı Postgres senkronizasyonu mümkün
  • Henüz 0.5.x versiyonunda — production'da dikkatli değerlendirmek gerekiyor ama hızla olgunlaşıyor

Frontend veri yönetiminde daha performanslı ve sürdürülebilir çözümler arıyorsanız, TanStack DB'yi bir side project'te deneyerek başlayabilirsiniz. Daha büyük ölçekli projelerde profesyonel yazılım danışmanlığı almak doğru mimari kararları vermenize yardımcı olabilir.