Sitemap
Aleyna Nur Büyükcafer

Aleyna Nur Büyükcafer

React Native’in Firebase Veritabanına Bağlanması: Uçtan Uca Bir Mimari Rehberi

5 min readAug 31, 2026

--

Mobil uygulama geliştirirken en çok talimat sorularından biri şu: “Backend’i Nereden yöneteceğim?” Bu yazıda, bir React Native projesini Firebase Firestore veri tabanına nasıl bağlayacağımızı, config eklentisinden güvenlik kuralları kadar adım adım ele alıyorum.

Press enter or click to view image in full size

Neden Firebase’i Tercih Etmeliyiz?

Press enter or click to view image in full size

Bir mobil uygulama geliştirmesi sırasında en çok zaman gösterilen noktalardan biri arka uçta sunulmaktadır. Veri sunucuları, veri tabanı depolama, kimlik doğrulama sistemi yazmak — bunların hepsi MVP aşamasında geliştiriciyi asıl işten çıkarmak (ürünü inşa etmekten alıkoymak).

Firebase, Google’ın sunduğu bir Hizmet Olarak Arka Uç (BaaS) platformu olarak tam da bu konumda devreye giriyor. Firestore (NoSQL standart veri tabanı), gerçek zamanlı gösterim, çevrimdışı destek ve otomatik ölçeklenme gibi özelliklerle özellikle React Native projelerinde hızlı ve güvenilir bir tercih haline geldi.

Bu yazıda, sıfırdan bir React Native (Expo) projesini Firestore’a bağlayacak, veri okuma/yazma işlemlerini gerçek zamanlı olarak dinleyecek ve üretime uygun güvenlik kuralları yazacağız.

Press enter or click to view image in full size

1. Firebase Projesini Oluşturmak

  1. Firebase Console üzerinden yeni bir proje oluşturun.
  2. Proje oluşturulduktan sonra Firestore Database sekmesine girip veritabanınızı başlatın (üretim modu veya test modu — geliştirme aşamasında test modu, ama yazının ilerleyen bölümünde güvenlik izolasyonu mutlaka sıkılaştıracağız).
  3. Uygulamanızı Firebase’e kaydetme: iOS için Bundle Identifier’ı, Android için Paket Adı’i Firebase Console’a girip GoogleService-Info.plistve google-services.jsonsilindirleri indirin.

Bu dosyaların projenizdeki üç yerinde olması kritik önem taşır: app.json/ app.config.js, yerel proje dosyaları ve Firebase Console'a kaydedilir.

2. Paketlerin Kurulumu

React Native ekosisteminde Firebase’e bağlanmanın iki yolu var: Firebase JS SDK ve React Native Firebase (native SDK sarmalayıcı) .Native performans, arka planda çalışan servisler ve offline yetenekler açısından React Native Firebase, production uygulamaları için önerilen yaklaşımdır.

Expo yönetilen (managed) workflow kullanıyorsanız, modülleri `app.json` içindeki `plugins` dizisine eklemeniz gerekiyor:

Press enter or click to view image in full size

Not: React Native 0.75 ve sonrasında iOS tarafında Firebase ilişkileri varsayılan olarak Swift Package Manager (SPM) üzerinden çözümlenir. CocoaPods kullanmaya devam etmek isterseniz, yapılandırma eklentisi ayarlarından disableSPMbayrakları aktif etmeniz gerekir.

Get Aleyna Nur Büyükcafer’s stories in your inbox

Join Medium for free to get updates from this writer.

Konfigürasyon kurallarını ekledikten sonra projeyi yeniden derlemeniz gerekiyor (yönetilen iş akışı’da expo prebuildile):

3. Firestore Bağlantısını Kurmak

Kurulum tamamlandıktan sonra Firestore’a bağlanmak son derece basit. Modüler API üzerinden:

Press enter or click to view image in full size
Bu kod parçaları, ilgili Firebase/Firestore yaklaşımını göstermek amacıyla basitleştirilmiş örneklerdir

Veri okurken tek seferlik sorgu yerine, Firestore’un en güçlü özelliklerinden biri olan gerçek zamanlı dinleyicileri (real-time listeners) kullanmak, uygulamanızı çok daha canlı hale getirir:

Press enter or click to view image in full size
Bu kod parçaları, ilgili Firebase/Firestore yaklaşımını göstermek amacıyla basitleştirilmiş örneklerdir
Press enter or click to view image in full size

