Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
90bd9b5
feat(firestore): add support for Pipeline APIs
SelaseKay Feb 6, 2026
1c69d01
feat(firestore): implement pipeline execution and stages with options
SelaseKay Feb 11, 2026
1094fd0
refactor: change PipelineSerializable to mixin and update Constant cl…
SelaseKay Feb 12, 2026
89eb198
chore: add `Expression` functions
SelaseKay Feb 12, 2026
d92a2b0
chore: add support for Pigeon
SelaseKay Feb 13, 2026
b4089d8
chore: implement pipeline execution and expression parsing utilities …
SelaseKay Feb 17, 2026
7d90353
chore: enhance PigeonPipelineResult to support nullable fields and ad…
SelaseKay Feb 18, 2026
6fbd3e4
chore: enhance pipeline stage handling
SelaseKay Feb 20, 2026
3e557c6
chore: refactor sorting functionality in pipeline stages to support m…
SelaseKay Feb 24, 2026
d3c2eeb
chore: implement iOS support for Firestore pipeline execution
SelaseKay Feb 24, 2026
b4f8466
Merge branch 'feat/firestore-pipelines' into feat-firestore-pipelines
SelaseKay Feb 24, 2026
d7bc27c
refactor: move aggregate classes to pipeline_aggregate.dart
SelaseKay Feb 25, 2026
85d87e6
feat: enhance expression parsing in FLTPipelineParser to support addi…
SelaseKay Feb 25, 2026
6699324
fix: update args type in _UnnestStage to use a more specific map type
SelaseKay Feb 25, 2026
59c0b88
feat: add filter expression parsing to FLTPipelineParser for enhanced…
SelaseKay Feb 25, 2026
642c0de
fix: handle null values in parseConstantValue
SelaseKay Feb 27, 2026
0a06aea
feat: introduce keyForExpressionMap method in FLTPipelineParser for i…
SelaseKay Feb 27, 2026
1b29c4d
feat: bump Firebase JS SDK to 12.9.0 (#18043)
SelaseKay Feb 27, 2026
fd07be0
fix: use builtin GITHUB_TOKEN instead of explicit secret (#18031)
morganchen12 Feb 27, 2026
fed585f
refactor(fdc): Support for entityId path extensions and hardening (#1…
aashishpatil-g Feb 27, 2026
2334cf0
chore: fix formatting (#18044)
SelaseKay Mar 2, 2026
f2109de
Merge branch 'feat/firestore-pipelines' into feat-firestore-pipelines
SelaseKay Mar 2, 2026
f1bf4b8
test: fix flaky CI (#18046)
Lyokone Mar 2, 2026
6d9becb
chore: Migrate gsutil usage to gcloud storage (#18035)
gurusai-voleti Mar 2, 2026
407c249
fix(analytics, iOS): Update hashedPhoneNumber handling to use hex str…
SelaseKay Mar 2, 2026
840dc5b
chore(deps): bump node-forge in /.github/workflows/scripts/functions …
dependabot[bot] Mar 2, 2026
28081db
chore(deps): bump fast-xml-parser and @google-cloud/storage (#18024)
dependabot[bot] Mar 2, 2026
b73fa32
Update client.md (#17689)
OrlandriaH-G Mar 2, 2026
ba3c436
chore(deps): bump qs and express in /.github/workflows/scripts/functi…
dependabot[bot] Mar 2, 2026
46cbaed
chore(deps): bump lodash in /.github/workflows/scripts/functions (#17…
dependabot[bot] Mar 2, 2026
d024d07
chore(deps): bump jws in /.github/workflows/scripts/functions (#17894)
dependabot[bot] Mar 2, 2026
247cd2a
chore(deps): bump github/codeql-action from 3.28.16 to 3.30.5 (#17754)
dependabot[bot] Mar 2, 2026
9361105
chore(deps): bump form-data in /.github/workflows/scripts/functions (…
dependabot[bot] Mar 2, 2026
8b53700
chore(deps): bump actions/upload-artifact from 4.4.3 to 4.6.2 (#17251)
dependabot[bot] Mar 2, 2026
870b7dd
chore(deps): bump dart-lang/setup-dart from 1.7.0 to 1.7.1 (#17158)
dependabot[bot] Mar 2, 2026
c2282fa
chore(deps): bump hendrikmuhs/ccache-action from 1.2.13 to 1.2.19 (#1…
dependabot[bot] Mar 2, 2026
548cf51
chore(release): publish packages (#18050)
Lyokone Mar 2, 2026
8d715a7
fix(auth, windows): add pluginregistry to properly restore state on W…
Lyokone Mar 3, 2026
c13040e
fix(functions): prevent collision when listening multiple times to th…
Lyokone Mar 3, 2026
baf6543
fix(firestore,windows): fix an issue that could happen when querying …
Lyokone Mar 3, 2026
3ffa411
feat(ios): migrate iOS to UIScene lifecycle (#18054)
Lyokone Mar 3, 2026
a6a0554
fix(auth, android): fix an error casing that wasn't consistent accros…
Lyokone Mar 3, 2026
65dbd4b
feat(analytics,ios): add support for FirebaseAnalyticsWithoutAdIdSupp…
Lyokone Mar 3, 2026
1e39ad1
fix(android): remove kotlin-android since AGP 9 supports it (#18059)
Lyokone Mar 3, 2026
5b60210
fix(messaging,ios): fix an issue where the scene initializer could be…
Lyokone Mar 3, 2026
5db5771
fix(remote-config, ios): fix hot reload issue (#18062)
Lyokone Mar 3, 2026
e1a93a0
fix(firestore, web): fix an issue where DocumentReference couldn't be…
Lyokone Mar 3, 2026
b853386
feat(messaging, web): add support for debug tokens on Web (#18057)
Lyokone Mar 3, 2026
dfab619
feat: implement Firestore pipeline support for web
SelaseKay Mar 3, 2026
6e6f654
fix(auth,ios): fix crash that could happen when reloading currentUser…
Lyokone Mar 3, 2026
91d35e6
docs(auth,android): add documentation about android:taskAffinity when…
Lyokone Mar 3, 2026
3afd410
fix(core): bump Firebase C++ SDK to 13.5.0 (CMake deprecation fix) (#…
dbebawy Mar 4, 2026
5eed50c
fix(functions,web): fix a crash that could happen with the Int64 type…
Lyokone Mar 4, 2026
397ba52
feat(firestore,web): add webPersistentTabManager settings support (#1…
Lyokone Mar 4, 2026
8c30132
docs(auth,ios): update Apple Sign In docs to showcase adding scopes (…
Lyokone Mar 4, 2026
49a56c2
chore(deps): bump fast-xml-parser (#18063)
dependabot[bot] Mar 4, 2026
80c6cff
fix(analytics, iOS): Update hashedEmailAddress handling to use hex st…
KeeganDC Mar 4, 2026
ea1f309
fix(remote_config,windows): release mode wasn't linking properly for …
Lyokone Mar 4, 2026
9061ea8
feat: enhance Firestore pipeline support for web
SelaseKay Mar 4, 2026
904249e
fix(fdc,web): add WASM support and improve CI (#18074)
Lyokone Mar 4, 2026
00f23b4
fix
SelaseKay Mar 4, 2026
a1fad45
fix(storage,web): contentType inference for web (#18078)
Lyokone Mar 5, 2026
5bd8a75
chore(messaging,web): improve the sample service worker (#18077)
Lyokone Mar 5, 2026
adef187
fix(firestore,windows): fix a crash happening when terminating the fi…
Lyokone Mar 5, 2026
26a9294
chore: clean up and refactor
SelaseKay Mar 5, 2026
b3d8e53
chore: add more interop and clean up code
SelaseKay Mar 6, 2026
103d7ff
feat(analytics, iOS): add support for `logTransaction` (#17995)
SelaseKay Mar 6, 2026
007689f
feat(database,windows): add support for Realtime Database to windows …
Lyokone Mar 6, 2026
531ceeb
ci: update swift-integration tests to work on main (#18083)
Lyokone Mar 6, 2026
476ba53
docs(auth): add documentation about errors code when Email Enumeratio…
Lyokone Mar 6, 2026
60b5cd5
fix(auth): fix inconsistence in casing in the native iOS SDK and Web …
Lyokone Mar 6, 2026
c2ac016
chore: fix bugs and refactored code
SelaseKay Mar 6, 2026
760f962
chore: add support for xor
SelaseKay Mar 8, 2026
e3ad0f8
chore: add arrayContainsAny support and enhance expression handling
SelaseKay Mar 8, 2026
6b9f133
Merge branch 'main' into feat-firestore-pipelines
Lyokone Mar 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/all_plugins.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ jobs:
# check-license-header)
- run: go install github.com/google/addlicense@latest
- name: Install Dart
uses: dart-lang/setup-dart@e630b99d28a3b71860378cafdc2a067c71107f94
uses: dart-lang/setup-dart@e51d8e571e22473a2ddebf0ef8a2123f0ab2c02c
- name: Install Melos
uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/android.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ jobs:
emulator-build: 14214601
working-directory: ${{ matrix.working_directory }}
script: |
flutter test integration_test/e2e_test.dart --ignore-timeouts --dart-define=CI=true -d emulator-5554
flutter test integration_test/e2e_test.dart --timeout 10x --dart-define=CI=true -d emulator-5554
- name: Ensure Appium is shut down
# Required because of below issue where emulator failing to shut down properly causes tests to fail
# https://github.com/ReactiveCircus/android-emulator-runner/issues/385
Expand Down
112 changes: 101 additions & 11 deletions .github/workflows/e2e_tests_fdc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ on:
- '**/example/**'
- '**.md'

permissions:
contents: read

jobs:
android:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -102,15 +105,15 @@ jobs:
~/.android/adb*
key: avd-${{ runner.os }}-${{ env.AVD_API_LEVEL }}-${{ env.AVD_TARGET }}-${{ env.AVD_ARCH }}
- name: Start AVD then run E2E tests
uses: reactivecircus/android-emulator-runner@v2
uses: reactivecircus/android-emulator-runner@b530d96654c385303d652368551fb075bc2f0b6b
with:
api-level: ${{ env.AVD_API_LEVEL }}
target: ${{ env.AVD_TARGET }}
arch: ${{ env.AVD_ARCH }}
emulator-build: 14214601
working-directory: 'packages/firebase_data_connect/firebase_data_connect/example'
script: |
flutter test integration_test/e2e_test.dart --dart-define=CI=true -d emulator-5554
flutter test integration_test/e2e_test.dart --dart-define=CI=true --timeout 10x -d emulator-5554
- name: Save Android Emulator Cache
# Branches can read main cache but main cannot read branch cache. Avoid LRU eviction with main-only cache.
if: github.ref == 'refs/heads/main'
Expand Down Expand Up @@ -153,7 +156,7 @@ jobs:
java-version: '21'
- name: Setup PostgreSQL for Linux/macOS/Windows
uses: ikalnytskyi/action-setup-postgres@v7
- uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92
- uses: hendrikmuhs/ccache-action@5ebbd400eff9e74630f759d94ddd7b6c26299639
name: Xcode Compile Cache
with:
key: xcode-cache-${{ runner.os }}
Expand Down Expand Up @@ -213,19 +216,27 @@ jobs:
unset PGSERVICEFILE
firebase experiments:enable dataconnect
./start-firebase-emulator.sh
- uses: futureware-tech/simulator-action@e89aa8f93d3aec35083ff49d2854d07f7186f7f5
id: simulator
with:
model: "iPhone 16"
- name: 'E2E Tests'
working-directory: 'packages/firebase_data_connect/firebase_data_connect/example'
env:
SIMULATOR: ${{ steps.simulator.outputs.udid }}
run: |
# Boot simulator and wait for System app to be ready.
# List of available simulators: https://github.com/actions/runner-images/blob/main/images/macos/macos-14-Readme.md#installed-simulators
SIMULATOR="iPhone 16"
xcrun simctl bootstatus "$SIMULATOR" -b
xcrun simctl logverbose "$SIMULATOR" enable
# Sleep to allow simulator to settle.
sleep 15
# Uncomment following line to have simulator logs printed out for debugging purposes.
# xcrun simctl spawn booted log stream --predicate 'eventMessage contains "flutter"' &
flutter test integration_test/e2e_test.dart -d "$SIMULATOR" --dart-define=CI=true
# The iOS simulator sometimes fails to connect the VM Service, hanging for
# 12 minutes before timing out. Use a 6-minute limit and retry once with
# a simulator reboot. Normal connection takes 30s-5min.
perl -e 'alarm 360; exec @ARGV' -- flutter test integration_test/e2e_test.dart -d "$SIMULATOR" --dart-define=CI=true --timeout 10x || {
echo "First attempt failed or timed out. Rebooting simulator and retrying..."
xcrun simctl shutdown "$SIMULATOR" || true
xcrun simctl boot "$SIMULATOR"
xcrun simctl bootstatus "$SIMULATOR" -b
flutter test integration_test/e2e_test.dart -d "$SIMULATOR" --dart-define=CI=true --timeout 10x
}
- name: Save Firestore Emulator Cache
# Branches can read main cache but main cannot read branch cache. Avoid LRU eviction with main-only cache.
if: github.ref == 'refs/heads/main'
Expand Down Expand Up @@ -325,3 +336,82 @@ jobs:
key: ${{ steps.firebase-emulator-cache.outputs.cache-primary-key }}
# Must match the restore path exactly
path: ~/.cache/firebase/emulators

web-wasm:
runs-on: macos-latest
timeout-minutes: 15
strategy:
fail-fast: false
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a
name: Install Node.js 20
with:
node-version: '20'
- uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b
with:
distribution: 'temurin'
java-version: '21'
- name: Setup PostgreSQL for Linux/macOS/Windows
uses: ikalnytskyi/action-setup-postgres@v7
- uses: subosito/flutter-action@f2c4f6686ca8e8d6e6d0f28410eeef506ed66aff
with:
channel: 'stable'
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa
with:
run-bootstrap: false
melos-version: '5.3.0'
- name: 'Bootstrap package'
run: melos bootstrap --scope "firebase_data_connect*"
- name: 'Install Tools'
run: |
sudo npm i -g firebase-tools
echo "FIREBASE_TOOLS_VERSION=$(npm firebase --version)" >> $GITHUB_ENV
- name: Firebase Emulator Cache
id: firebase-emulator-cache
uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
# Must match the save path exactly
path: ~/.cache/firebase/emulators
key: firebase-emulators-v3-${{ env.FIREBASE_TOOLS_VERSION }}
restore-keys: firebase-emulators-v3
- name: Start Firebase Emulator
run: |
cd ./packages/firebase_data_connect/firebase_data_connect/example
unset PGSERVICEFILE
firebase experiments:enable dataconnect
./start-firebase-emulator.sh
- name: 'E2E Tests'
working-directory: 'packages/firebase_data_connect/firebase_data_connect/example'
# Web devices are not supported for the `flutter test` command yet. As a
# workaround we can use the `flutter drive` command. Tracking issue:
# https://github.com/flutter/flutter/issues/66264
run: |
chromedriver --port=4444 --trace-buffer-size=100000 &
mv ./web/wasm_index.html ./web/index.html
flutter drive --target=./integration_test/e2e_test.dart --driver=./test_driver/integration_test.dart -d chrome --wasm --dart-define=CI=true | tee output.log
# We have to check the output for failed tests matching the string "[E]"
output=$(<output.log)
if [[ "$output" =~ \[E\] ]]; then
# You will see "All tests passed." in the logs even when tests failed.
echo "All tests did not pass. Please check the logs for more information."
exit 1
fi
shell: bash
- name: Save Firestore Emulator Cache
# Branches can read main cache but main cannot read branch cache. Avoid LRU eviction with main-only cache.
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
key: ${{ steps.firebase-emulator-cache.outputs.cache-primary-key }}
# Must match the restore path exactly
path: ~/.cache/firebase/emulators
15 changes: 12 additions & 3 deletions .github/workflows/ios.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
with:
distribution: 'temurin'
java-version: '21'
- uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92
- uses: hendrikmuhs/ccache-action@5ebbd400eff9e74630f759d94ddd7b6c26299639
name: Xcode Compile Cache
with:
key: xcode-cache-${{ runner.os }}
Expand Down Expand Up @@ -114,7 +114,7 @@ jobs:
ccache -s
- name: Start Firebase Emulator
run: sudo chown -R 501:20 "/Users/runner/.npm" && cd ./.github/workflows/scripts && ./start-firebase-emulator.sh
- uses: futureware-tech/simulator-action@9150831bad21ed25e472017a746f49ccbd0e674a
- uses: futureware-tech/simulator-action@e89aa8f93d3aec35083ff49d2854d07f7186f7f5
id: simulator
with:
# List of available simulators: https://github.com/actions/runner-images/blob/main/images/macos/macos-14-Readme.md#installed-simulators
Expand All @@ -126,7 +126,16 @@ jobs:
run: |
# Uncomment following line to have simulator logs printed out for debugging purposes.
# xcrun simctl spawn booted log stream --predicate 'eventMessage contains "flutter"' &
flutter test integration_test/e2e_test.dart -d "$SIMULATOR" --ignore-timeouts --dart-define=CI=true
# The iOS simulator sometimes fails to connect the VM Service, hanging for
# 12 minutes before timing out. Use a 6-minute limit and retry once with
# a simulator reboot. Normal connection takes 30s-5min.
perl -e 'alarm 360; exec @ARGV' -- flutter test integration_test/e2e_test.dart -d "$SIMULATOR" --timeout 10x --dart-define=CI=true || {
echo "First attempt failed or timed out. Rebooting simulator and retrying..."
xcrun simctl shutdown "$SIMULATOR" || true
xcrun simctl boot "$SIMULATOR"
xcrun simctl bootstatus "$SIMULATOR" -b
flutter test integration_test/e2e_test.dart -d "$SIMULATOR" --timeout 10x --dart-define=CI=true
}
- name: Save Firestore Emulator Cache
# Branches can read main cache but main cannot read branch cache. Avoid LRU eviction with main-only cache.
if: github.ref == 'refs/heads/main'
Expand Down
21 changes: 18 additions & 3 deletions .github/workflows/macos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ jobs:
with:
distribution: 'temurin'
java-version: '21'
- uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92
- uses: hendrikmuhs/ccache-action@5ebbd400eff9e74630f759d94ddd7b6c26299639
name: Xcode Compile Cache
with:
key: xcode-cache-${{ runner.os }}
Expand Down Expand Up @@ -102,11 +102,26 @@ jobs:
- name: 'E2E Tests'
working-directory: ${{ matrix.working_directory }}
run: |
flutter test \
# flutter test on macOS CI may exit 1 due to "Failed to foreground app"
# even when all tests pass. Check actual test results to determine success.
set +e
OUTPUT=$(flutter test \
integration_test/e2e_test.dart \
-d macos \
--dart-define=CI=true \
--ignore-timeouts
--timeout 10x 2>&1)
EXIT_CODE=$?
echo "$OUTPUT"
if [ $EXIT_CODE -ne 0 ]; then
if echo "$OUTPUT" | grep -q "Some tests failed" || echo "$OUTPUT" | grep -q "test failed"; then
exit 1
fi
if echo "$OUTPUT" | grep -q "tests passed"; then
echo "All tests passed but flutter test exited with $EXIT_CODE (likely 'Failed to foreground app'). Treating as success."
exit 0
fi
exit $EXIT_CODE
fi
- name: Save Firestore Emulator Cache
continue-on-error: true
# Branches can read main cache but main cannot read branch cache. Avoid LRU eviction with main-only cache.
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ossf-scorecard.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,14 +59,14 @@ jobs:
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
# format to the repository Actions tab.
- name: "Upload artifact"
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: SARIF file
path: results.sarif
retention-days: 5

# Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@28deaeda66b76a05916b6923827895f2b14ab387 # v3.28.16
uses: github/codeql-action/upload-sarif@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5
with:
sarif_file: results.sarif
4 changes: 3 additions & 1 deletion .github/workflows/pr_title.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@ on:

jobs:
validate:
permissions:
pull-requests: read
runs-on: ubuntu-latest
steps:
- uses: amannn/action-semantic-pull-request@0723387faaf9b38adef4775cd42cfd5155ed6017
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Loading
Loading