Firebase-Interviewfragen 2026: Flutter Auth, Firestore und Security Rules
Firebase-Interviewfragen für Flutter-Entwickler mit Dart-Antworten: Auth-State-Streams, Google Sign-In v7, Firestore CRUD und Datenmodellierung, Security Rules, Custom Claims, Transaktionen und die Änderungen in FlutterFire 5.

Firebase-Interviewfragen für Flutter-Stellen drehen sich um fünf Themen: die drei Auth-State-Streams, die Datenmodellierung in Firestore, Security Rules, Offline-Writes und das Kostenmodell hinter jedem Lesezugriff. Firebase bleibt 2026 das Standard-Backend für Flutter-Apps, und seit Oktober 2026 erscheinen die FlutterFire-Plugins als BoM 5.x (firebase_core 5.1.0, firebase_auth 7.0.1, cloud_firestore 7.1.0), mit einem auf 24 angehobenen Android-minSdk und dem Firebase Apple SDK 13 als Unterbau.
Das aktuelle FlutterFire-Release ist BoM 5.1.0: firebase_auth 7.0.1, cloud_firestore 7.1.0, firebase_core 5.1.0. Die Major-Version 5.0.0 verlangt Android-minSdk 24, baut auf dem Firebase Apple SDK 13.0.0 auf und benennt die activate-Parameter von App Check um. Firestore Pipelines, eingeführt in cloud_firestore 6.3.0, erhalten mit jedem Release weitere Ausdrücke.
Firebase-Interviewfragen: Was 2026 abgefragt wird
Interviewer fragen selten API-Details ab. Sie prüfen, ob ein Kandidat versteht, wo Firebase Regeln durchsetzt, was jede Operation kostet und was passiert, wenn das Netz wegbricht. Die Tabelle ordnet jedem wiederkehrenden Thema zu, was eine starke Antwort enthalten muss. Jedes Thema wird im Abschnitt Firebase-Interviewfragen für Flutter-Entwickler weiter unten ausführlich beantwortet.
| Thema | Typische Frage | Was eine starke Antwort enthält |
|---|---|---|
| Auth-Streams | authStateChanges() vs idTokenChanges() vs userChanges() | Welche Events jeder Stream liefert und welcher die Navigation absichert |
| Sicherheit | Wo wird die Zugriffskontrolle durchgesetzt? | Security Rules auf dem Server, nie Prüfungen im Client; App Check ist eine andere Schicht |
| Rollen | Wie wird eine Admin-Rolle umgesetzt? | Custom Claims, gesetzt über das Admin SDK, gelesen über request.auth.token |
| Datenmodellierung | Eine Chat-App modellieren | Subcollections, denormalisierte letzte Nachricht, ein Dokument pro Nachricht |
| Konsistenz | Transaktion oder Batched Write? | Transaktionen lesen, schreiben dann und werden wiederholt; Batches schreiben nur, dafür atomar |
| Offline | Was passiert mit einem Write ohne Netz? | Lokaler Cache, hasPendingWrites, Synchronisierung beim Reconnect |
| Kosten | Warum ist dieser Screen teuer? | Abrechnung pro gelesenem Dokument, Listener, Pagination mit Cursors |
| Vergleich | Firestore vs Realtime Database | Abfragemodell, Skalierung, Abrechnungseinheit |
Firebase-Projekt Setup und Initialisierung
Die Einrichtung von Firebase in einer Flutter-App beginnt mit der Installation des FlutterFire CLI. Dieses Tool generiert automatisch die plattformspezifischen Konfigurationsdateien (firebase_options.dart), die früher manuell erstellt werden mussten.
Nach der Installation der Pakete firebase_core, firebase_auth und cloud_firestore erfolgt die Initialisierung in der main.dart-Datei:
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'firebase_options.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// Initialize Firebase with platform-specific config
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
runApp(const MyApp());
}Die ensureInitialized()-Methode stellt sicher, dass das Flutter-Framework bereit ist, bevor asynchrone Operationen ausgeführt werden. Der Parameter DefaultFirebaseOptions.currentPlatform wählt automatisch die korrekte Konfiguration basierend auf der Zielplattform (iOS, Android, Web).
Das FlutterFire CLI (flutterfire configure) automatisiert die Projekt-Konfiguration und generiert die benötigte firebase_options.dart-Datei. Entwickler müssen nicht mehr manuell die Google-Services-Dateien herunterladen oder platzieren.
Firebase Authentication: Email/Password und Google Sign-In
Die Authentifizierung bildet die Grundlage jeder sicheren App. Firebase Authentication bietet verschiedene Provider, wobei Email/Password und Google Sign-In zu den am häufigsten genutzten gehören. Dazu kommen SMS-Verifizierung per Telefonnummer und Multi-Faktor-Authentifizierung, seit firebase_auth 6.1.0 auch mit TOTP unter macOS.
Email/Password Authentifizierung
Ein strukturierter AuthService kapselt die Authentifizierungslogik und behandelt Fehlerszenarien explizit:
import 'package:firebase_auth/firebase_auth.dart';
class AuthService {
final FirebaseAuth _auth = FirebaseAuth.instance;
// Register with email and password
Future<User?> register(String email, String password) async {
try {
final credential = await _auth.createUserWithEmailAndPassword(
email: email,
password: password,
);
return credential.user;
} on FirebaseAuthException catch (e) {
// Handle specific error codes
switch (e.code) {
case 'email-already-in-use':
throw Exception('This email is already registered');
case 'weak-password':
throw Exception('Password must be at least 6 characters');
default:
throw Exception('Registration failed: ${e.message}');
}
}
}
// Sign in with existing credentials
Future<User?> signIn(String email, String password) async {
final credential = await _auth.signInWithEmailAndPassword(
email: email,
password: password,
);
return credential.user;
}
// Reactive auth state stream
Stream<User?> get authStateChanges => _auth.authStateChanges();
}Die authStateChanges()-Stream-Methode ist besonders wichtig: Sie gibt einen kontinuierlichen Stream aus, der über Änderungen des Authentifizierungsstatus informiert. Widgets können diesen Stream nutzen, um automatisch zwischen Login- und Dashboard-Ansichten zu wechseln.
Passwortregeln müssen nicht mehr nur im Client liegen: Die API validatePassword (seit firebase_auth 6.0.0) prüft ein Passwort gegen die in der Firebase Console konfigurierte Richtlinie, die eine Mindestlänge, Groß- und Kleinbuchstaben, Ziffern und Sonderzeichen verlangen kann.
Google Sign-In Integration
Google Sign-In erfordert das zusätzliche Paket google_sign_in. Seit google_sign_in 7.0 ist das Plugin ein Singleton, das über GoogleSignIn.instance bezogen und genau einmal initialisiert wird, und die Authentifizierung ist von der Autorisierung getrennt. Der Aufruf GoogleSignIn().signIn() aus älteren Tutorials kompiliert nicht mehr.
import 'package:firebase_auth/firebase_auth.dart';
import 'package:google_sign_in/google_sign_in.dart';
// Call once at startup, before any other GoogleSignIn method
Future<void> initGoogleSignIn() => GoogleSignIn.instance.initialize();
Future<UserCredential> signInWithGoogle() async {
try {
// Shows the native account picker; throws if the user cancels
final googleUser = await GoogleSignIn.instance.authenticate();
// Synchronous getter since v7: only the ID token is exposed here
final googleAuth = googleUser.authentication;
// Firebase only needs the ID token to create the credential
final credential = GoogleAuthProvider.credential(
idToken: googleAuth.idToken,
);
return FirebaseAuth.instance.signInWithCredential(credential);
} on GoogleSignInException catch (e) {
if (e.code == GoogleSignInExceptionCode.canceled) {
throw Exception('Sign-in cancelled');
}
rethrow;
}
}Dieses Muster gilt für alle OAuth-Provider: Provider-Token holen, in ein Firebase-Credential verpacken, dann signInWithCredential aufrufen. Braucht die App zusätzlich eine Google-API (Drive, Calendar), stammt das Access Token jetzt aus einem eigenen Schritt, authorizationClient.authorizeScopes, wie im Migrationsleitfaden von google_sign_in beschrieben.
Wer GoogleSignIn().signIn() schreibt und accessToken aus authentication liest, zitiert die API vor 7.0. In v7 liefert authenticate() den Account, authentication enthält nur noch das idToken, und Access Tokens für zusätzliche Scopes erfordern einen expliziten Autorisierungsaufruf.
Google Sign-In benötigt zusätzliche Konfiguration in den iOS- und Android-Projekten. Für iOS muss die GoogleService-Info.plist mit der korrekten OAuth-Client-ID konfiguriert werden. Auf Android ist die SHA-1-Fingerprint-Registrierung in der Firebase Console erforderlich.
Firestore CRUD-Operationen und Datenmodellierung
Cloud Firestore ist eine NoSQL-Dokumentendatenbank, die Echtzeitdaten-Synchronisation bietet. Die grundlegenden CRUD-Operationen (Create, Read, Update, Delete) bilden das Fundament jeder Firestore-Integration.
Ein TaskService demonstriert typische Firestore-Operationen:
import 'package:cloud_firestore/cloud_firestore.dart';
class TaskService {
final _db = FirebaseFirestore.instance;
final String _collection = 'tasks';
// Create a new document with auto-generated ID
Future<String> createTask(String userId, String title) async {
final doc = await _db.collection(_collection).add({
'userId': userId,
'title': title,
'completed': false,
'createdAt': FieldValue.serverTimestamp(),
});
return doc.id;
}
// Read a single document by ID
Future<Map<String, dynamic>?> getTask(String taskId) async {
final snapshot = await _db.collection(_collection).doc(taskId).get();
return snapshot.data();
}
// Update specific fields without overwriting the entire document
Future<void> toggleComplete(String taskId, bool completed) async {
await _db.collection(_collection).doc(taskId).update({
'completed': completed,
'updatedAt': FieldValue.serverTimestamp(),
});
}
// Delete a document
Future<void> deleteTask(String taskId) async {
await _db.collection(_collection).doc(taskId).delete();
}
}Wichtige Details:
FieldValue.serverTimestamp()verwendet die Firebase-Serverzeit, nicht die lokale Gerätezeit. Dies verhindert Inkonsistenzen bei Geräten mit falschen Zeiteinstellungen.- Die
add()-Methode generiert automatisch eine eindeutige Dokument-ID. Alternativ kanndoc('custom-id').set()für benutzerdefinierte IDs verwendet werden. update()modifiziert nur die angegebenen Felder, währendset()das gesamte Dokument überschreibt (es sei denn,SetOptions(merge: true)wird verwendet).- Seit
cloud_firestore7.1.0 ergänzenFieldValue.minimumundFieldValue.maximumdie serverseitigen Transformationen: Sie behalten ohne vorherigen Lesezugriff den kleineren bzw. größeren Wert aus gespeichertem und eingehendem Wert, was zu Zählern wie einem Highscore passt.
Bereit für deine Flutter-Interviews?
Übe mit unseren interaktiven Simulatoren, Flashcards und technischen Tests.
Real-Time Streams und Reaktive UI-Updates
Die wahre Stärke von Firestore liegt in der Echtzeitdaten-Synchronisation. Mit Streams können Widgets automatisch auf Datenbankänderungen reagieren, ohne manuelles Polling.
import 'package:cloud_firestore/cloud_firestore.dart';
class TaskStream {
final _db = FirebaseFirestore.instance;
// Stream all tasks for a specific user, ordered by creation date
Stream<List<Map<String, dynamic>>> userTasks(String userId) {
return _db
.collection('tasks')
.where('userId', isEqualTo: userId)
.orderBy('createdAt', descending: true)
.snapshots()
.map((snapshot) => snapshot.docs.map((doc) {
final data = doc.data();
data['id'] = doc.id; // Include document ID
return data;
}).toList());
}
}Dieser Stream gibt kontinuierlich aktualisierte Task-Listen zurück. Jede Änderung in der Firestore-Collection löst ein neues Event aus. Die Kombination von where() und orderBy() erfordert einen zusammengesetzten Index, den Firebase automatisch vorschlägt, wenn er fehlt.
In einem Widget wird der Stream mit StreamBuilder konsumiert:
StreamBuilder<DocumentSnapshot>(
stream: FirebaseFirestore.instance
.collection('tasks')
.doc(taskId)
.snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) return const CircularProgressIndicator();
final data = snapshot.data!;
final isPending = data.metadata.hasPendingWrites;
return Row(
children: [
Text(data['title']),
if (isPending) const Icon(Icons.cloud_upload, size: 16),
],
);
},
)Die hasPendingWrites-Property zeigt an, ob lokale Änderungen noch nicht mit dem Server synchronisiert wurden. Dies ermöglicht die Implementierung von Offline-Indikatoren in der UI.
Firestore aktiviert standardmäßig lokale Persistenz auf mobilen Plattformen. Änderungen werden lokal gespeichert und automatisch synchronisiert, sobald die Netzwerkverbindung wiederhergestellt ist. Im Web wird die Persistenz über Settings(persistenceEnabled: true) aktiviert, die frühere Methode enablePersistence() ist veraltet.
Firestore Security Rules: Server-seitige Validierung
Security Rules sind die zentrale Sicherheitsschicht von Firestore. Sie definieren, wer auf welche Daten zugreifen darf und welche Validierungsregeln gelten.
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Users can only access their own profile
match /users/{userId} {
allow read, update: if request.auth != null
&& request.auth.uid == userId;
allow create: if request.auth != null;
allow delete: if false; // Prevent self-deletion
}
// Tasks belong to the user who created them
match /tasks/{taskId} {
allow read, write: if request.auth != null
&& resource.data.userId == request.auth.uid;
allow create: if request.auth != null
&& request.resource.data.userId == request.auth.uid;
}
}
}Wichtige Konzepte:
request.auth.uidenthält die User-ID des authentifizierten Nutzersresource.datareferenziert das existierende Dokumentrequest.resource.datareferenziert das neue/modifizierte Dokument- Die Trennung von
read/writeinget,list,create,update,deleteermöglicht granulare Kontrolle
Firebase bietet einen Rules Playground in der Console, um Regeln zu testen, bevor sie deployed werden. Zusätzlich kann das Firebase Emulator Suite lokal verwendet werden, um Sicherheitsregeln während der Entwicklung zu validieren.
Repository Pattern und Testbarkeit
Für wartbare und testbare Codebases empfiehlt sich das Repository Pattern. Es entkoppelt die Datenquelle von der Business-Logik und ermöglicht das Austauschen von Firebase gegen Mock-Implementierungen in Unit-Tests.
abstract class TaskRepository {
Future<String> create(String userId, String title);
Stream<List<Task>> watchAll(String userId);
Future<void> update(String id, Map<String, dynamic> fields);
Future<void> delete(String id);
}
// firebase_task_repository.dart
class FirebaseTaskRepository implements TaskRepository {
final _db = FirebaseFirestore.instance;
Future<String> create(String userId, String title) async {
final doc = await _db.collection('tasks').add({
'userId': userId,
'title': title,
'completed': false,
'createdAt': FieldValue.serverTimestamp(),
});
return doc.id;
}
Stream<List<Task>> watchAll(String userId) {
return _db
.collection('tasks')
.where('userId', isEqualTo: userId)
.orderBy('createdAt', descending: true)
.snapshots()
.map((s) => s.docs.map(Task.fromFirestore).toList());
}
// ... update and delete implementations
}Diese Architektur erlaubt Dependency Injection und vereinfacht das Testen erheblich. Eine Mock-Implementierung kann in-memory-Daten verwenden, ohne Firebase-Abhängigkeiten. State-Management-Lösungen wie Riverpod oder BLoC konsumieren nur das Repository-Interface und kennen Firestore nicht.
Upgrade auf FlutterFire 5: Was bricht
Das Major-Release vom Oktober 2026 (BoM 5.0.0, firebase_auth 7.0.0, cloud_firestore 7.0.0, firebase_core 5.0.0) ändert vor allem die Build-Anforderungen, weniger die Dart-APIs. An diesen Punkten scheitert ein Build oder ein Review:
- Android-
minSdk24: Die Plugins bauen auf der Firebase Android BoM 35 auf. Ein Projekt, das noch aufminSdk21 oder 23 steht, kompiliert nicht mehr. - Apple SDK 13: Das Firebase Apple SDK wechselt mit Swift Package Manager auf 13.0.0 (mit CocoaPods auf 12.19.0), und Swift Packages setzen macOS 11 voraus.
- App Check: Die
activate-Parameter heißen jetztproviderWeb,providerAndroidundproviderApple. - Deprecations:
setIndexConfigurationFromJSONist incloud_firestore7.0.0 als veraltet markiert, undfirebase_ml_model_downloaderwird nicht mehr veröffentlicht. - Bereits in der 6.x-Reihe entfernt:
fetchSignInMethodsForEmail()undUser.updateEmail(). Code, der vor der Anmeldung prüft, welchen Provider eine E-Mail-Adresse nutzt, muss neu konzipiert werden, weil der Schutz vor E-Mail-Enumeration diese Information verbirgt.
Die vollständige Liste pro Paket steht in den FlutterFire-Release-Notes und im Changelog von cloud_firestore.
Firebase-Interviewfragen für Flutter-Entwickler
Interviews prüfen sowohl das konzeptionelle Verständnis als auch die praktische Umsetzung der Firebase-Dienste. Die folgenden Fragen tauchen 2026 regelmäßig in Flutter-Interviews auf. Der Leitfaden zu Flutter-Interviewfragen deckt die Framework-Seite ab.
1. Worin unterscheidet sich authStateChanges() von idTokenChanges() und userChanges()?
authStateChanges() feuert nur bei An- und Abmeldung. idTokenChanges() feuert zusätzlich, wenn das ID-Token erneuert wird (etwa einmal pro Stunde). userChanges() erfasst all das und dazu Profiländerungen wie updateDisplayName(). Für die meisten Navigation Guards reicht authStateChanges().
2. Was ist der Unterschied zwischen set() und update() in Firestore?
set() überschreibt das gesamte Dokument (außer mit SetOptions(merge: true)), während update() nur die angegebenen Felder modifiziert. update() schlägt fehl, wenn das Dokument nicht existiert, während set() es erstellt.
3. Wie funktioniert die Offline-Persistenz in Firestore?
Firestore speichert Daten lokal auf dem Gerät und synchronisiert sie automatisch, wenn eine Netzwerkverbindung verfügbar ist. Änderungen werden in einer lokalen Warteschlange gespeichert. Die hasPendingWrites-Eigenschaft zeigt an, ob Daten noch nicht synchronisiert wurden.
4. Wie sollten Firestore-Daten für eine Chat-Anwendung modelliert werden?
Eine Collection chats, deren Dokumente die Metadaten enthalten (Teilnehmer, Zeitstempel der letzten Nachricht), und darunter pro Chat-Dokument eine Subcollection messages. So lässt sich die Chat-Liste eines Nutzers effizient abfragen, während die Nachrichten jeder Unterhaltung paginiert werden. Die letzte Nachricht wird ins übergeordnete Dokument denormalisiert, damit die Listenansicht die Subcollection nicht lesen muss.
5. Warum sollte man FieldValue.serverTimestamp() statt DateTime.now() verwenden?
Die Serverzeit ist konsistent über alle Clients hinweg, unabhängig von lokalen Zeitzoneneinstellungen oder Geräteuhren. Dies verhindert Probleme mit falsch eingestellten Gerätezeiten und sorgt für korrekte Sortierung und Zeitstempel.
6. Was sind zusammengesetzte Indizes und wann werden sie benötigt?
Zusammengesetzte Indizes werden für Abfragen benötigt, die mehrere Felder filtern oder sortieren. Firebase schlägt automatisch fehlende Indizes vor, wenn eine Abfrage fehlschlägt. Diese müssen in der Firebase Console oder via firestore.indexes.json erstellt werden.
7. Wann ist eine Transaktion statt eines Batched Writes nötig?
Eine Transaktion ist nötig, wenn der Write von Daten abhängt, die in derselben Operation gelesen werden, etwa beim Verringern des Lagerbestands nur dann, wenn er über null liegt. Das SDK wiederholt den Callback, wenn sich ein gelesenes Dokument vor dem Commit ändert, deshalb darf der Callback keine Seiteneffekte haben. Ein Batched Write führt mehrere Writes atomar aus, ganz ohne Lesezugriff, zum Beispiel das Anlegen eines Dokuments und das Hochzählen eines Zählers an anderer Stelle. Offline verhalten sich beide unterschiedlich: Ein Batch wird in die Warteschlange gestellt, eine Transaktion scheitert ohne Verbindung.
final db = FirebaseFirestore.instance;
// Transaction: read then write, retried on contention
await db.runTransaction((tx) async {
final ref = db.collection('products').doc(id);
final snap = await tx.get(ref);
final stock = snap.get('stock') as int;
if (stock <= 0) throw Exception('Out of stock');
tx.update(ref, {'stock': stock - 1});
});
// Batched write: atomic writes, no reads
final batch = db.batch();
batch.set(db.collection('orders').doc(), {'productId': id});
batch.update(db.collection('stats').doc('orders'), {
'count': FieldValue.increment(1),
});
await batch.commit();8. Wie wird eine Admin-Rolle mit Firebase umgesetzt?
Mit Custom Claims, die aus einer vertrauenswürdigen Umgebung über das Admin SDK gesetzt werden, niemals aus dem Flutter-Client. Der Claim reist im ID-Token mit, daher lesen die Regeln ihn als request.auth.token.admin == true, ohne zusätzlichen Dokumentzugriff. Die Dokumentation zu Custom Claims begrenzt die Nutzlast auf 1000 Bytes, und der Client sieht einen neuen Claim erst nach einer Token-Erneuerung, die currentUser.getIdToken(true) erzwingt.
9. Wie verhindert man unautorisierten Zugriff auf Firestore-Daten?
Durch Security Rules, die server-seitig validieren, ob ein Nutzer auf bestimmte Dokumente zugreifen darf. Regeln sollten immer request.auth überprüfen und Benutzer-IDs mit Dokument-Daten abgleichen. Niemals nur auf Client-Validierung verlassen.
10. Was unterscheidet Security Rules von App Check?
Security Rules entscheiden, ob ein bestimmter Nutzer ein bestimmtes Dokument lesen oder schreiben darf. App Check bestätigt, dass die Anfrage von der echten App auf einem echten Gerät stammt, und blockiert damit Skripte, die den öffentlichen API-Key wiederverwenden. Beide beantworten unterschiedliche Fragen, eine Produktions-App braucht also beides. Seit FlutterFire 5 wird App Check mit providerAndroid, providerApple und providerWeb aktiviert.
11. Warum kann ein Firestore-Screen teuer werden, und wie funktioniert Pagination?
Firestore rechnet pro gelesenem, geschriebenem und gelöschtem Dokument ab. Ein Listener auf eine unbegrenzte Collection liest beim ersten Laden jedes passende Dokument, danach einen Lesezugriff pro geändertem Dokument. Pagination nutzt Query-Cursors statt Offsets: limit(20) für die erste Seite, dann startAfterDocument(lastDoc) für die nächste, sodass jede Seite nur die Dokumente kostet, die sie zurückgibt.
12. Firestore oder Realtime Database: welche und warum?
Firestore speichert Dokumente in Collections, unterstützt zusammengesetzte Abfragen mit Indizes und rechnet pro Operation ab. Die Realtime Database speichert einen einzigen JSON-Baum, bietet flache Abfragen auf einem Child-Key und rechnet hauptsächlich nach Bandbreite und Speicher ab, was zu kleinen, sehr häufigen Updates wie Präsenzanzeigen passt. Die meisten neuen Flutter-Apps starten mit Firestore und ergänzen die Realtime Database nur für Präsenz.
13. Was ist der Vorteil von Streams gegenüber Futures in Firebase?
Streams liefern kontinuierliche Updates bei Datenänderungen, während Futures nur einmalige Werte zurückgeben. Für Echtzeitdaten ist snapshots() effizienter als wiederholtes Polling mit get().
14. Wie testet man Firebase-abhängigen Code?
Durch das Repository Pattern können Mock-Implementierungen in Tests injiziert werden. Alternativ bietet Firebase die Emulator Suite für lokale Integration-Tests mit echten Firebase-Services ohne Cloud-Kosten.
Für die weitere Vorbereitung auf Flutter-Interviews decken eigene Übungsmodule diese Themen mit interaktiven Quizzen und Challenges auf Zeit ab.
Fang an zu üben!
Teste dein Wissen mit unseren Interview-Simulatoren und technischen Tests.
Quellen
- Firebase-Release-Notes für Flutter: Inhalt von BoM 5.0.0 und 5.1.0, minSdk 24, umbenannte App-Check-Parameter
- Changelog von cloud_firestore: Pipelines in 6.3.0,
FieldValue.minimum/maximumundfindNearest-Distanz in 7.1.0 - Changelog von firebase_auth:
validatePasswordin 6.0.0, TOTP unter macOS in 6.1.0, entferntesfetchSignInMethodsForEmail - Migrationsleitfaden von google_sign_in: Singleton,
initialize,authenticate, getrennte Autorisierung in 7.0 - Firebase Custom Claims: Grenze von 1000 Bytes und Token-Erneuerung
Flutter und Firebase im Interview: die wichtigsten Punkte
- FlutterFire BoM 5.1.0 liefert
firebase_auth7.0.1 undcloud_firestore7.1.0 und verlangt Android-minSdk24 google_sign_in7 ersetztGoogleSignIn().signIn()durchGoogleSignIn.instance.initialize()und anschließendauthenticate(), Firebase braucht nur dasidTokenauthStateChanges()liefert einen reaktiven Stream, der den Login-Status in der ganzen App ohne manuelle Prüfungen abbildet- Echtzeit-Synchronisierung über
snapshots()ersetzt Polling und greift direkt inStreamBuilderfür automatische UI-Updates - Security Rules sind in Produktion Pflicht:
request.auth.uidimmer gegen die Besitzerfelder des Dokuments prüfen, Rollen über Custom Claims abbilden - Transaktionen lesen und schreiben dann mit Wiederholungen, Batched Writes schreiben nur; Pagination läuft über Cursors, weil jedes gelesene Dokument abgerechnet wird
- Offline-Persistenz funktioniert auf Mobilgeräten ohne zusätzlichen Code,
hasPendingWriteszeigt Nutzern den Synchronisierungsstatus an - Das Repository Pattern entkoppelt Firebase von der Business-Logik und vereinfacht Tests und spätere Migrationen
Findest du den Bug in Flutter?
Ein echter Codeausschnitt, ein versteckter Bug, ein Versuch pro Tag. Zum Ausprobieren ohne Konto.

Geschrieben von
Anthony Fillion-MailletGründer von SharpSkill
Seit über 10 Jahren Fullstack-Entwickler. Er leitet SharpSkill und verantwortet alles, was hier erscheint.
Aktualisiert am 9. November 2026
Tags
Teilen
Verwandte Artikel

Flutter State Management: Riverpod vs BLoC - Vollständiger Vergleichsleitfaden
Detaillierter Vergleich zwischen Riverpod 3.x und BLoC 9.x für das State Management in Flutter. Architektur, automatische Wiederholung, Testbarkeit und Anwendungsfälle für die richtige Wahl.

Die 20 wichtigsten Flutter-Interviewfragen für Mobile-Entwickler
Vorbereitung auf Flutter-Interviews mit den 20 häufigsten Fragen. Widgets, State Management, Dart, Architektur und Best Practices ausführlich erklärt.

Flutter: Die erste plattformuebergreifende App erstellen
Vollstaendiger Leitfaden zur Erstellung einer plattformuebergreifenden mobilen Anwendung mit Flutter und Dart. Widgets, Zustandsverwaltung, Navigation und Best Practices fuer Einsteiger.