Bu yaklaşımın en büyük avantajı: veritabanında bir değişiklik olduğunda, kullanıcı arayüzünüzün manuel bir “refresh” işlemine ihtiyaç duymadan otomatik olarak güncellenmesidir — özellikle sohbet uygulamaları, canlı bildirim akışları veya işbirlikçi (collaborative) uygulamalar için vazgeçilmez bir özellik.

4. Veri Modelleme: NoSQL Mantığıyla Düşünmek

Firestore ilişkisel bir veritabanı değildir. Bu yüzden veri modelinizi tasarlarken “normalize etme” refleksinden uzaklaşıp, sorgu ihtiyaçlarınıza göre veri yapısını şekillendirmeniz gerekir.

  • Koleksiyon / Doküman hiyerarşisi: İlişkili verileri iç içe alt koleksiyonlarla (subcollections) organize edebilirsiniz. Örneğin users/{userId}/notifications/{notificationId}.
  • Denormalizasyon: Sık erişilen verileri birden fazla dokümanda tekrar etmek, Firestore’da genellikle performans için doğru tercihtir — okuma maliyeti, yazma maliyetinden çok daha kritik önceliktir.
  • İndeksleme: Birden fazla alana göre filtreleme veya sıralama yapan sorgular için Firestore, otomatik olarak bileşik indeks (composite index) oluşturmanızı isteyecektir; bu uyarıları göz ardı etmeyin.
Press enter or click to view image in full size

görsellerdeki kodların mimari mantığının temsilidir.5. Güvenlik Kuralları: Production’a Geçmeden Önce

Geliştirme sürecinde “test modu” ile çalışmak pratik olsa da, bu mod veritabanınızı herkese açık hale getirir. Production’a geçmeden önce mutlaka Firestore Security Rules yazmanız gerekir:

Bu kod parçaları, ilgili Firebase/Firestore yaklaşımını göstermek amacıyla basitleştirilmiş örneklerdir

Bu kurallar, yalnızca kimliği doğrulanmış kullanıcıların veri okuyabilmesini, kendi verilerini ise yalnızca kendilerinin yazabilmesini sağlar. Firebase Authentication ile Firestore Security Rules’u birlikte kullanmak, backend kodu yazmadan güçlü bir yetkilendirme katmanı kurmanızı sağlar.

6. Performans ve Maliyet İçin Pratik Öneriler

  • Pagination kullanın: limit() ve startAfter() ile büyük koleksiyonları parça parça çekin; tüm koleksiyonu tek seferde çekmek hem maliyeti hem de yükleme süresini artırır.
  • Gereksiz dinleyicilerden kaçının: Her onSnapshot bir okuma maliyeti doğurur; component unmount olduğunda unsubscribe() çağırmayı unutmayın.
  • Offline cache’i değerlendirin: Firestore, varsayılan olarak veriyi cihazda önbelleğe alır; bu sayede kullanıcı internet bağlantısını kaybetse bile uygulama büyük ölçüde çalışmaya devam eder.

Sonuç

Firebase Firestore, React Native projelerinde backend karmaşıklığını büyük ölçüde ortadan kaldırırken, gerçek zamanlı senkronizasyon ve offline destek gibi production-ready özellikler sunuyor. Doğru veri modeli ve sıkı güvenlik kurallarıyla birleştirildiğinde, MVP’den ölçeklenebilir bir ürüne uzanan yolda güçlü bir temel oluşturuyor.

Bu mimariyi, daha önce ele aldığım push notification mimarisi ve Expo Go / Development Build / CLI farkları yazılarımla birlikte düşündüğümüzde, uçtan uca bir React Native production mimarisinin üç temel taşı ortaya çıkıyor: geliştirme ortamı, bildirim altyapısı ve veri katmanı.

Sorularınız veya farklı bir senaryonuz varsa yorumlarda tartışabiliriz. Bu yazıda mimarinin kodlarına ve diğer projelere GitHub üzerinden göz atabilir, benzer teknik bilgiler üzerine fikir alışverişi yapmak için bana LinkedIn’den ulaşabilirsiniz.

🔗GitHub : https://github.com/aleynabc

🔗 LinkedIn: https://www.linkedin.com/in/aleyna-nur-b-62b437297/

--

--