Skip to content

Add support for Firestore pipeline operations - #3799

Merged
armando-navarro merged 4 commits into
angular:mainfrom
KingDarBoja:feat/firestore-pipelines
Oct 27, 2026
Merged

armando-navarro merged 4 commits into
angular:mainfrom
KingDarBoja:feat/firestore-pipelines

Conversation

@KingDarBoja

@KingDarBoja KingDarBoja commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Checklist

Description

Implement Firestore Pipelines (including lite version).

Code sample

@armando-navarro

armando-navarro commented Oct 19, 2026 •

Copy link
Copy Markdown
Collaborator

Thank you for submitting this. This was on my plan of things to add. There's actually so much more than this that needs to be included from Firebase. We'll get this done together. Thank you again.

@armando-navarro armando-navarro added bump: minor Size of the change: a new capability with no breaking change comp: firestore Cloud Firestore (src/firestore). type: feature New capability or enhancement. labels Oct 26, 2026

@armando-navarro armando-navarro left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @KingDarBoja, thanks again, and sorry for taking this long to review this. I had prioritized the AngularFire 22 planning, but now that that's done, and the AngularFire 22 PRs are going to roll out swiftly as a result, I felt it was time for me to get to your PR.

There are three things I'd like changed before approving, plus one optional item.

Lite: pipeline() doesn't type-check

With Firestore from @angular/fire/firestore/lite, inject(Firestore).pipeline() fails to compile:

  • The error is TS2339: Property 'pipeline' does not exist on type 'Firestore'.
  • The cause is in firebase's typings. The types its exports map serves for the Lite pipelines path leave out the pipeline() declaration, so importing straight from firebase/firestore/lite/pipelines fails the same way.
  • At runtime the method is there. Only the type is missing.

Since the docs point Lite users at this entry point, I think we should add the declaration ourselves. With this in src/firestore/lite/pipelines/public_api.ts, the package builds and the Lite call compiles:

import type { Pipeline, PipelineSource } from 'firebase/firestore/lite/pipelines';

declare module '@firebase/firestore/lite' {
  interface Firestore {
    pipeline(): PipelineSource<Pipeline>;
  }
}

export * from './firebase';

Docs

The new section shows only the imports. Could you add:

  • A short example that gets a pipeline from the injected Firestore with firestore.pipeline() and passes it to execute().
  • A note that pipelines need an Enterprise edition database. Firebase's edition comparison says Standard edition is "Limited to Firestore Core operations".

PR description

  • "Issue number for this PR: #3693" won't close the issue when this merges. Fixes #3693 will.
  • Please add Refs #3755 as well, since this covers 2 of the 6 missing entry points listed there.

Optional: a spec for the Lite fix

Could you add a spec that calls pipeline() on the injected Firestore from both entry points, so the Lite fix can't regress? The Lite one fails to compile without the declaration above and passes with it.

Once these are in, mark the PR ready for review and I'll take another look. If I've misread anything here, let me know.

@KingDarBoja
KingDarBoja marked this pull request as ready for review October 26, 2026 14:56
@KingDarBoja

Copy link
Copy Markdown
Contributor Author

@armando-navarro take into account before merging that this PR is pointing to main branch instead of the 21.x.x one.

@armando-navarro armando-navarro left a comment •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @KingDarBoja. All the changes I asked for look good. I'm approving.

On the base branch, main is the right one:

  • main is now the AngularFire 22 line, so this will ship with AngularFire 22.0.0-rc.0.
  • 21.0.x only takes fixes for AngularFire 21. I can cherry-pick backport this to that line, though.

Before I merge, could you add @Component({ ... }) to the docs snippet's class, with Component added to the @angular/core import? Without it, it reads as a plain class, not a component. It's minor, I know, but I thought it was worth mentioning.

Another optional cleanup, if you'd like: the docs snippet imports greaterThan but never uses it, since it calls field('rating').greaterThan(4.5).

These suggestions are optional (not crucial).

Thanks again for building this.

@KingDarBoja

Copy link
Copy Markdown
Contributor Author

@armando-navarro I decided to add both approaches (chaining and functional) instead of removing the function import 😄

@armando-navarro

Copy link
Copy Markdown
Collaborator

Thanks for adding @Component and both approaches.

Also a correction to my review above: this will ship in AngularFire 21 as well. After it merges to main, I'll cherry-pick it onto a new 21.1.x line for AngularFire 21.1.0.

@armando-navarro
armando-navarro merged commit 80ed66b into angular:main Oct 27, 2026
24 checks passed
@armando-navarro armando-navarro added this to the 22.0.0-rc.0 milestone Oct 27, 2026
@armando-navarro armando-navarro added the backport: 21.1.x Cherry-pick onto the 21.1.x branch for a 21.1 minor release label Oct 27, 2026
@KingDarBoja
KingDarBoja deleted the feat/firestore-pipelines branch October 27, 2026 14:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport: 21.1.x Cherry-pick onto the 21.1.x branch for a 21.1 minor release bump: minor Size of the change: a new capability with no breaking change comp: firestore Cloud Firestore (src/firestore). type: feature New capability or enhancement.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add support for Firestore Enterprise Pipeline Queries

2 participants