# firebase/firebase-ios-sdk architecture

> Architecture diagram of the GitHub repository firebase/firebase-ios-sdk, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/firebase/firebase-ios-sdk
- Repository: https://github.com/firebase/firebase-ios-sdk

## Overview

This repository is the Firebase Apple SDK: a collection of client libraries through which an app uses Firebase products. The principal workflow is app code calling a product API and receiving data, events, or task results; distinct product stages include authentication, database queries, file operations, AI generation, crash reporting, and app attestation. Firestore’s sampled query engine documents local index, cached-key, and full-scan execution strategies. Other product branches are included from the README, but their internal wiring was not sampled, so their links are intentionally limited.

Main entry points: [`Firestore/core/src/local/query_engine.cc`](https://github.com/firebase/firebase-ios-sdk/blob/main/Firestore/core/src/local/query_engine.cc) (Local query engine), [`FirebaseDatabase/Sources/Public/FirebaseDatabase/FIRDatabaseQuery.h`](https://github.com/firebase/firebase-ios-sdk/blob/main/FirebaseDatabase/Sources/Public/FirebaseDatabase/FIRDatabaseQuery.h) (Realtime Database), [`FirebaseStorage/Sources/StorageReference.swift`](https://github.com/firebase/firebase-ios-sdk/blob/main/FirebaseStorage/Sources/StorageReference.swift) (Cloud Storage), [`FirebaseAuth/Sources/Public/FirebaseAuth/FIRAuth.h`](https://github.com/firebase/firebase-ios-sdk/blob/main/FirebaseAuth/Sources/Public/FirebaseAuth/FIRAuth.h) (Authentication)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app_services["App services"]
  node_ai["AI Logic<br/>[FirebaseAI.swift]"]
  node_functions["Cloud Functions"]
end

subgraph group_data_products["Data products"]
  node_firestore_api["Cloud Firestore"]
  node_firestore_query["Local query engine<br/>[query_engine.cc]"]
  node_database["Realtime Database<br/>[FIRDatabaseQuery.h]"]
  node_storage["Cloud Storage"]
end

subgraph group_trust_delivery["Trust and delivery"]
  node_auth["Authentication<br/>[FIRAuth.h]"]
  node_app_check["App Check<br/>[FIRAppCheck.h]"]
  node_distribution["App Distribution"]
end

subgraph group_engagement_insights["Engagement and insights"]
  node_messaging["Cloud Messaging"]
  node_in_app["In-App Messaging"]
  node_remote_config["Remote Config"]
  node_analytics["Analytics"]
  node_crashlytics["Crashlytics<br/>[FIRCrashlytics.h]"]
  node_performance["Performance Monitoring"]
end

node_app(("App developer"))
node_firebase_backend["Firebase services"]
node_keychain[("Apple Keychain")]

node_app -->|"uses API"| node_auth
node_app -->|"uses API"| node_app_check
node_app -->|"requests generation"| node_ai
node_app -->|"calls functions"| node_functions
node_app -->|"queries data"| node_firestore_api
node_firestore_api -->|"executes locally"| node_firestore_query
node_firestore_query -->|"uses cached data"| node_firebase_backend
node_app -->|"queries or observes"| node_database
node_database -->|"requests data"| node_firebase_backend
node_app -->|"uploads or downloads"| node_storage
node_storage -->|"performs storage tasks"| node_firebase_backend
node_app -->|"uses API"| node_messaging
node_app -->|"uses API"| node_in_app
node_app -->|"uses API"| node_remote_config
node_app -->|"records events"| node_analytics
node_app -->|"reports crashes"| node_crashlytics
node_app -->|"uses API"| node_performance
node_app -->|"uses API"| node_distribution
node_auth -->|"stores credentials"| node_keychain

click node_auth "https://github.com/firebase/firebase-ios-sdk/blob/main/FirebaseAuth/Sources/Public/FirebaseAuth/FIRAuth.h"
click node_app_check "https://github.com/firebase/firebase-ios-sdk/blob/main/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheck.h"
click node_ai "https://github.com/firebase/firebase-ios-sdk/blob/main/FirebaseAI/Sources/FirebaseAI.swift"
click node_firestore_query "https://github.com/firebase/firebase-ios-sdk/blob/main/Firestore/core/src/local/query_engine.cc"
click node_database "https://github.com/firebase/firebase-ios-sdk/blob/main/FirebaseDatabase/Sources/Public/FirebaseDatabase/FIRDatabaseQuery.h"
click node_storage "https://github.com/firebase/firebase-ios-sdk/blob/main/FirebaseStorage/Sources/StorageReference.swift"
click node_analytics "https://github.com/firebase/firebase-ios-sdk/blob/main/FirebaseAnalytics/Sources/Analytics%2BSwiftUI.swift"
click node_crashlytics "https://github.com/firebase/firebase-ios-sdk/blob/main/Crashlytics/Crashlytics/Public/FirebaseCrashlytics/FIRCrashlytics.h"
click node_distribution "https://github.com/firebase/firebase-ios-sdk/blob/main/FirebaseAppDistribution/Sources/Public/FirebaseAppDistribution/FIRAppDistribution.h"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_ai,node_functions toneBlue
class node_firestore_api,node_firestore_query,node_database,node_storage,node_keychain toneAmber
class node_auth,node_app_check,node_distribution toneMint
class node_messaging,node_in_app,node_remote_config,node_analytics,node_crashlytics,node_performance toneRose
class node_app,node_firebase_backend toneIndigo
```

## Components

### App services

- [AI Logic](https://github.com/firebase/firebase-ios-sdk/blob/main/FirebaseAI/Sources/FirebaseAI.swift): `FirebaseAI/Sources/FirebaseAI.swift`
- **Cloud Functions**

### Data products

- **Cloud Firestore**
- [Local query engine](https://github.com/firebase/firebase-ios-sdk/blob/main/Firestore/core/src/local/query_engine.cc): `Firestore/core/src/local/query_engine.cc`
- [Realtime Database](https://github.com/firebase/firebase-ios-sdk/blob/main/FirebaseDatabase/Sources/Public/FirebaseDatabase/FIRDatabaseQuery.h): `FirebaseDatabase/Sources/Public/FirebaseDatabase/FIRDatabaseQuery.h`
- [Cloud Storage](https://github.com/firebase/firebase-ios-sdk/blob/main/FirebaseStorage/Sources/StorageReference.swift): `FirebaseStorage/Sources/StorageReference.swift`

### Trust and delivery

- [Authentication](https://github.com/firebase/firebase-ios-sdk/blob/main/FirebaseAuth/Sources/Public/FirebaseAuth/FIRAuth.h): `FirebaseAuth/Sources/Public/FirebaseAuth/FIRAuth.h`
- [App Check](https://github.com/firebase/firebase-ios-sdk/blob/main/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheck.h): `FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheck.h`
- [App Distribution](https://github.com/firebase/firebase-ios-sdk/blob/main/FirebaseAppDistribution/Sources/Public/FirebaseAppDistribution/FIRAppDistribution.h): `FirebaseAppDistribution/Sources/Public/FirebaseAppDistribution/FIRAppDistribution.h`

### Engagement and insights

- **Cloud Messaging**
- **In-App Messaging**
- **Remote Config**
- [Analytics](https://github.com/firebase/firebase-ios-sdk/blob/main/FirebaseAnalytics/Sources/Analytics%2BSwiftUI.swift): `FirebaseAnalytics/Sources/Analytics+SwiftUI.swift`
- [Crashlytics](https://github.com/firebase/firebase-ios-sdk/blob/main/Crashlytics/Crashlytics/Public/FirebaseCrashlytics/FIRCrashlytics.h): `Crashlytics/Crashlytics/Public/FirebaseCrashlytics/FIRCrashlytics.h`
- **Performance Monitoring**

### Other components

- **App developer**
- **Firebase services**
- **Apple Keychain**

## Connections

- App developer → Authentication: uses API
- App developer → App Check: uses API
- App developer → AI Logic: requests generation
- App developer → Cloud Functions: calls functions
- App developer → Cloud Firestore: queries data
- Cloud Firestore → Local query engine: executes locally
- Local query engine → Firebase services: uses cached data
- App developer → Realtime Database: queries or observes
- Realtime Database → Firebase services: requests data
- App developer → Cloud Storage: uploads or downloads
- Cloud Storage → Firebase services: performs storage tasks
- App developer → Cloud Messaging: uses API
- App developer → In-App Messaging: uses API
- App developer → Remote Config: uses API
- App developer → Analytics: records events
- App developer → Crashlytics: reports crashes
- App developer → Performance Monitoring: uses API
- App developer → App Distribution: uses API
- Authentication → Apple Keychain: stores credentials
