Firebase Data Connect
Firebase Data Connect is a relational database service using Cloud SQL for PostgreSQL with GraphQL schema, auto-generated queries/mutations, and type-safe SDKs.
Project Structure
dataconnect/ ├── dataconnect.yaml # Service configuration ├── schema/ │ └── schema.gql # Data model (types with @table) └── connector/ ├── connector.yaml # Connector config + SDK generation ├── queries.gql # Queries └── mutations.gql # Mutations
Development Workflow
Follow this strict workflow to build your application. You must read the linked reference files for each step to understand the syntax and available features.
- Define Data Model (schema/schema.gql )
Define your GraphQL types, tables, and relationships.
Read reference/schema.md for:
-
@table , @col , @default
-
Relationships (@ref , one-to-many, many-to-many)
-
Data types (UUID, Vector, JSON, etc.)
- Define Operations (connector/queries.gql , connector/mutations.gql )
Write the queries and mutations your client will use. Data Connect generates the underlying SQL.
Read reference/operations.md for:
-
Queries: Filtering (where ), Ordering (orderBy ), Pagination (limit /offset ).
-
Mutations: Create (_insert ), Update (_update ), Delete (_delete ).
-
Upserts: Use _upsert to "insert or update" records (CRITICAL for user profiles).
-
Transactions: use @transaction for multi-step atomic operations.
- Secure Your App (connector/ files)
Add authorization logic closely with your operations.
Read reference/security.md for:
-
@auth(level: ...) for PUBLIC, USER, or NO_ACCESS.
-
@check and @redact for row-level security and validation.
- Generate & Use SDKs
Generate type-safe code for your client platform.
Read reference/sdks.md for:
-
Android (Kotlin), iOS (Swift), Web (TypeScript), Flutter (Dart).
-
How to initialize and call your queries/mutations.
-
Nested Data: See how to access related fields (e.g., movie.reviews ).
Feature Capability Map
If you need to implement a specific feature, consult the mapped reference file:
Feature Reference File Key Concepts
Data Modeling reference/schema.md @table , @unique , @index , Relations
Vector Search reference/advanced.md Vector , @col(dataType: "vector")
Full-Text Search reference/advanced.md @searchable
Upserting Data reference/operations.md _upsert mutations
Complex Filters reference/operations.md _or , _and , _not , eq , contains
Transactions reference/operations.md @transaction , response binding
Environment Config reference/config.md dataconnect.yaml , connector.yaml
Deployment & CLI
Read reference/config.md for deep dive on configuration.
Common commands (run from project root):
Initialize Data Connect
npx -y firebase-tools@latest init dataconnect
Start local emulator
npx -y firebase-tools@latest emulators:start --only dataconnect
Generate SDK code
npx -y firebase-tools@latest dataconnect:sdk:generate
Deploy to production
npx -y firebase-tools@latest deploy --only dataconnect
Examples
For complete, working code examples of schemas and operations, see examples.md.