Crashlytics traces2 - #10260
Conversation
* Add support for exporting captured errors * Clarify flush() usage
* Add support for collection of NextJS server-side errors * typo * Remove next dependency * format * format * documentation * Add next as a devDependency for types * documentation --------- Co-authored-by: Christina Holland <chholland@google.com>
* WIP react support * WIP react support with sub-package * Fix package structure; capture client errors * Implement and test FirebaseTelemetry component * docgen * Refactor to use React component function * Fixed API extraction for subpath * Format * Fix declaration file * Fix public typings * Fix public typings * Fix public typings
# Conflicts: # packages/crashlytics/src/api.test.ts # packages/crashlytics/src/helpers.test.ts # packages/crashlytics/src/register.node.ts # packages/crashlytics/src/service.ts # packages/crashlytics/src/tracing/tracing-provider.ts # packages/crashlytics/src/types.ts # yarn.lock
* modify tracing branch with different crashoption names * Updates so that folks can dev locally * Remove package bump * replace loggingUrl with endpointUrl * yarn format * Modify which tracing instrumentation we use * Attempt to remove dependency error triggered by document load library --------- Co-authored-by: Chris Chestnut <cchestnut@google.com>
* Refactor Github Action per b/485167538 (#9555) Co-authored-by: Ben Knutson <benknutson@google.com> * build(deps): bump lodash in /packages/auth-compat/demo/functions (#9482) Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](lodash/lodash@4.17.21...4.17.23) --- updated-dependencies: - dependency-name: lodash dependency-version: 4.17.23 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump lodash in /packages/auth-compat/demo (#9464) Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](lodash/lodash@4.17.21...4.17.23) --- updated-dependencies: - dependency-name: lodash dependency-version: 4.17.23 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump lodash in /packages/rules-unit-testing/functions (#9463) Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](lodash/lodash@4.17.21...4.17.23) --- updated-dependencies: - dependency-name: lodash dependency-version: 4.17.23 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump lodash in /packages/auth/demo/functions (#9466) Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](lodash/lodash@4.17.21...4.17.23) --- updated-dependencies: - dependency-name: lodash dependency-version: 4.17.23 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): update dependency webpack-dev-server to v5.2.1 [security] (#9078) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update google-github-actions/auth digest to fc21748 (#8879) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps-dev): bump lodash from 4.17.21 to 4.17.23 (#9465) Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](lodash/lodash@4.17.21...4.17.23) --- updated-dependencies: - dependency-name: lodash dependency-version: 4.17.23 dependency-type: direct:development ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Remove health metrics workflows (#9571) * feat(ai): Automatic function calling (#9489) * Updating otel dependencies * format * Updating otel dependencies * Remove fetch and user interaction libaries * Removing node tracing * format * Update angular example to modern standards (#9583) * chore(deps): update dependency @rollup/plugin-strip to v3 (#8745) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency @rollup/plugin-virtual to v3 (#8771) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Use environment for wdr tokens (#9578) * use environment for wdr tokens * missed a file * fix(deps): update dependency @rushstack/node-core-library to v5 (#8816) * fix(deps): update dependency @rushstack/node-core-library to v5 * Fix method name --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Christina Holland <chholland@google.com> * Update logs endpoint w/ location (fixed to `global` for now) --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Google Admin <github-admin@google.com> Co-authored-by: Ben Knutson <benknutson@google.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Christina Holland <chholland@google.com> Co-authored-by: Anit Das <anitdas@google.com> Co-authored-by: Anthony Barone <tonybaroneee@gmail.com> Co-authored-by: Morgan Chen <morganchen12@gmail.com>
* To once and for all deal with complex commit merge/revert history in the crashlytics branch, created a new feature branch for traces and rebased/copied all tracing related changes from crashlytics-tracing on top of the most recent crashlytics branch. * Manually reverted extraneous changes (e.g. accidental changes to eslint) that happened in the legacy crashlytics-tracing that were unnecessary for the tracing feature. * Addressed presubmit errors around formatting. There are a few more presubmit errors around module resolution that will be handled in a follow up. * Finally, ran the playground app locally and verified tracing is working and writing to Cloud via the proxy server.
* adding OTLP Trace Exporter for Firebase Telemetry Server * applied formatting * fixing fetch transport path * providing cleaned url for regex url matching in fetch instrumentation ignore list * resolving comments as well as refactoring for signal variable names * changing names for different variables and allowing proxy to be used as well as telemetry server endpoint * running yarn format * renaming SIGNAL_ATTRIBUTE_KEYS to CRASHLYTICS_ATTRIBUTE_KEYS * fixing fetch transport path for tracing provider * resolving minor issues * running yarn format
* adding resource attributes to tracing provider * refactoring for constant keys and hardcoded values * adding span attribute mappings through support for modern otel conventions * fixing some syntax issues and redundancies * adding logic for creating common span attributes * adding changes for configOptions refactor * making endpointUrl const in tracing provider
#9890) * Instantiate a RootSpanContextManager and save it on CrashlyticsService This is the more Firebase idiomatic way to address the "multiple context managers" issue and ultimately replaces the global singleton approach. This works because _registerComponent is a factory function and is guaranteed to be called once. When we save the RootSpanContextManager object reference on CrashlyticsService, all module callers of RootSpanContextManager will end up with the same instance. * Address feedback
…9901) * Update startNewTrace to be idempotent If there are any FE side effects causing components to be re-rendered, we don't want to create a duplicate trace for the same route/location. * Fix formatting
Co-authored-by: Chris Chestnut <cchestnut@google.com>
* Crashlytics merge main (#9918) * Merge latest changes from main into crashlytics * bumping up rollup-plugin-typescript2 version in crashlytics and remaking yarn.lock file * recovering main package.json configuration * Add script that will check through non-crash packages to see if crash needs to be updated (#9925) Co-authored-by: Chris Chestnut <cchestnut@google.com> * Merge branch "main" into crashlytics2 (#9932) * feat(firestore): Added search stage support for languageCode, offset, limit, and retrievalDepth (#9884) * feat(firestore): Added search stage support for languageCode, offset, limit, and retrievalDepth * Create four-bottles-marry.md * docgen * PR feedback * Update packages/firestore/src/lite-api/stage_options.ts Co-authored-by: Daniel La Rocque <dlarocque@google.com> * Improve ref doc * More search refDoc improvements * Consistent capitalization of search within ref docs * remove deleted rut file * docs devsite --------- Co-authored-by: Daniel La Rocque <dlarocque@google.com> * chore: Update picomatch and rollup-plugin-typescript2 (#9892) * build(deps): bump picomatch from 2.3.1 to 2.3.2 Bumps [picomatch](https://github.com/micromatch/picomatch) from 2.3.1 to 2.3.2. - [Release notes](https://github.com/micromatch/picomatch/releases) - [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md) - [Commits](micromatch/picomatch@2.3.1...2.3.2) --- updated-dependencies: - dependency-name: picomatch dependency-version: 2.3.2 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> * Upgrade picomatch and rollup-plugin-typescript2 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * feat(ai): ImageConfig and FinishReasons (#9819) * fix(firestore): Assertion ID: ca9 (pendingResponses less than 0) caused by target creation race condition (#9842) * implement remote store target mapping * Add spec test for removeTarget race condition * cleanup * Update packages/firestore/src/remote/remote_store.ts Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * cleanup * Create loud-camels-cross.md * Fix PR concerns and new tests * Cleanup possible leak in watchChangeAggregator * fix build issue with spec tests * Fix integration test failure when running against public api * another build fix * Update spec test builder and runner to allow the spec test to specify the index of a target ID used for a query for some watch message types * lint * add Remote and SDK TargetID types * Fix tests for SDK and Remote TargetId types * refactor spec test to add step watchUsesTargetIndex and remove steps where the target index is passed to individual steps * Remove unnecessary values passed to watchRemoves * Removed unused helpers --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * build(deps): bump axios from 1.13.5 to 1.15.2 (#9860) Bumps [axios](https://github.com/axios/axios) from 1.13.5 to 1.15.2. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](axios/axios@v1.13.5...v1.15.2) --- updated-dependencies: - dependency-name: axios dependency-version: 1.15.1 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore: migrate test functions to v2 (#9910) * feat(data-connect): add de-duplication, resume, and intelligent reconnection with backoff (#9905) * chore(data-connect): update documentation and names in stream transport (#9846) * rename in preparation for future changes * finish renaming + updating comments * minor typo fix * feat(data-connect): add query de-duplication to stream transport (#9850) * rename in preparation for future changes * finish renaming + updating comments * minor typo fix * add de-duping - now for tests * add de-duplication tests for invokeQuery * finish invoke operation dedupe tests * add subscribe de-duping as well * add more query dedupe tests * chore(data-connect): clean up streaming tests a bit (#9851) * rename in preparation for future changes * finish renaming + updating comments * minor typo fix * add de-duping - now for tests * add de-duplication tests for invokeQuery * finish invoke operation dedupe tests * add subscribe de-duping as well * add more query dedupe tests * clean up stream tests * clean up promise types in streaming tests * Pasta/bucatini resume refactor (#9885) * add test changes * add transportchanges * finalize changes, run yarn format * finalize changes based on reviewer feedback * feat(data-connect): add prefer resume over execute optimization to stream transport (#9879) * initial implementation - now for testing * finish tests * merge pasta/bucatini-resume-refactor * address reviewer comments * remove old comments * address reviewer comments * feat(data-connect): add intelligent reconnection to streaming transport and harden disconnect/cleanup functionality (#9893) * WIP * first pass * fixing names * tidying up, fixing tests * fixed tests * address reviewer comments * address reviewer comments and harden close/cleanup lifecycle * address reviewer comments * make listener registering and unregistering more robust * merge main, add changeset * chore: fix e2e tests for functions and AI (#9924) * Version Packages (#9923) Release v12.13.0 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update crashlytics package.json with new firebase dependency versions --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Mark Duckworth <1124037+MarkDuckworth@users.noreply.github.com> Co-authored-by: Daniel La Rocque <dlarocque@google.com> Co-authored-by: Christina Holland <chholland@google.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Paul Beusterien <paulbeusterien@google.com> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Co-authored-by: Google Open Source Bot <firebase-oss-bot@google.com> Co-authored-by: Stephen Rosa <84193009+stephenarosaj@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: DellaBitta <drsanta@google.com> * Add crashlytics option for specifying cloud region (#9933) * Add crashlytics to packages/firebase/package.json (#9946) * Merge branch "main" into crashlytics2 (#9941) * feat(firestore): Added search stage support for languageCode, offset, limit, and retrievalDepth (#9884) * feat(firestore): Added search stage support for languageCode, offset, limit, and retrievalDepth * Create four-bottles-marry.md * docgen * PR feedback * Update packages/firestore/src/lite-api/stage_options.ts Co-authored-by: Daniel La Rocque <dlarocque@google.com> * Improve ref doc * More search refDoc improvements * Consistent capitalization of search within ref docs * remove deleted rut file * docs devsite --------- Co-authored-by: Daniel La Rocque <dlarocque@google.com> * chore: Update picomatch and rollup-plugin-typescript2 (#9892) * build(deps): bump picomatch from 2.3.1 to 2.3.2 Bumps [picomatch](https://github.com/micromatch/picomatch) from 2.3.1 to 2.3.2. - [Release notes](https://github.com/micromatch/picomatch/releases) - [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md) - [Commits](micromatch/picomatch@2.3.1...2.3.2) --- updated-dependencies: - dependency-name: picomatch dependency-version: 2.3.2 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> * Upgrade picomatch and rollup-plugin-typescript2 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * feat(ai): ImageConfig and FinishReasons (#9819) * fix(firestore): Assertion ID: ca9 (pendingResponses less than 0) caused by target creation race condition (#9842) * implement remote store target mapping * Add spec test for removeTarget race condition * cleanup * Update packages/firestore/src/remote/remote_store.ts Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * cleanup * Create loud-camels-cross.md * Fix PR concerns and new tests * Cleanup possible leak in watchChangeAggregator * fix build issue with spec tests * Fix integration test failure when running against public api * another build fix * Update spec test builder and runner to allow the spec test to specify the index of a target ID used for a query for some watch message types * lint * add Remote and SDK TargetID types * Fix tests for SDK and Remote TargetId types * refactor spec test to add step watchUsesTargetIndex and remove steps where the target index is passed to individual steps * Remove unnecessary values passed to watchRemoves * Removed unused helpers --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * build(deps): bump axios from 1.13.5 to 1.15.2 (#9860) Bumps [axios](https://github.com/axios/axios) from 1.13.5 to 1.15.2. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](axios/axios@v1.13.5...v1.15.2) --- updated-dependencies: - dependency-name: axios dependency-version: 1.15.1 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore: migrate test functions to v2 (#9910) * feat(data-connect): add de-duplication, resume, and intelligent reconnection with backoff (#9905) * chore(data-connect): update documentation and names in stream transport (#9846) * rename in preparation for future changes * finish renaming + updating comments * minor typo fix * feat(data-connect): add query de-duplication to stream transport (#9850) * rename in preparation for future changes * finish renaming + updating comments * minor typo fix * add de-duping - now for tests * add de-duplication tests for invokeQuery * finish invoke operation dedupe tests * add subscribe de-duping as well * add more query dedupe tests * chore(data-connect): clean up streaming tests a bit (#9851) * rename in preparation for future changes * finish renaming + updating comments * minor typo fix * add de-duping - now for tests * add de-duplication tests for invokeQuery * finish invoke operation dedupe tests * add subscribe de-duping as well * add more query dedupe tests * clean up stream tests * clean up promise types in streaming tests * Pasta/bucatini resume refactor (#9885) * add test changes * add transportchanges * finalize changes, run yarn format * finalize changes based on reviewer feedback * feat(data-connect): add prefer resume over execute optimization to stream transport (#9879) * initial implementation - now for testing * finish tests * merge pasta/bucatini-resume-refactor * address reviewer comments * remove old comments * address reviewer comments * feat(data-connect): add intelligent reconnection to streaming transport and harden disconnect/cleanup functionality (#9893) * WIP * first pass * fixing names * tidying up, fixing tests * fixed tests * address reviewer comments * address reviewer comments and harden close/cleanup lifecycle * address reviewer comments * make listener registering and unregistering more robust * merge main, add changeset * chore: fix e2e tests for functions and AI (#9924) * Version Packages (#9923) Release v12.13.0 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * fix(messaging): wire Firelog delivery metrics flush (startLoggingService) (#9916) * fix(data-connect): Reduce Stream Transport Idle Timeout to Instant (#9936) * reduce idle cooldown to instant * run yarn format and add changeset * update changelog --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Mark Duckworth <1124037+MarkDuckworth@users.noreply.github.com> Co-authored-by: Daniel La Rocque <dlarocque@google.com> Co-authored-by: Christina Holland <chholland@google.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Paul Beusterien <paulbeusterien@google.com> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Co-authored-by: Google Open Source Bot <firebase-oss-bot@google.com> Co-authored-by: Stephen Rosa <84193009+stephenarosaj@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: DellaBitta <drsanta@google.com> Co-authored-by: Kai Wu <zwu52@users.noreply.github.com> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Sai Sakhamuri <ssakhamu@google.com> Co-authored-by: MaesterChestnut <40321652+MaesterChestnut@users.noreply.github.com> Co-authored-by: Chris Chestnut <cchestnut@google.com> Co-authored-by: Mark Duckworth <1124037+MarkDuckworth@users.noreply.github.com> Co-authored-by: Daniel La Rocque <dlarocque@google.com> Co-authored-by: Christina Holland <chholland@google.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Paul Beusterien <paulbeusterien@google.com> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Co-authored-by: Google Open Source Bot <firebase-oss-bot@google.com> Co-authored-by: Stephen Rosa <84193009+stephenarosaj@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: DellaBitta <drsanta@google.com> Co-authored-by: Kai Wu <zwu52@users.noreply.github.com>
…9939) * switching out startNewTrace for logViewBoundary on location change * yarn format * changing start trace call to log view boundary call * running yarn format * adding newPathNavigation param in function comment * adding common log attributes to be accessible for view boundary logs * adding small changes for readability * adding back removed line * removing TODO * adding comment for shared function * changing new path name * refactoring options assignment and startnewSession attributes retrieval * yarn format * fixing merge conflict * yarn format
* Merge latest changes from crashlytics2 into crashlytics-traces2 * Update tracing-provider to use the new `AttributesStore` for installation id
* implementation of background-network root span * fixing casting logic * incorporating feedback
* adding tracing provider tests * changing tests * splitting fetch and xhr instrumentation tests * adjusting wordings
* Squashed commit of the following:
commit 4ec18b527104beb312222e2e35f82d8c3ea3cda4
Author: Rebecca He <31138589+rebehe@users.noreply.github.com>
Date: Tue Jun 16 09:38:20 2026 -0400
Merge main into crashlytics2 (#10082)
* feat(firestore): Added search stage support for languageCode, offset, limit, and retrievalDepth (#9884)
* feat(firestore): Added search stage support for languageCode, offset, limit, and retrievalDepth
* Create four-bottles-marry.md
* docgen
* PR feedback
* Update packages/firestore/src/lite-api/stage_options.ts
Co-authored-by: Daniel La Rocque <dlarocque@google.com>
* Improve ref doc
* More search refDoc improvements
* Consistent capitalization of search within ref docs
* remove deleted rut file
* docs devsite
---------
Co-authored-by: Daniel La Rocque <dlarocque@google.com>
* chore: Update picomatch and rollup-plugin-typescript2 (#9892)
* build(deps): bump picomatch from 2.3.1 to 2.3.2
Bumps [picomatch](https://github.com/micromatch/picomatch) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)
---
updated-dependencies:
- dependency-name: picomatch
dependency-version: 2.3.2
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
* Upgrade picomatch and rollup-plugin-typescript2
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* feat(ai): ImageConfig and FinishReasons (#9819)
* fix(firestore): Assertion ID: ca9 (pendingResponses less than 0) caused by target creation race condition (#9842)
* implement remote store target mapping
* Add spec test for removeTarget race condition
* cleanup
* Update packages/firestore/src/remote/remote_store.ts
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* cleanup
* Create loud-camels-cross.md
* Fix PR concerns and new tests
* Cleanup possible leak in watchChangeAggregator
* fix build issue with spec tests
* Fix integration test failure when running against public api
* another build fix
* Update spec test builder and runner to allow the spec test to specify the index of a target ID used for a query for some watch message types
* lint
* add Remote and SDK TargetID types
* Fix tests for SDK and Remote TargetId types
* refactor spec test to add step watchUsesTargetIndex and remove steps where the target index is passed to individual steps
* Remove unnecessary values passed to watchRemoves
* Removed unused helpers
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* build(deps): bump axios from 1.13.5 to 1.15.2 (#9860)
Bumps [axios](https://github.com/axios/axios) from 1.13.5 to 1.15.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.13.5...v1.15.2)
---
updated-dependencies:
- dependency-name: axios
dependency-version: 1.15.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore: migrate test functions to v2 (#9910)
* feat(data-connect): add de-duplication, resume, and intelligent reconnection with backoff (#9905)
* chore(data-connect): update documentation and names in stream transport (#9846)
* rename in preparation for future changes
* finish renaming + updating comments
* minor typo fix
* feat(data-connect): add query de-duplication to stream transport (#9850)
* rename in preparation for future changes
* finish renaming + updating comments
* minor typo fix
* add de-duping - now for tests
* add de-duplication tests for invokeQuery
* finish invoke operation dedupe tests
* add subscribe de-duping as well
* add more query dedupe tests
* chore(data-connect): clean up streaming tests a bit (#9851)
* rename in preparation for future changes
* finish renaming + updating comments
* minor typo fix
* add de-duping - now for tests
* add de-duplication tests for invokeQuery
* finish invoke operation dedupe tests
* add subscribe de-duping as well
* add more query dedupe tests
* clean up stream tests
* clean up promise types in streaming tests
* Pasta/bucatini resume refactor (#9885)
* add test changes
* add transportchanges
* finalize changes, run yarn format
* finalize changes based on reviewer feedback
* feat(data-connect): add prefer resume over execute optimization to stream transport (#9879)
* initial implementation - now for testing
* finish tests
* merge pasta/bucatini-resume-refactor
* address reviewer comments
* remove old comments
* address reviewer comments
* feat(data-connect): add intelligent reconnection to streaming transport and harden disconnect/cleanup functionality (#9893)
* WIP
* first pass
* fixing names
* tidying up, fixing tests
* fixed tests
* address reviewer comments
* address reviewer comments and harden close/cleanup lifecycle
* address reviewer comments
* make listener registering and unregistering more robust
* merge main, add changeset
* chore: fix e2e tests for functions and AI (#9924)
* Version Packages (#9923)
Release v12.13.0
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* fix(messaging): wire Firelog delivery metrics flush (startLoggingService) (#9916)
* fix(data-connect): Reduce Stream Transport Idle Timeout to Instant (#9936)
* reduce idle cooldown to instant
* run yarn format and add changeset
* update changelog
* fix(ai): Fix sendMessageStream bug that sends duplicate user turns (#9956)
* build(deps): bump protobufjs from 7.5.5 to 7.5.8 in /e2e/smoke-tests (#9958)
Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.5.5 to 7.5.8.
- [Release notes](https://github.com/protobufjs/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/protobufjs-v7.5.8/CHANGELOG.md)
- [Commits](https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.5.8)
---
updated-dependencies:
- dependency-name: protobufjs
dependency-version: 7.5.8
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* test(firestore): skip database source test that is timing out (#9966)
* test(firestore): skip database source test that is timing out
The test database keeps growing, causing this tests executionn time to
keep growing, repeatedly exceeding new timeouts we set. For now, let's
just skip this test.
* add eslint disable
* fix(auth): retry IndexedDB availability check on startup failure (#9845)
* fix(auth): retry IndexedDB availability check on startup failure
In environments like Chrome Extension Manifest V3 Service Workers, the initial IndexedDB transaction upon a cold start can sometimes drop or timeout. Previously, `_isAvailable()` would immediately catch the error, assume IndexedDB is broken, and silently fall back to `inMemoryPersistence`.
This updates `_isAvailable()` to use the `_withRetries()` helper, ensuring it benefits from the same retry logic as actual storage operations. This prevents the SDK from incorrectly abandoning existing IndexedDB auth state.
Fixes #9732
* style(auth): run yarn format
* chore: add changeset for IndexedDB availability check retry
* fix(auth): robust IndexedDB connection handling and test stability
* build(deps-dev): bump protobufjs in /packages/firestore (#9960)
Merge rules bypassed due to errant format diff.
Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.5.5 to 7.5.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/protobufjs/protobuf.js/releases">protobufjs's releases</a>.</em></p>
<blockquote>
<h2>protobufjs: v7.5.6</h2>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.5.6">7.5.6</a> (2026-04-27)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Backport input hardening and CLI fixes to 7.x (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2173">#2173</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/75392ea1b78bdc4faba027b5db44ad7c50e9c454">75392ea</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/protobufjs/protobuf.js/blob/protobufjs-v7.5.6/CHANGELOG.md">protobufjs's changelog</a>.</em></p>
<blockquote>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.5.6">7.5.6</a> (2026-04-27)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Backport input hardening and CLI fixes to 7.x (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2173">#2173</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/75392ea1b78bdc4faba027b5db44ad7c50e9c454">75392ea</a>)</li>
</ul>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.3...protobufjs-v7.5.4">7.5.4</a> (2025-08-15)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>invalid syntax in descriptor.proto (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2092">#2092</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/5a3769a465fead089a533ad55c21d069299df760">5a3769a</a>)</li>
</ul>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.2...protobufjs-v7.5.3">7.5.3</a> (2025-05-28)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>descriptor extensions handling post-editions (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2075">#2075</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/6e255d4ad6982cc857f26e1731c2cedcf5796f68">6e255d4</a>)</li>
</ul>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.1...protobufjs-v7.5.2">7.5.2</a> (2025-05-14)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>ensure that types are always resolved (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2068">#2068</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/4b51cb2b8450b77f9f5de1c562e7fae93b19d040">4b51cb2</a>)</li>
</ul>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.0...protobufjs-v7.5.1">7.5.1</a> (2025-05-08)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>optimize regressions from editions implementations (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2066">#2066</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/6406d4c18afae309fc7b5f4a24d9674d85da180b">6406d4c</a>)</li>
<li>reserved field inside group blocks fail parsing (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2058">#2058</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/56782bff0c4b5132806eb1a6bc4d08f930c4aaad">56782bf</a>)</li>
</ul>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.4.0...protobufjs-v7.5.0">7.5.0</a> (2025-04-15)</h2>
<h3>Features</h3>
<ul>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/f04ded3a03a3ddd383f0228e2fe2627a51f31aa3">f04ded3</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/ac9a3b9fe3134d48187e41b08d54ffaceddc6c1b">ac9a3b9</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/e5ca5c84e326699e10258367883a54934e0bfe14">e5ca5c8</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/a84409b47f9ba0dba56da1af8054fb54f85d85a1">a84409b</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/9c5a178c4b59e0aa65ecac0bd7420171213b2ff9">9c5a178</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/b2c686721e3b63d092419fa1cbe58e1deb89534e">b2c6867</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/60f3e51087ca2c247473410f39331e1c766aefef">60f3e51</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/a6563617de04d510d6e8865eb6c5067f10247f64">a656361</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/869a95b1e5f553c76243aac45619061407a41084">869a95b</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/2189e5beeca6a70e4c104dfdb9fb8200bc5f81fe"><code>2189e5b</code></a> chore: release protobufjs-v7.x (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2174">#2174</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/75392ea1b78bdc4faba027b5db44ad7c50e9c454"><code>75392ea</code></a> fix: Backport input hardening and CLI fixes to 7.x (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2173">#2173</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/8af8d7c0e9800879625f7d0d4a7fb51beb4410cd"><code>8af8d7c</code></a> chore(ci): Fix 7.x release please configuration (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2169">#2169</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/e92ca42244ad67203b48d836290062dae037ead6"><code>e92ca42</code></a> chore(ci): Enable release-please for 7.x (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2166">#2166</a>)</li>
<li>See full diff in <a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.5.6">compare view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a href="https://www.npmjs.com/~GitHub%20Actions">GitHub Actions</a>, a new releaser for protobufjs since your current version.</p>
</details>
<br />
* build(deps): bump @protobufjs/utf8 (#9952)
Bumps [@protobufjs/utf8](https://github.com/dcodeIO/protobuf.js) from 1.1.0 to 1.1.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dcodeIO/protobuf.js/releases">@protobufjs/utf8's releases</a>.</em></p>
<blockquote>
<h2>protobufjs-cli: v1.1.1</h2>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-cli-v1.1.0...protobufjs-cli-v1.1.1">1.1.1</a> (2023-02-02)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>cli:</strong> fix relative path to Google pb files (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/1859">#1859</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/e42eea4868b11f4a07934804a56683321ed191e2">e42eea4</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/644d588c0495da6a570344248e1b5af901bc3b0c"><code>644d588</code></a> chore: release master (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1865">#1865</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/e42eea4868b11f4a07934804a56683321ed191e2"><code>e42eea4</code></a> fix(cli): fix relative path to Google pb files (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1859">#1859</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/dce9a2ef92d363752e40b295b0da9bd178f82e83"><code>dce9a2e</code></a> fix: use bundled filename to fix common pb includes (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1860">#1860</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/64e8936ad9f73c68b3fa1e57857dd38323b5a745"><code>64e8936</code></a> fix: use ES5 style function syntax (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1830">#1830</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/4489fa771464bcb49b57149760e9cc4131e8077e"><code>4489fa7</code></a> Revert "fix: error should be thrown (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1817">#1817</a>)" (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1864">#1864</a>)</li>
<li>See full diff in <a href="https://github.com/dcodeIO/protobuf.js/compare/protobufjs-cli-v1.1.0...protobufjs-cli-v1.1.1">compare view</a></li>
</ul>
</details>
<br />
* build(deps): bump @protobufjs/utf8 (#9949)
Bumps [@protobufjs/utf8](https://github.com/dcodeIO/protobuf.js) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/dcodeIO/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/dcodeIO/protobuf.js/compare/protobufjs-cli-v1.1.0...protobufjs-cli-v1.1.1)
---
updated-dependencies:
- dependency-name: "@protobufjs/utf8"
dependency-version: 1.1.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* build(deps): bump protobufjs from 7.5.5 to 7.5.8 (#9973)
Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.5.5 to 7.5.8.
- [Release notes](https://github.com/protobufjs/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/protobufjs-v7.5.8/CHANGELOG.md)
- [Commits](https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.5.8)
---
updated-dependencies:
- dependency-name: protobufjs
dependency-version: 7.5.8
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* build(deps-dev): bump protobufjs-cli from 1.1.3 to 1.2.1 (#9955)
Bumps [protobufjs-cli](https://github.com/protobufjs/protobuf.js) from 1.1.3 to 1.2.1.
- [Release notes](https://github.com/protobufjs/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/protobufjs/protobuf.js/compare/protobufjs-cli-v1.1.3...protobufjs-cli-v1.2.1)
---
updated-dependencies:
- dependency-name: protobufjs-cli
dependency-version: 1.2.1
dependency-type: direct:development
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* build(deps): bump protobufjs from 7.4.0 to 7.5.9 in /e2e/data-connect (#9977)
Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.4.0 to 7.5.9.
- [Release notes](https://github.com/protobufjs/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/protobufjs-v7.5.9/CHANGELOG.md)
- [Commits](https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.4.0...protobufjs-v7.5.9)
---
updated-dependencies:
- dependency-name: protobufjs
dependency-version: 7.5.9
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* feature(firestore): added minimum and maximum FieldValue operations (#9913)
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* fix(changelog-generator): fix postinstall build failure (#9948)
The fix has two parts:
1. Add `"types": ["node"]` to tsconfig.
2. Fix an incorrect type cast in `index.ts`. The parsed GitHub API response
was being cast to the DOM `Response` type to access its `.body` property,
which is wrong — `Response.body` is a `ReadableStream`, not a string. The
actual value is the parsed JSON from the GitHub PR API, whose `body` field
is `string | null` per the API schema. Updated the cast accordingly.
Resolves #9947
* Feat/messaging api series (#9917)
* fix(app-check): Fix getLimitedUseToken() (#9987)
* fix(remoteconfig): Stopping last running experiment must call updateActiveExperiments (#9981)
Context: Currently, experiments are updated at activation only if the fetch response explicitly contains an experiments payload.
Problem: When the last running experiment is stopped, the fetch response returns experiments as undefined. This causes the client to skip the update call entirely, meaning the local state never registers that the experiment was stopped.
Fix: If fetch response does not contain experiments, pass an empty list to update
* fix(firestore): improved robustness and logging in query listen stream creation and re-creation (#9985)
* implement onSubChange for FID-based registration (#9996)
* implement onSubChange for FID-based registration
* Persist VAPID key in FID registration metadata to fix re-registration issue
* Enforce mutual exclusivity of token and FID registrations in DB layer
* Notify clients in onSubChange on successful FID refresh
- Update onSubChange to notify window clients when FID registration is refreshed. Previously it did not notify clients.
- Update refreshFidRegistrationIfStored to return the current FID.
- Update onSubChange to use the returned FID and only notify if the refresh was successful.
- Add unit tests to verify client notification on success, failure, and when not registered.
- Fix a lint error in window-listener.ts by adding the FidRegisteredPayload interface.
---------
Co-authored-by: Kai Wu <zwu52@users.noreply.github.com>
* feat(ai)!: Add explicit `initializeDeviceModel()` method when using hybrid (#9800)
* feat(ai): Update tags to mark hybrid inference features as GA (#9926)
* Version Packages (#10004)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* fix(auth,app-check): Fix Auth/AppCheck ReCAPTCHA Enterprise conflict (#9991)
* fix(remoteconfig) Support ABT realtime when variant value matches default value of parameter
When an experiment is added whose variant value matches default value, the parameter key is not listed as updated. This becomes a problem when the client app calls activate only on config change as the experiment will not get started
Before fix - https://screencast.googleplex.com/cast/NDgxNTYwNjU0NDA3MjcwNHxiOWY1MmIyNy1iMQ
After fix - https://screencast.googleplex.com/cast/NDcxODUwODQ0MDAyNzEzNnwzODc2YTRlMC01MA
* chore: Add explicit types to tsconfig (#10015)
* Update CODEOWNERS for auth packages (#10001)
* feat(app-check,app): Add ability for App Check to initialize with a default provider (#10023)
* chore(ci): make all firestore integration tests optional (#10028)
* merge off pipeline into main (#9929)
* chore(ci): make all firestore integration tests optional
* fix: align expressions and pipelines, address review comments, update yarn.lock, and fix package versions
* chore: update yarn.lock after merge
* fix: restore firestore package version and devDependencies to 4.15.0
* fix(ai): format systemInstruction string in ChatSession constructor (#10026)
* fix(ai): format systemInstruction string in ChatSession constructor
* adding a changeset file
* test(ai): verify systemInstruction in sendMessage and sendMessageStream
* remove extra folder in changeset
* remove extra changeset file
* restore deleted file
* adding check if systemInstruction is not null/undefined
* simplify systemInstruction assignment
* fix lint error
* revert to original structure
* docs(firestore): fix formatting for pipelines docs (#9908)
* docs(firestore): fix formatting for docs code snippets
- Fixes `findNearest` example doc formatting, which was causing
formatting to be lost for all subsequent APIs in the TOC in devsite.
- Removes `Example:` and `<p>Example:` from before all code examples,
since we use `@example` for this.
* add changeset firebase
* Update packages/firestore/src/lite-api/pipeline.ts
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* update docs
* docs(firestore): fix ref doc issues for piplines (#9912)
* docs(firestore): fix ref doc issues for piplines
* Update packages/firestore/src/lite-api/pipeline.ts
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* Update packages/firestore/src/lite-api/pipeline.ts
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* docs-devsite
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* docs(firestore): add missing `typescript` formatting to docs (#9909)
Adds `typescript` code formatting to the code examples in docs, where
they're missing.
* cleanup
* remove changeset
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Mark Duckworth <1124037+MarkDuckworth@users.noreply.github.com>
* Support API key referrer restrictions by changing the Auth SDK referrer policy (#10049)
* feat(auth): Update referrer policy to strict-origin-when-cross-origin
* chore: Add changeset tame-yaks-yawn.md
* Fix querystring to always use apiKey even if a key is specified in the request (#10048)
* Fix querystring to always use apiKey even if a key is specified in the request
* Update packages/auth/src/api/index.ts
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* Fix test helper URL generation to match new querystring order
* Run yarn format
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Mark Duckworth <1124037+MarkDuckworth@users.noreply.github.com>
Co-authored-by: Daniel La Rocque <dlarocque@google.com>
Co-authored-by: Christina Holland <chholland@google.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paul Beusterien <paulbeusterien@google.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Google Open Source Bot <firebase-oss-bot@google.com>
Co-authored-by: Stephen Rosa <84193009+stephenarosaj@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: DellaBitta <drsanta@google.com>
Co-authored-by: Kai Wu <zwu52@users.noreply.github.com>
Co-authored-by: macastelaz <34776182+macastelaz@users.noreply.github.com>
Co-authored-by: swseverance <swseverance@gmail.com>
Co-authored-by: Athira M <athiramanu9400@gmail.com>
Co-authored-by: Doris-Ge <dorisge@google.com>
Co-authored-by: wu-hui <53845758+wu-hui@users.noreply.github.com>
Co-authored-by: sedanah-m <mashhour@google.com>
commit 6868f5fdcb95dcc3cb55bad6f03e86cfeeaf97db
Author: Rebecca He <31138589+rebehe@users.noreply.github.com>
Date: Mon Jun 15 14:48:15 2026 -0400
Prefactor `AttributesStore` to more cleanly support span attributes (#10079)
commit 558ee841dbd889dd0d7812613a7e553687b80517
Author: Anthony Barone <tonybaroneee@gmail.com>
Date: Mon Jun 15 08:49:18 2026 -0400
Update crashlytics otel log attributes (#10062)
commit e6637173bc7e24630987b88ea9614a744509e9ae
Author: Rebecca He <31138589+rebehe@users.noreply.github.com>
Date: Fri Jun 12 14:16:50 2026 -0400
Migrate route path provider into `AttributesStore` (#10060)
commit 1e203bcb02c248567320b7efc28dabd9b4f81928
Author: Rebecca He <31138589+rebehe@users.noreply.github.com>
Date: Fri Jun 12 11:31:32 2026 -0400
Migrate all common/log attributes and logic into `AttributesStore` (#10053)
commit 5421eb9331f1fa8f9a188a3c3a6f3c577f069b50
Author: Rebecca He <31138589+rebehe@users.noreply.github.com>
Date: Fri Jun 12 09:34:45 2026 -0400
Migrate installation id provider logic into new `AttributeStore` (#10054)
commit 48f2deb81f97e51de31aacf9700a53e0af132ca7
Author: MaesterChestnut <40321652+MaesterChestnut@users.noreply.github.com>
Date: Thu Jun 4 11:26:46 2026 -0400
Crashlytics merge main (#10034)
commit 06423a1af4ff4017f76a8cd0d0f381f3c0bf1660
Author: Christina Holland <chholland@google.com>
Date: Tue May 26 17:44:58 2026 -0700
Update release workflows to use NPM publish token from Github secrets (#10006)
commit c9f1064327463e7a16e03fd0c420336fd99cee9b
Author: Anthony Barone <tonybaroneee@gmail.com>
Date: Tue May 26 20:42:09 2026 -0400
Add crashlytics as export in packages/firebase package.json (#10005)
commit 3dd4e65d9746cadbd7e846149f393883a602fcb9
Author: Anthony Barone <tonybaroneee@gmail.com>
Date: Tue May 26 18:26:20 2026 -0400
Add default telemetry endpoint for crashlytics (#10003)
commit 751dd8120f95ad1b6be215ff126eec5dfb6fd7df
Author: Anthony Barone <tonybaroneee@gmail.com>
Date: Thu May 21 08:43:42 2026 -0400
Merge branch "main" into crashlytics2 (#9989)
* feat(firestore): Added search stage support for languageCode, offset, limit, and retrievalDepth (#9884)
* feat(firestore): Added search stage support for languageCode, offset, limit, and retrievalDepth
* Create four-bottles-marry.md
* docgen
* PR feedback
* Update packages/firestore/src/lite-api/stage_options.ts
Co-authored-by: Daniel La Rocque <dlarocque@google.com>
* Improve ref doc
* More search refDoc improvements
* Consistent capitalization of search within ref docs
* remove deleted rut file
* docs devsite
---------
Co-authored-by: Daniel La Rocque <dlarocque@google.com>
* chore: Update picomatch and rollup-plugin-typescript2 (#9892)
* build(deps): bump picomatch from 2.3.1 to 2.3.2
Bumps [picomatch](https://github.com/micromatch/picomatch) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)
---
updated-dependencies:
- dependency-name: picomatch
dependency-version: 2.3.2
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
* Upgrade picomatch and rollup-plugin-typescript2
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* feat(ai): ImageConfig and FinishReasons (#9819)
* fix(firestore): Assertion ID: ca9 (pendingResponses less than 0) caused by target creation race condition (#9842)
* implement remote store target mapping
* Add spec test for removeTarget race condition
* cleanup
* Update packages/firestore/src/remote/remote_store.ts
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* cleanup
* Create loud-camels-cross.md
* Fix PR concerns and new tests
* Cleanup possible leak in watchChangeAggregator
* fix build issue with spec tests
* Fix integration test failure when running against public api
* another build fix
* Update spec test builder and runner to allow the spec test to specify the index of a target ID used for a query for some watch message types
* lint
* add Remote and SDK TargetID types
* Fix tests for SDK and Remote TargetId types
* refactor spec test to add step watchUsesTargetIndex and remove steps where the target index is passed to individual steps
* Remove unnecessary values passed to watchRemoves
* Removed unused helpers
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* build(deps): bump axios from 1.13.5 to 1.15.2 (#9860)
Bumps [axios](https://github.com/axios/axios) from 1.13.5 to 1.15.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.13.5...v1.15.2)
---
updated-dependencies:
- dependency-name: axios
dependency-version: 1.15.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore: migrate test functions to v2 (#9910)
* feat(data-connect): add de-duplication, resume, and intelligent reconnection with backoff (#9905)
* chore(data-connect): update documentation and names in stream transport (#9846)
* rename in preparation for future changes
* finish renaming + updating comments
* minor typo fix
* feat(data-connect): add query de-duplication to stream transport (#9850)
* rename in preparation for future changes
* finish renaming + updating comments
* minor typo fix
* add de-duping - now for tests
* add de-duplication tests for invokeQuery
* finish invoke operation dedupe tests
* add subscribe de-duping as well
* add more query dedupe tests
* chore(data-connect): clean up streaming tests a bit (#9851)
* rename in preparation for future changes
* finish renaming + updating comments
* minor typo fix
* add de-duping - now for tests
* add de-duplication tests for invokeQuery
* finish invoke operation dedupe tests
* add subscribe de-duping as well
* add more query dedupe tests
* clean up stream tests
* clean up promise types in streaming tests
* Pasta/bucatini resume refactor (#9885)
* add test changes
* add transportchanges
* finalize changes, run yarn format
* finalize changes based on reviewer feedback
* feat(data-connect): add prefer resume over execute optimization to stream transport (#9879)
* initial implementation - now for testing
* finish tests
* merge pasta/bucatini-resume-refactor
* address reviewer comments
* remove old comments
* address reviewer comments
* feat(data-connect): add intelligent reconnection to streaming transport and harden disconnect/cleanup functionality (#9893)
* WIP
* first pass
* fixing names
* tidying up, fixing tests
* fixed tests
* address reviewer comments
* address reviewer comments and harden close/cleanup lifecycle
* address reviewer comments
* make listener registering and unregistering more robust
* merge main, add changeset
* chore: fix e2e tests for functions and AI (#9924)
* Version Packages (#9923)
Release v12.13.0
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* fix(messaging): wire Firelog delivery metrics flush (startLoggingService) (#9916)
* fix(data-connect): Reduce Stream Transport Idle Timeout to Instant (#9936)
* reduce idle cooldown to instant
* run yarn format and add changeset
* update changelog
* fix(ai): Fix sendMessageStream bug that sends duplicate user turns (#9956)
* build(deps): bump protobufjs from 7.5.5 to 7.5.8 in /e2e/smoke-tests (#9958)
Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.5.5 to 7.5.8.
- [Release notes](https://github.com/protobufjs/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/protobufjs-v7.5.8/CHANGELOG.md)
- [Commits](https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.5.8)
---
updated-dependencies:
- dependency-name: protobufjs
dependency-version: 7.5.8
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* test(firestore): skip database source test that is timing out (#9966)
* test(firestore): skip database source test that is timing out
The test database keeps growing, causing this tests executionn time to
keep growing, repeatedly exceeding new timeouts we set. For now, let's
just skip this test.
* add eslint disable
* fix(auth): retry IndexedDB availability check on startup failure (#9845)
* fix(auth): retry IndexedDB availability check on startup failure
In environments like Chrome Extension Manifest V3 Service Workers, the initial IndexedDB transaction upon a cold start can sometimes drop or timeout. Previously, `_isAvailable()` would immediately catch the error, assume IndexedDB is broken, and silently fall back to `inMemoryPersistence`.
This updates `_isAvailable()` to use the `_withRetries()` helper, ensuring it benefits from the same retry logic as actual storage operations. This prevents the SDK from incorrectly abandoning existing IndexedDB auth state.
Fixes #9732
* style(auth): run yarn format
* chore: add changeset for IndexedDB availability check retry
* fix(auth): robust IndexedDB connection handling and test stability
* build(deps-dev): bump protobufjs in /packages/firestore (#9960)
Merge rules bypassed due to errant format diff.
Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.5.5 to 7.5.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/protobufjs/protobuf.js/releases">protobufjs's releases</a>.</em></p>
<blockquote>
<h2>protobufjs: v7.5.6</h2>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.5.6">7.5.6</a> (2026-04-27)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Backport input hardening and CLI fixes to 7.x (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2173">#2173</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/75392ea1b78bdc4faba027b5db44ad7c50e9c454">75392ea</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/protobufjs/protobuf.js/blob/protobufjs-v7.5.6/CHANGELOG.md">protobufjs's changelog</a>.</em></p>
<blockquote>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.5.6">7.5.6</a> (2026-04-27)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Backport input hardening and CLI fixes to 7.x (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2173">#2173</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/75392ea1b78bdc4faba027b5db44ad7c50e9c454">75392ea</a>)</li>
</ul>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.3...protobufjs-v7.5.4">7.5.4</a> (2025-08-15)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>invalid syntax in descriptor.proto (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2092">#2092</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/5a3769a465fead089a533ad55c21d069299df760">5a3769a</a>)</li>
</ul>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.2...protobufjs-v7.5.3">7.5.3</a> (2025-05-28)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>descriptor extensions handling post-editions (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2075">#2075</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/6e255d4ad6982cc857f26e1731c2cedcf5796f68">6e255d4</a>)</li>
</ul>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.1...protobufjs-v7.5.2">7.5.2</a> (2025-05-14)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>ensure that types are always resolved (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2068">#2068</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/4b51cb2b8450b77f9f5de1c562e7fae93b19d040">4b51cb2</a>)</li>
</ul>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.0...protobufjs-v7.5.1">7.5.1</a> (2025-05-08)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>optimize regressions from editions implementations (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2066">#2066</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/6406d4c18afae309fc7b5f4a24d9674d85da180b">6406d4c</a>)</li>
<li>reserved field inside group blocks fail parsing (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2058">#2058</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/56782bff0c4b5132806eb1a6bc4d08f930c4aaad">56782bf</a>)</li>
</ul>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.4.0...protobufjs-v7.5.0">7.5.0</a> (2025-04-15)</h2>
<h3>Features</h3>
<ul>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/f04ded3a03a3ddd383f0228e2fe2627a51f31aa3">f04ded3</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/ac9a3b9fe3134d48187e41b08d54ffaceddc6c1b">ac9a3b9</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/e5ca5c84e326699e10258367883a54934e0bfe14">e5ca5c8</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/a84409b47f9ba0dba56da1af8054fb54f85d85a1">a84409b</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/9c5a178c4b59e0aa65ecac0bd7420171213b2ff9">9c5a178</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/b2c686721e3b63d092419fa1cbe58e1deb89534e">b2c6867</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/60f3e51087ca2c247473410f39331e1c766aefef">60f3e51</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/a6563617de04d510d6e8865eb6c5067f10247f64">a656361</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/869a95b1e5f553c76243aac45619061407a41084">869a95b</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/2189e5beeca6a70e4c104dfdb9fb8200bc5f81fe"><code>2189e5b</code></a> chore: release protobufjs-v7.x (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2174">#2174</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/75392ea1b78bdc4faba027b5db44ad7c50e9c454"><code>75392ea</code></a> fix: Backport input hardening and CLI fixes to 7.x (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2173">#2173</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/8af8d7c0e9800879625f7d0d4a7fb51beb4410cd"><code>8af8d7c</code></a> chore(ci): Fix 7.x release please configuration (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2169">#2169</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/e92ca42244ad67203b48d836290062dae037ead6"><code>e92ca42</code></a> chore(ci): Enable release-please for 7.x (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2166">#2166</a>)</li>
<li>See full diff in <a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.5.6">compare view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a href="https://www.npmjs.com/~GitHub%20Actions">GitHub Actions</a>, a new releaser for protobufjs since your current version.</p>
</details>
<br />
* build(deps): bump @protobufjs/utf8 (#9952)
Bumps [@protobufjs/utf8](https://github.com/dcodeIO/protobuf.js) from 1.1.0 to 1.1.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dcodeIO/protobuf.js/releases">@protobufjs/utf8's releases</a>.</em></p>
<blockquote>
<h2>protobufjs-cli: v1.1.1</h2>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-cli-v1.1.0...protobufjs-cli-v1.1.1">1.1.1</a> (2023-02-02)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>cli:</strong> fix relative path to Google pb files (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/1859">#1859</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/e42eea4868b11f4a07934804a56683321ed191e2">e42eea4</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/644d588c0495da6a570344248e1b5af901bc3b0c"><code>644d588</code></a> chore: release master (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1865">#1865</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/e42eea4868b11f4a07934804a56683321ed191e2"><code>e42eea4</code></a> fix(cli): fix relative path to Google pb files (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1859">#1859</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/dce9a2ef92d363752e40b295b0da9bd178f82e83"><code>dce9a2e</code></a> fix: use bundled filename to fix common pb includes (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1860">#1860</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/64e8936ad9f73c68b3fa1e57857dd38323b5a745"><code>64e8936</code></a> fix: use ES5 style function syntax (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1830">#1830</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/4489fa771464bcb49b57149760e9cc4131e8077e"><code>4489fa7</code></a> Revert "fix: error should be thrown (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1817">#1817</a>)" (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1864">#1864</a>)</li>
<li>See full diff in <a href="https://github.com/dcodeIO/protobuf.js/compare/protobufjs-cli-v1.1.0...protobufjs-cli-v1.1.1">compare view</a></li>
</ul>
</details>
<br />
* build(deps): bump @protobufjs/utf8 (#9949)
Bumps [@protobufjs/utf8](https://github.com/dcodeIO/protobuf.js) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/dcodeIO/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/dcodeIO/protobuf.js/compare/protobufjs-cli-v1.1.0...protobufjs-cli-v1.1.1)
---
updated-dependencies:
- dependency-name: "@protobufjs/utf8"
dependency-version: 1.1.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* build(deps): bump protobufjs from 7.5.5 to 7.5.8 (#9973)
Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.5.5 to 7.5.8.
- [Release notes](https://github.com/protobufjs/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/protobufjs-v7.5.8/CHANGELOG.md)
- [Commits](https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.5.8)
---
updated-dependencies:
- dependency-name: protobufjs
dependency-version: 7.5.8
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* build(deps-dev): bump protobufjs-cli from 1.1.3 to 1.2.1 (#9955)
Bumps [protobufjs-cli](https://github.com/protobufjs/protobuf.js) from 1.1.3 to 1.2.1.
- [Release notes](https://github.com/protobufjs/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/protobufjs/protobuf.js/compare/protobufjs-cli-v1.1.3...protobufjs-cli-v1.2.1)
---
updated-dependencies:
- dependency-name: protobufjs-cli
dependency-version: 1.2.1
dependency-type: direct:development
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* build(deps): bump protobufjs from 7.4.0 to 7.5.9 in /e2e/data-connect (#9977)
Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.4.0 to 7.5.9.
- [Release notes](https://github.com/protobufjs/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/protobufjs-v7.5.9/CHANGELOG.md)
- [Commits](https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.4.0...protobufjs-v7.5.9)
---
updated-dependencies:
- dependency-name: protobufjs
dependency-version: 7.5.9
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* feature(firestore): added minimum and maximum FieldValue operations (#9913)
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* fix(changelog-generator): fix postinstall build failure (#9948)
The fix has two parts:
1. Add `"types": ["node"]` to tsconfig.
2. Fix an incorrect type cast in `index.ts`. The parsed GitHub API response
was being cast to the DOM `Response` type to access its `.body` property,
which is wrong — `Response.body` is a `ReadableStream`, not a string. The
actual value is the parsed JSON from the GitHub PR API, whose `body` field
is `string | null` per the API schema. Updated the cast accordingly.
Resolves #9947
* Feat/messaging api series (#9917)
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Mark Duckworth <1124037+MarkDuckworth@users.noreply.github.com>
Co-authored-by: Daniel La Rocque <dlarocque@google.com>
Co-authored-by: Christina Holland <chholland@google.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paul Beusterien <paulbeusterien@google.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Google Open Source Bot <firebase-oss-bot@google.com>
Co-authored-by: Stephen Rosa <84193009+stephenarosaj@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: DellaBitta <drsanta@google.com>
Co-authored-by: Kai Wu <zwu52@users.noreply.github.com>
Co-authored-by: macastelaz <34776182+macastelaz@users.noreply.github.com>
Co-authored-by: swseverance <swseverance@gmail.com>
commit c71db890acf551cbd843ae8d148b0b3952f6c39f
Author: Anthony Barone <tonybaroneee@gmail.com>
Date: Wed May 20 22:57:01 2026 -0400
Unify react router error boundaries and prevent duplicate logs (#9975)
* Unify react router error boundaries and prevent duplicate logs
* Fix tests
commit d3c3e0e768f0170c0af615e568367b445f9e7352
Author: Sai Sakhamuri <ssakhamu@google.com>
Date: Fri May 15 13:29:14 2026 -0400
refactoring common log attributes retrieval (#9967)
* refactoring common log attributes retrieval
* adding trace info as common attributes, refactoring options variable and startNewSession
* yarn format
commit 98a08233c6cc3c4597453cdcb1e07ad06724ca2a
Author: Anthony Barone <tonybaroneee@gmail.com>
Date: Tue May 12 14:39:06 2026 -0400
Update custom log attributes to align with OTel (#9953)
commit 6d3aed80851ef56facd46b2824b66bbfd95d89ae
Author: Anthony Barone <tonybaroneee@gmail.com>
Date: Tue May 12 11:22:14 2026 -0400
Merge branch "main" into crashlytics2 (#9941)
* feat(firestore): Added search stage support for languageCode, offset, limit, and retrievalDepth (#9884)
* feat(firestore): Added search stage support for languageCode, offset, limit, and retrievalDepth
* Create four-bottles-marry.md
* docgen
* PR feedback
* Update packages/firestore/src/lite-api/stage_options.ts
Co-authored-by: Daniel La Rocque <dlarocque@google.com>
* Improve ref doc
* More search refDoc improvements
* Consistent capitalization of search within ref docs
* remove deleted rut file
* docs devsite
---------
Co-authored-by: Daniel La Rocque <dlarocque@google.com>
* chore: Update picomatch and rollup-plugin-typescript2 (#9892)
* build(deps): bump picomatch from 2.3.1 to 2.3.2
Bumps [picomatch](https://github.com/micromatch/picomatch) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)
---
updated-dependencies:
- dependency-name: picomatch
dependency-version: 2.3.2
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
* Upgrade picomatch and rollup-plugin-typescript2
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* feat(ai): ImageConfig and FinishReasons (#9819)
* fix(firestore): Assertion ID: ca9 (pendingResponses less than 0) caused by target creation race condition (#9842)
* implement remote store target mapping
* Add spec test for removeTarget race condition
* cleanup
* Update packages/firestore/src/remote/remote_store.ts
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* cleanup
* Create loud-camels-cross.md
* Fix PR concerns and new tests
* Cleanup possible leak in watchChangeAggregator
* fix build issue with spec tests
* Fix integration test failure when running against public api
* another build fix
* Update spec test builder and runner to allow the spec test to specify the index of a target ID used for a query for some watch message types
* lint
* add Remote and SDK TargetID types
* Fix tests for SDK and Remote TargetId types
* refactor spec test to add step watchUsesTargetIndex and remove steps where the target index is passed to individual steps
* Remove unnecessary values passed to watchRemoves
* Removed unused helpers
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* build(deps): bump axios from 1.13.5 to 1.15.2 (#9860)
Bumps [axios](https://github.com/axios/axios) from 1.13.5 to 1.15.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.13.5...v1.15.2)
---
updated-dependencies:
- dependency-name: axios
dependency-version: 1.15.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore: migrate test functions to v2 (#9910)
* feat(data-connect): add de-duplication, resume, and intelligent reconnection with backoff (#9905)
* chore(data-connect): update documentation and names in stream transport (#9846)
* rename in preparation for future changes
* finish renaming + updating comments
* minor typo fix
* feat(data-connect): add query de-duplication to stream transport (#9850)
* rename in preparation for future changes
* finish renaming + updating comments
* minor typo fix
* add de-duping - now for tests
* add de-duplication tests for invokeQuery
* finish invoke operation dedupe tests
* add subscribe de-duping as well
* add more query dedupe tests
* chore(data-connect): clean up streaming tests a bit (#9851)
* rename in preparation for future changes
* finish renaming + updating comments
* minor typo fix
* add de-duping - now for tests
* add de-duplication tests for invokeQuery
* finish invoke operation dedupe tests
* add subscribe de-duping as well
* add more query dedupe tests
* clean up stream tests
* clean up promise types in streaming tests
* Pasta/bucatini resume refactor (#9885)
* add test changes
* add transportchanges
* finalize changes, run yarn format
* finalize changes based on reviewer feedback
* feat(data-connect): add prefer resume over execute optimization to stream transport (#9879)
* initial implementation - now for testing
* finish tests
* merge pasta/bucatini-resume-refactor
* address reviewer comments
* remove old comments
* address reviewer comments
* feat(data-connect): add intelligent reconnection to streaming transport and harden disconnect/cleanup functionality (#9893)
* WIP
* first pass
* fixing names
* tidying up, fixing tests
* fixed tests
* address reviewer comments
* address reviewer comments and harden close/cleanup lifecycle
* address reviewer comments
* make listener registering and unregistering more robust
* merge main, add changeset
* chore: fix e2e tests for functions and AI (#9924)
* Version Packages (#9923)
Release v12.13.0
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* fix(messaging): wire Firelog delivery metrics flush (startLoggingService) (#9916)
* fix(data-connect): Reduce Stream Transport Idle Timeout to Instant (#9936)
* reduce idle cooldown to instant
* run yarn format and add changeset
* update changelog
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Mark Duckworth <1124037+MarkDuckworth@users.noreply.github.com>
Co-authored-by: Daniel La Rocque <dlarocque@google.com>
Co-authored-by: Christina Holland <chholland@google.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paul Beusterien <paulbeusterien@google.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Google Open Source Bot <firebase-oss-bot@google.com>
Co-authored-by: Stephen Rosa <84193009+stephenarosaj@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: DellaBitta <drsanta@google.com>
Co-authored-by: Kai Wu <zwu52@users.noreply.github.com>
commit f1ce91f6fd815e0a81e21648afd1797f21aef2b6
Author: Anthony Barone <tonybaroneee@gmail.com>
Date: Tue May 12 10:25:18 2026 -0400
Add crashlytics to packages/firebase/package.json (#9946)
commit 95e5307dd57ab56465a915b0c7dd4760cb087d29
Author: Anthony Barone <tonybaroneee@gmail.com>
Date: Thu May 7 16:57:12 2026 -0400
Add crashlytics option for specifying cloud region (#9933)
commit f6902a26c18cbec5c0f1eb1ba216180f91cee98a
Author: Anthony Barone <tonybaroneee@gmail.com>
Date: Thu May 7 16:35:04 2026 -0400
Merge branch "main" into crashlytics2 (#9932)
* feat(firestore): Added search stage support for languageCode, offset, limit, and retrievalDepth (#9884)
* feat(firestore): Added search stage support for languageCode, offset, limit, and retrievalDepth
* Create four-bottles-marry.md
* docgen
* PR feedback
* Update packages/firestore/src/lite-api/stage_options.ts
Co-authored-by: Daniel La Rocque <dlarocque@google.com>
* Improve ref doc
* More search refDoc improvements
* Consistent capitalization of search within ref docs
* remove deleted rut file
* docs devsite
---------
Co-authored-by: Daniel La Rocque <dlarocque@google.com>
* chore: Update picomatch and rollup-plugin-typescript2 (#9892)
* build(deps): bump picomatch from 2.3.1 to 2.3.2
Bumps [picomatch](https://github.com/micromatch/picomatch) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)
---
updated-dependencies:
- dependency-name: picomatch
dependency-version: 2.3.2
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
* Upgrade picomatch and rollup-plugin-typescript2
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* feat(ai): ImageConfig and FinishReasons (#9819)
* fix(firestore): Assertion ID: ca9 (pendingResponses less than 0) caused by target creation race condition (#9842)
* implement remote store target mapping
* Add spec test for removeTarget race condition
* cleanup
* Update packages/firestore/src/remote/remote_store.ts
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* cleanup
* Create loud-camels-cross.md
* Fix PR concerns and new tests
* Cleanup possible leak in watchChangeAggregator
* fix build issue with spec tests
* Fix integration test failure when running against public api
* another build fix
* Update spec test builder and runner to allow the spec test to specify the index of a target ID used for a query for some watch message types
* lint
* add Remote and SDK TargetID types
* Fix tests for SDK and Remote TargetId types
* refactor spec test to add step watchUsesTargetIndex and remove steps where the target index is passed to individual steps
* Remove unnecessary values passed to watchRemoves
* Removed unused helpers
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* build(deps): bump axios from 1.13.5 to 1.15.2 (#9860)
Bumps [axios](https://github.com/axios/axios) from 1.13.5 to 1.15.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.13.5...v1.15.2)
---
updated-dependencies:
- dependency-name: axios
dependency-version: 1.15.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore: migrate test functions to v2 (#9910)
* feat(data-connect): add de-duplication, resume, and intelligent reconnection with backoff (#9905)
* chore(data-connect): update documentation and names in stream transport (#9846)
* rename in preparation for future changes
* finish renaming + updating comments
* minor typo fix
* feat(data-connect): add query de-duplication to stream transport (#9850)
* rename in preparation for future changes
* finish renaming + updating comments
* minor typo fix
* add de-duping - now for tests
* add de-duplication tests for invokeQuery
* finish invoke operation dedupe tes…
commit 9ab4a97ca92c038471853ddab1af09c4c6eb03e5
Author: Rebecca He <31138589+rebehe@users.noreply.github.com>
Date: Tue Jun 16 15:17:16 2026 -0400
Fix fetch transport appending headers bug (#10092)
There's a bug with the dynamic headers in fetch transport where the app check token get continuously appended on subsequent requests.
commit 4ec18b527104beb312222e2e35f82d8c3ea3cda4
Author: Rebecca He <31138589+rebehe@users.noreply.github.com>
Date: Tue Jun 16 09:38:20 2026 -0400
Merge main into crashlytics2 (#10082)
* feat(firestore): Added search stage support for languageCode, offset, limit, and retrievalDepth (#9884)
* feat(firestore): Added search stage support for languageCode, offset, limit, and retrievalDepth
* Create four-bottles-marry.md
* docgen
* PR feedback
* Update packages/firestore/src/lite-api/stage_options.ts
Co-authored-by: Daniel La Rocque <dlarocque@google.com>
* Improve ref doc
* More search refDoc improvements
* Consistent capitalization of search within ref docs
* remove deleted rut file
* docs devsite
---------
Co-authored-by: Daniel La Rocque <dlarocque@google.com>
* chore: Update picomatch and rollup-plugin-typescript2 (#9892)
* build(deps): bump picomatch from 2.3.1 to 2.3.2
Bumps [picomatch](https://github.com/micromatch/picomatch) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)
---
updated-dependencies:
- dependency-name: picomatch
dependency-version: 2.3.2
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
* Upgrade picomatch and rollup-plugin-typescript2
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* feat(ai): ImageConfig and FinishReasons (#9819)
* fix(firestore): Assertion ID: ca9 (pendingResponses less than 0) caused by target creation race condition (#9842)
* implement remote store target mapping
* Add spec test for removeTarget race condition
* cleanup
* Update packages/firestore/src/remote/remote_store.ts
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* cleanup
* Create loud-camels-cross.md
* Fix PR concerns and new tests
* Cleanup possible leak in watchChangeAggregator
* fix build issue with spec tests
* Fix integration test failure when running against public api
* another build fix
* Update spec test builder and runner to allow the spec test to specify the index of a target ID used for a query for some watch message types
* lint
* add Remote and SDK TargetID types
* Fix tests for SDK and Remote TargetId types
* refactor spec test to add step watchUsesTargetIndex and remove steps where the target index is passed to individual steps
* Remove unnecessary values passed to watchRemoves
* Removed unused helpers
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* build(deps): bump axios from 1.13.5 to 1.15.2 (#9860)
Bumps [axios](https://github.com/axios/axios) from 1.13.5 to 1.15.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.13.5...v1.15.2)
---
updated-dependencies:
- dependency-name: axios
dependency-version: 1.15.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore: migrate test functions to v2 (#9910)
* feat(data-connect): add de-duplication, resume, and intelligent reconnection with backoff (#9905)
* chore(data-connect): update documentation and names in stream transport (#9846)
* rename in preparation for future changes
* finish renaming + updating comments
* minor typo fix
* feat(data-connect): add query de-duplication to stream transport (#9850)
* rename in preparation for future changes
* finish renaming + updating comments
* minor typo fix
* add de-duping - now for tests
* add de-duplication tests for invokeQuery
* finish invoke operation dedupe tests
* add subscribe de-duping as well
* add more query dedupe tests
* chore(data-connect): clean up streaming tests a bit (#9851)
* rename in preparation for future changes
* finish renaming + updating comments
* minor typo fix
* add de-duping - now for tests
* add de-duplication tests for invokeQuery
* finish invoke operation dedupe tests
* add subscribe de-duping as well
* add more query dedupe tests
* clean up stream tests
* clean up promise types in streaming tests
* Pasta/bucatini resume refactor (#9885)
* add test changes
* add transportchanges
* finalize changes, run yarn format
* finalize changes based on reviewer feedback
* feat(data-connect): add prefer resume over execute optimization to stream transport (#9879)
* initial implementation - now for testing
* finish tests
* merge pasta/bucatini-resume-refactor
* address reviewer comments
* remove old comments
* address reviewer comments
* feat(data-connect): add intelligent reconnection to streaming transport and harden disconnect/cleanup functionality (#9893)
* WIP
* first pass
* fixing names
* tidying up, fixing tests
* fixed tests
* address reviewer comments
* address reviewer comments and harden close/cleanup lifecycle
* address reviewer comments
* make listener registering and unregistering more robust
* merge main, add changeset
* chore: fix e2e tests for functions and AI (#9924)
* Version Packages (#9923)
Release v12.13.0
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* fix(messaging): wire Firelog delivery metrics flush (startLoggingService) (#9916)
* fix(data-connect): Reduce Stream Transport Idle Timeout to Instant (#9936)
* reduce idle cooldown to instant
* run yarn format and add changeset
* update changelog
* fix(ai): Fix sendMessageStream bug that sends duplicate user turns (#9956)
* build(deps): bump protobufjs from 7.5.5 to 7.5.8 in /e2e/smoke-tests (#9958)
Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.5.5 to 7.5.8.
- [Release notes](https://github.com/protobufjs/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/protobufjs-v7.5.8/CHANGELOG.md)
- [Commits](https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.5.8)
---
updated-dependencies:
- dependency-name: protobufjs
dependency-version: 7.5.8
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* test(firestore): skip database source test that is timing out (#9966)
* test(firestore): skip database source test that is timing out
The test database keeps growing, causing this tests executionn time to
keep growing, repeatedly exceeding new timeouts we set. For now, let's
just skip this test.
* add eslint disable
* fix(auth): retry IndexedDB availability check on startup failure (#9845)
* fix(auth): retry IndexedDB availability check on startup failure
In environments like Chrome Extension Manifest V3 Service Workers, the initial IndexedDB transaction upon a cold start can sometimes drop or timeout. Previously, `_isAvailable()` would immediately catch the error, assume IndexedDB is broken, and silently fall back to `inMemoryPersistence`.
This updates `_isAvailable()` to use the `_withRetries()` helper, ensuring it benefits from the same retry logic as actual storage operations. This prevents the SDK from incorrectly abandoning existing IndexedDB auth state.
Fixes #9732
* style(auth): run yarn format
* chore: add changeset for IndexedDB availability check retry
* fix(auth): robust IndexedDB connection handling and test stability
* build(deps-dev): bump protobufjs in /packages/firestore (#9960)
Merge rules bypassed due to errant format diff.
Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.5.5 to 7.5.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/protobufjs/protobuf.js/releases">protobufjs's releases</a>.</em></p>
<blockquote>
<h2>protobufjs: v7.5.6</h2>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.5.6">7.5.6</a> (2026-04-27)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Backport input hardening and CLI fixes to 7.x (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2173">#2173</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/75392ea1b78bdc4faba027b5db44ad7c50e9c454">75392ea</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/protobufjs/protobuf.js/blob/protobufjs-v7.5.6/CHANGELOG.md">protobufjs's changelog</a>.</em></p>
<blockquote>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.5.6">7.5.6</a> (2026-04-27)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Backport input hardening and CLI fixes to 7.x (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2173">#2173</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/75392ea1b78bdc4faba027b5db44ad7c50e9c454">75392ea</a>)</li>
</ul>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.3...protobufjs-v7.5.4">7.5.4</a> (2025-08-15)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>invalid syntax in descriptor.proto (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2092">#2092</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/5a3769a465fead089a533ad55c21d069299df760">5a3769a</a>)</li>
</ul>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.2...protobufjs-v7.5.3">7.5.3</a> (2025-05-28)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>descriptor extensions handling post-editions (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2075">#2075</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/6e255d4ad6982cc857f26e1731c2cedcf5796f68">6e255d4</a>)</li>
</ul>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.1...protobufjs-v7.5.2">7.5.2</a> (2025-05-14)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>ensure that types are always resolved (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2068">#2068</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/4b51cb2b8450b77f9f5de1c562e7fae93b19d040">4b51cb2</a>)</li>
</ul>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.0...protobufjs-v7.5.1">7.5.1</a> (2025-05-08)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>optimize regressions from editions implementations (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2066">#2066</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/6406d4c18afae309fc7b5f4a24d9674d85da180b">6406d4c</a>)</li>
<li>reserved field inside group blocks fail parsing (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2058">#2058</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/56782bff0c4b5132806eb1a6bc4d08f930c4aaad">56782bf</a>)</li>
</ul>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.4.0...protobufjs-v7.5.0">7.5.0</a> (2025-04-15)</h2>
<h3>Features</h3>
<ul>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/f04ded3a03a3ddd383f0228e2fe2627a51f31aa3">f04ded3</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/ac9a3b9fe3134d48187e41b08d54ffaceddc6c1b">ac9a3b9</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/e5ca5c84e326699e10258367883a54934e0bfe14">e5ca5c8</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/a84409b47f9ba0dba56da1af8054fb54f85d85a1">a84409b</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/9c5a178c4b59e0aa65ecac0bd7420171213b2ff9">9c5a178</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/b2c686721e3b63d092419fa1cbe58e1deb89534e">b2c6867</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/60f3e51087ca2c247473410f39331e1c766aefef">60f3e51</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/a6563617de04d510d6e8865eb6c5067f10247f64">a656361</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/869a95b1e5f553c76243aac45619061407a41084">869a95b</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/2189e5beeca6a70e4c104dfdb9fb8200bc5f81fe"><code>2189e5b</code></a> chore: release protobufjs-v7.x (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2174">#2174</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/75392ea1b78bdc4faba027b5db44ad7c50e9c454"><code>75392ea</code></a> fix: Backport input hardening and CLI fixes to 7.x (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2173">#2173</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/8af8d7c0e9800879625f7d0d4a7fb51beb4410cd"><code>8af8d7c</code></a> chore(ci): Fix 7.x release please configuration (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2169">#2169</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/e92ca42244ad67203b48d836290062dae037ead6"><code>e92ca42</code></a> chore(ci): Enable release-please for 7.x (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2166">#2166</a>)</li>
<li>See full diff in <a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.5.6">compare view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a href="https://www.npmjs.com/~GitHub%20Actions">GitHub Actions</a>, a new releaser for protobufjs since your current version.</p>
</details>
<br />
* build(deps): bump @protobufjs/utf8 (#9952)
Bumps [@protobufjs/utf8](https://github.com/dcodeIO/protobuf.js) from 1.1.0 to 1.1.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dcodeIO/protobuf.js/releases">@protobufjs/utf8's releases</a>.</em></p>
<blockquote>
<h2>protobufjs-cli: v1.1.1</h2>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-cli-v1.1.0...protobufjs-cli-v1.1.1">1.1.1</a> (2023-02-02)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>cli:</strong> fix relative path to Google pb files (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/1859">#1859</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/e42eea4868b11f4a07934804a56683321ed191e2">e42eea4</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/644d588c0495da6a570344248e1b5af901bc3b0c"><code>644d588</code></a> chore: release master (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1865">#1865</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/e42eea4868b11f4a07934804a56683321ed191e2"><code>e42eea4</code></a> fix(cli): fix relative path to Google pb files (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1859">#1859</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/dce9a2ef92d363752e40b295b0da9bd178f82e83"><code>dce9a2e</code></a> fix: use bundled filename to fix common pb includes (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1860">#1860</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/64e8936ad9f73c68b3fa1e57857dd38323b5a745"><code>64e8936</code></a> fix: use ES5 style function syntax (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1830">#1830</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/4489fa771464bcb49b57149760e9cc4131e8077e"><code>4489fa7</code></a> Revert "fix: error should be thrown (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1817">#1817</a>)" (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1864">#1864</a>)</li>
<li>See full diff in <a href="https://github.com/dcodeIO/protobuf.js/compare/protobufjs-cli-v1.1.0...protobufjs-cli-v1.1.1">compare view</a></li>
</ul>
</details>
<br />
* build(deps): bump @protobufjs/utf8 (#9949)
Bumps [@protobufjs/utf8](https://github.com/dcodeIO/protobuf.js) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/dcodeIO/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/dcodeIO/protobuf.js/compare/protobufjs-cli-v1.1.0...protobufjs-cli-v1.1.1)
---
updated-dependencies:
- dependency-name: "@protobufjs/utf8"
dependency-version: 1.1.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* build(deps): bump protobufjs from 7.5.5 to 7.5.8 (#9973)
Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.5.5 to 7.5.8.
- [Release notes](https://github.com/protobufjs/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/protobufjs-v7.5.8/CHANGELOG.md)
- [Commits](https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.5.8)
---
updated-dependencies:
- dependency-name: protobufjs
dependency-version: 7.5.8
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* build(deps-dev): bump protobufjs-cli from 1.1.3 to 1.2.1 (#9955)
Bumps [protobufjs-cli](https://github.com/protobufjs/protobuf.js) from 1.1.3 to 1.2.1.
- [Release notes](https://github.com/protobufjs/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/protobufjs/protobuf.js/compare/protobufjs-cli-v1.1.3...protobufjs-cli-v1.2.1)
---
updated-dependencies:
- dependency-name: protobufjs-cli
dependency-version: 1.2.1
dependency-type: direct:development
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* build(deps): bump protobufjs from 7.4.0 to 7.5.9 in /e2e/data-connect (#9977)
Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.4.0 to 7.5.9.
- [Release notes](https://github.com/protobufjs/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/protobufjs-v7.5.9/CHANGELOG.md)
- [Commits](https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.4.0...protobufjs-v7.5.9)
---
updated-dependencies:
- dependency-name: protobufjs
dependency-version: 7.5.9
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* feature(firestore): added minimum and maximum FieldValue operations (#9913)
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* fix(changelog-generator): fix postinstall build failure (#9948)
The fix has two parts:
1. Add `"types": ["node"]` to tsconfig.
2. Fix an incorrect type cast in `index.ts`. The parsed GitHub API response
was being cast to the DOM `Response` type to access its `.body` property,
which is wrong — `Response.body` is a `ReadableStream`, not a string. The
actual value is the parsed JSON from the GitHub PR API, whose `body` field
is `string | null` per the API schema. Updated the cast accordingly.
Resolves #9947
* Feat/messaging api series (#9917)
* fix(app-check): Fix getLimitedUseToken() (#9987)
* fix(remoteconfig): Stopping last running experiment must call updateActiveExperiments (#9981)
Context: Currently, experiments are updated at activation only if the fetch response explicitly contains an experiments payload.
Problem: When the last running experiment is stopped, the fetch response returns experiments as undefined. This causes the client to skip the update call entirely, meaning the local state never registers that the experiment was stopped.
Fix: If fetch response does not contain experiments, pass an empty list to update
* fix(firestore): improved robustness and logging in query listen stream creation and re-creation (#9985)
* implement onSubChange for FID-based registration (#9996)
* implement onSubChange for FID-based registration
* Persist VAPID key in FID registration metadata to fix re-registration issue
* Enforce mutual exclusivity of token and FID registrations in DB layer
* Notify clients in onSubChange on successful FID refresh
- Update onSubChange to notify window clients when FID registration is refreshed. Previously it did not notify clients.
- Update refreshFidRegistrationIfStored to return the current FID.
- Update onSubChange to use the returned FID and only notify if the refresh was successful.
- Add unit tests to verify client notification on success, failure, and when not registered.
- Fix a lint error in window-listener.ts by adding the FidRegisteredPayload interface.
---------
Co-authored-by: Kai Wu <zwu52@users.noreply.github.com>
* feat(ai)!: Add explicit `initializeDeviceModel()` method when using hybrid (#9800)
* feat(ai): Update tags to mark hybrid inference features as GA (#9926)
* Version Packages (#10004)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* fix(auth,app-check): Fix Auth/AppCheck ReCAPTCHA Enterprise conflict (#9991)
* fix(remoteconfig) Support ABT realtime when variant value matches default value of parameter
When an experiment is added whose variant value matches default value, the parameter key is not listed as updated. This becomes a problem when the client app calls activate only on config change as the experiment will not get started
Before fix - https://screencast.googleplex.com/cast/NDgxNTYwNjU0NDA3MjcwNHxiOWY1MmIyNy1iMQ
After fix - https://screencast.googleplex.com/cast/NDcxODUwODQ0MDAyNzEzNnwzODc2YTRlMC01MA
* chore: Add explicit types to tsconfig (#10015)
* Update CODEOWNERS for auth packages (#10001)
* feat(app-check,app): Add ability for App Check to initialize with a default provider (#10023)
* chore(ci): make all firestore integration tests optional (#10028)
* merge off pipeline into main (#9929)
* chore(ci): make all firestore integration tests optional
* fix: align expressions and pipelines, address review comments, update yarn.lock, and fix package versions
* chore: update yarn.lock after merge
* fix: restore firestore package version and devDependencies to 4.15.0
* fix(ai): format systemInstruction string in ChatSession constructor (#10026)
* fix(ai): format systemInstruction string in ChatSession constructor
* adding a changeset file
* test(ai): verify systemInstruction in sendMessage and sendMessageStream
* remove extra folder in changeset
* remove extra changeset file
* restore deleted file
* adding check if systemInstruction is not null/undefined
* simplify systemInstruction assignment
* fix lint error
* revert to original structure
* docs(firestore): fix formatting for pipelines docs (#9908)
* docs(firestore): fix formatting for docs code snippets
- Fixes `findNearest` example doc formatting, which was causing
formatting to be lost for all subsequent APIs in the TOC in devsite.
- Removes `Example:` and `<p>Example:` from before all code examples,
since we use `@example` for this.
* add changeset firebase
* Update packages/firestore/src/lite-api/pipeline.ts
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* update docs
* docs(firestore): fix ref doc issues for piplines (#9912)
* docs(firestore): fix ref doc issues for piplines
* Update packages/firestore/src/lite-api/pipeline.ts
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* Update packages/firestore/src/lite-api/pipeline.ts
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* docs-devsite
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* docs(firestore): add missing `typescript` formatting to docs (#9909)
Adds `typescript` code formatting to the code examples in docs, where
they're missing.
* cleanup
* remove changeset
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Mark Duckworth <1124037+MarkDuckworth@users.noreply.github.com>
* Support API key referrer restrictions by changing the Auth SDK referrer policy (#10049)
* feat(auth): Update referrer policy to strict-origin-when-cross-origin
* chore: Add changeset tame-yaks-yawn.md
* Fix querystring to always use apiKey even if a key is specified in the request (#10048)
* Fix querystring to always use apiKey even if a key is specified in the request
* Update packages/auth/src/api/index.ts
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* Fix test helper URL generation to match new querystring order
* Run yarn format
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Mark Duckworth <1124037+MarkDuckworth@users.noreply.github.com>
Co-authored-by: Daniel La Rocque <dlarocque@google.com>
Co-authored-by: Christina Holland <chholland@google.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paul Beusterien <paulbeusterien@google.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Google Open Source Bot <firebase-oss-bot@google.com>
Co-authored-by: Stephen Rosa <84193009+stephenarosaj@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: DellaBitta <drsanta@google.com>
Co-authored-by: Kai Wu <zwu52@users.noreply.github.com>
Co-authored-by: macastelaz <34776182+macastelaz@users.noreply.github.com>
Co-authored-by: swseverance <swseverance@gmail.com>
Co-authored-by: Athira M <athiramanu9400@gmail.com>
Co-authored-by: Doris-Ge <dorisge@google.com>
Co-authored-by: wu-hui <53845758+wu-hui@users.noreply.github.com>
Co-authored-by: sedanah-m <mashhour@google.com>
commit 6868f5fdcb95dcc3cb55bad6f03e86cfeeaf97db
Author: Rebecca He <31138589+rebehe@users.noreply.github.com>
Date: Mon Jun 15 14:48:15 2026 -0400
Prefactor `AttributesStore` to more cleanly support span attributes (#10079)
commit 558ee841dbd889dd0d7812613a7e553687b80517
Author: Anthony Barone <tonybaroneee@gmail.com>
Date: Mon Jun 15 08:49:18 2026 -0400
Update crashlytics otel log attributes (#10062)
commit e6637173bc7e24630987b88ea9614a744509e9ae
Author: Rebecca He <31138589+rebehe@users.noreply.github.com>
Date: Fri Jun 12 14:16:50 2026 -0400
Migrate route path provider into `AttributesStore` (#10060)
commit 1e203bcb02c248567320b7efc28dabd9b4f81928
Author: Rebecca He <31138589+rebehe@users.noreply.github.com>
Date: Fri Jun 12 11:31:32 2026 -0400
Migrate all common/log attributes and logic into `AttributesStore` (#10053)
commit 5421eb9331f1fa8f9a188a3c3a6f3c577f069b50
Author: Rebecca He <31138589+rebehe@users.noreply.github.com>
Date: Fri Jun 12 09:34:45 2026 -0400
Migrate installation id provider logic into new `AttributeStore` (#10054)
commit 48f2deb81f97e51de31aacf9700a53e0af132ca7
Author: MaesterChestnut <40321652+MaesterChestnut@users.noreply.github.com>
Date: Thu Jun 4 11:26:46 2026 -0400
Crashlytics merge main (#10034)
commit 06423a1af4ff4017f76a8cd0d0f381f3c0bf1660
Author: Christina Holland <chholland@google.com>
Date: Tue May 26 17:44:58 2026 -0700
Update release workflows to use NPM publish token from Github secrets (#10006)
commit c9f1064327463e7a16e03fd0c420336fd99cee9b
Author: Anthony Barone <tonybaroneee@gmail.com>
Date: Tue May 26 20:42:09 2026 -0400
Add crashlytics as export in packages/firebase package.json (#10005)
commit 3dd4e65d9746cadbd7e846149f393883a602fcb9
Author: Anthony Barone <tonybaroneee@gmail.com>
Date: Tue May 26 18:26:20 2026 -0400
Add default telemetry endpoint for crashlytics (#10003)
commit 751dd8120f95ad1b6be215ff126eec5dfb6fd7df
Author: Anthony Barone <tonybaroneee@gmail.com>
Date: Thu May 21 08:43:42 2026 -0400
Merge branch "main" into crashlytics2 (#9989)
* feat(firestore): Added search stage support for languageCode, offset, limit, and retrievalDepth (#9884)
* feat(firestore): Added search stage support for languageCode, offset, limit, and retrievalDepth
* Create four-bottles-marry.md
* docgen
* PR feedback
* Update packages/firestore/src/lite-api/stage_options.ts
Co-authored-by: Daniel La Rocque <dlarocque@google.com>
* Improve ref doc
* More search refDoc improvements
* Consistent capitalization of search within ref docs
* remove deleted rut file
* docs devsite
---------
Co-authored-by: Daniel La Rocque <dlarocque@google.com>
* chore: Update picomatch and rollup-plugin-typescript2 (#9892)
* build(deps): bump picomatch from 2.3.1 to 2.3.2
Bumps [picomatch](https://github.com/micromatch/picomatch) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)
---
updated-dependencies:
- dependency-name: picomatch
dependency-version: 2.3.2
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
* Upgrade picomatch and rollup-plugin-typescript2
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* feat(ai): ImageConfig and FinishReasons (#9819)
* fix(firestore): Assertion ID: ca9 (pendingResponses less than 0) caused by target creation race condition (#9842)
* implement remote store target mapping
* Add spec test for removeTarget race condition
* cleanup
* Update packages/firestore/src/remote/remote_store.ts
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* cleanup
* Create loud-camels-cross.md
* Fix PR concerns and new tests
* Cleanup possible leak in watchChangeAggregator
* fix build issue with spec tests
* Fix integration test failure when running against public api
* another build fix
* Update spec test builder and runner to allow the spec test to specify the index of a target ID used for a query for some watch message types
* lint
* add Remote and SDK TargetID types
* Fix tests for SDK and Remote TargetId types
* refactor spec test to add step watchUsesTargetIndex and remove steps where the target index is passed to individual steps
* Remove unnecessary values passed to watchRemoves
* Removed unused helpers
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* build(deps): bump axios from 1.13.5 to 1.15.2 (#9860)
Bumps [axios](https://github.com/axios/axios) from 1.13.5 to 1.15.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.13.5...v1.15.2)
---
updated-dependencies:
- dependency-name: axios
dependency-version: 1.15.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore: migrate test functions to v2 (#9910)
* feat(data-connect): add de-duplication, resume, and intelligent reconnection with backoff (#9905)
* chore(data-connect): update documentation and names in stream transport (#9846)
* rename in preparation for future changes
* finish renaming + updating comments
* minor typo fix
* feat(data-connect): add query de-duplication to stream transport (#9850)
* rename in preparation for future changes
* finish renaming + updating comments
* minor typo fix
* add de-duping - now for tests
* add de-duplication tests for invokeQuery
* finish invoke operation dedupe tests
* add subscribe de-duping as well
* add more query dedupe tests
* chore(data-connect): clean up streaming tests a bit (#9851)
* rename in preparation for future changes
* finish renaming + updating comments
* minor typo fix
* add de-duping - now for tests
* add de-duplication tests for invokeQuery
* finish invoke operation dedupe tests
* add subscribe de-duping as well
* add more query dedupe tests
* clean up stream tests
* clean up promise types in streaming tests
* Pasta/bucatini resume refactor (#9885)
* add test changes
* add transportchanges
* finalize changes, run yarn format
* finalize changes based on reviewer feedback
* feat(data-connect): add prefer resume over execute optimization to stream transport (#9879)
* initial implementation - now for testing
* finish tests
* merge pasta/bucatini-resume-refactor
* address reviewer comments
* remove old comments
* address reviewer comments
* feat(data-connect): add intelligent reconnection to streaming transport and harden disconnect/cleanup functionality (#9893)
* WIP
* first pass
* fixing names
* tidying up, fixing tests
* fixed tests
* address reviewer comments
* address reviewer comments and harden close/cleanup lifecycle
* address reviewer comments
* make listener registering and unregistering more robust
* merge main, add changeset
* chore: fix e2e tests for functions and AI (#9924)
* Version Packages (#9923)
Release v12.13.0
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* fix(messaging): wire Firelog delivery metrics flush (startLoggingService) (#9916)
* fix(data-connect): Reduce Stream Transport Idle Timeout to Instant (#9936)
* reduce idle cooldown to instant
* run yarn format and add changeset
* update changelog
* fix(ai): Fix sendMessageStream bug that sends duplicate user turns (#9956)
* build(deps): bump protobufjs from 7.5.5 to 7.5.8 in /e2e/smoke-tests (#9958)
Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.5.5 to 7.5.8.
- [Release notes](https://github.com/protobufjs/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/protobufjs-v7.5.8/CHANGELOG.md)
- [Commits](https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.5.8)
---
updated-dependencies:
- dependency-name: protobufjs
dependency-version: 7.5.8
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* test(firestore): skip database source test that is timing out (#9966)
* test(firestore): skip database source test that is timing out
The test database keeps growing, causing this tests executionn time to
keep growing, repeatedly exceeding new timeouts we set. For now, let's
just skip this test.
* add eslint disable
* fix(auth): retry IndexedDB availability check on startup failure (#9845)
* fix(auth): retry IndexedDB availability check on startup failure
In environments like Chrome Extension Manifest V3 Service Workers, the initial IndexedDB transaction upon a cold start can sometimes drop or timeout. Previously, `_isAvailable()` would immediately catch the error, assume IndexedDB is broken, and silently fall back to `inMemoryPersistence`.
This updates `_isAvailable()` to use the `_withRetries()` helper, ensuring it benefits from the same retry logic as actual storage operations. This prevents the SDK from incorrectly abandoning existing IndexedDB auth state.
Fixes #9732
* style(auth): run yarn format
* chore: add changeset for IndexedDB availability check retry
* fix(auth): robust IndexedDB connection handling and test stability
* build(deps-dev): bump protobufjs in /packages/firestore (#9960)
Merge rules bypassed due to errant format diff.
Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.5.5 to 7.5.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/protobufjs/protobuf.js/releases">protobufjs's releases</a>.</em></p>
<blockquote>
<h2>protobufjs: v7.5.6</h2>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.5.6">7.5.6</a> (2026-04-27)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Backport input hardening and CLI fixes to 7.x (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2173">#2173</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/75392ea1b78bdc4faba027b5db44ad7c50e9c454">75392ea</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/protobufjs/protobuf.js/blob/protobufjs-v7.5.6/CHANGELOG.md">protobufjs's changelog</a>.</em></p>
<blockquote>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.5.6">7.5.6</a> (2026-04-27)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Backport input hardening and CLI fixes to 7.x (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2173">#2173</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/75392ea1b78bdc4faba027b5db44ad7c50e9c454">75392ea</a>)</li>
</ul>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.3...protobufjs-v7.5.4">7.5.4</a> (2025-08-15)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>invalid syntax in descriptor.proto (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2092">#2092</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/5a3769a465fead089a533ad55c21d069299df760">5a3769a</a>)</li>
</ul>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.2...protobufjs-v7.5.3">7.5.3</a> (2025-05-28)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>descriptor extensions handling post-editions (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2075">#2075</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/6e255d4ad6982cc857f26e1731c2cedcf5796f68">6e255d4</a>)</li>
</ul>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.1...protobufjs-v7.5.2">7.5.2</a> (2025-05-14)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>ensure that types are always resolved (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2068">#2068</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/4b51cb2b8450b77f9f5de1c562e7fae93b19d040">4b51cb2</a>)</li>
</ul>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.0...protobufjs-v7.5.1">7.5.1</a> (2025-05-08)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>optimize regressions from editions implementations (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2066">#2066</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/6406d4c18afae309fc7b5f4a24d9674d85da180b">6406d4c</a>)</li>
<li>reserved field inside group blocks fail parsing (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2058">#2058</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/56782bff0c4b5132806eb1a6bc4d08f930c4aaad">56782bf</a>)</li>
</ul>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.4.0...protobufjs-v7.5.0">7.5.0</a> (2025-04-15)</h2>
<h3>Features</h3>
<ul>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/f04ded3a03a3ddd383f0228e2fe2627a51f31aa3">f04ded3</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/ac9a3b9fe3134d48187e41b08d54ffaceddc6c1b">ac9a3b9</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/e5ca5c84e326699e10258367883a54934e0bfe14">e5ca5c8</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/a84409b47f9ba0dba56da1af8054fb54f85d85a1">a84409b</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/9c5a178c4b59e0aa65ecac0bd7420171213b2ff9">9c5a178</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/b2c686721e3b63d092419fa1cbe58e1deb89534e">b2c6867</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/60f3e51087ca2c247473410f39331e1c766aefef">60f3e51</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/a6563617de04d510d6e8865eb6c5067f10247f64">a656361</a>)</li>
<li>add Edition 2023 Support (<a href="https://github.com/protobufjs/protobuf.js/commit/869a95b1e5f553c76243aac45619061407a41084">869a95b</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/2189e5beeca6a70e4c104dfdb9fb8200bc5f81fe"><code>2189e5b</code></a> chore: release protobufjs-v7.x (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2174">#2174</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/75392ea1b78bdc4faba027b5db44ad7c50e9c454"><code>75392ea</code></a> fix: Backport input hardening and CLI fixes to 7.x (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2173">#2173</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/8af8d7c0e9800879625f7d0d4a7fb51beb4410cd"><code>8af8d7c</code></a> chore(ci): Fix 7.x release please configuration (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2169">#2169</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/e92ca42244ad67203b48d836290062dae037ead6"><code>e92ca42</code></a> chore(ci): Enable release-please for 7.x (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/2166">#2166</a>)</li>
<li>See full diff in <a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.5.6">compare view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a href="https://www.npmjs.com/~GitHub%20Actions">GitHub Actions</a>, a new releaser for protobufjs since your current version.</p>
</details>
<br />
* build(deps): bump @protobufjs/utf8 (#9952)
Bumps [@protobufjs/utf8](https://github.com/dcodeIO/protobuf.js) from 1.1.0 to 1.1.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dcodeIO/protobuf.js/releases">@protobufjs/utf8's releases</a>.</em></p>
<blockquote>
<h2>protobufjs-cli: v1.1.1</h2>
<h2><a href="https://github.com/protobufjs/protobuf.js/compare/protobufjs-cli-v1.1.0...protobufjs-cli-v1.1.1">1.1.1</a> (2023-02-02)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>cli:</strong> fix relative path to Google pb files (<a href="https://redirect.github.com/protobufjs/protobuf.js/issues/1859">#1859</a>) (<a href="https://github.com/protobufjs/protobuf.js/commit/e42eea4868b11f4a07934804a56683321ed191e2">e42eea4</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/644d588c0495da6a570344248e1b5af901bc3b0c"><code>644d588</code></a> chore: release master (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1865">#1865</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/e42eea4868b11f4a07934804a56683321ed191e2"><code>e42eea4</code></a> fix(cli): fix relative path to Google pb files (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1859">#1859</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/dce9a2ef92d363752e40b295b0da9bd178f82e83"><code>dce9a2e</code></a> fix: use bundled filename to fix common pb includes (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1860">#1860</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/64e8936ad9f73c68b3fa1e57857dd38323b5a745"><code>64e8936</code></a> fix: use ES5 style function syntax (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1830">#1830</a>)</li>
<li><a href="https://github.com/protobufjs/protobuf.js/commit/4489fa771464bcb49b57149760e9cc4131e8077e"><code>4489fa7</code></a> Revert "fix: error should be thrown (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1817">#1817</a>)" (<a href="https://redirect.github.com/dcodeIO/protobuf.js/issues/1864">#1864</a>)</li>
<li>See full diff in <a href="https://github.com/dcodeIO/protobuf.js/compare/protobufjs-cli-v1.1.0...protobufjs-cli-v1.1.1">compare view</a></li>
</ul>
</details>
<br />
* build(deps): bump @protobufjs/utf8 (#9949)
Bumps [@protobufjs/utf8](https://github.com/dcodeIO/protobuf.js) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/dcodeIO/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/dcodeIO/protobuf.js/compare/protobufjs-cli-v1.1.0...protobufjs-cli-v1.1.1)
---
updated-dependencies:
- dependency-name: "@protobufjs/utf8"
dependency-version: 1.1.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* build(deps): bump protobufjs from 7.5.5 to 7.5.8 (#9973)
Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.5.5 to 7.5.8.
- [Release notes](https://github.com/protobufjs/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/protobufjs-v7.5.8/CHANGELOG.md)
- [Commits](https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.5.8)
---
updated-dependencies:
- dependency-name: protobufjs
dependency-version: 7.5.8
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* build(deps-dev): bump protobufjs-cli from 1.1.3 to 1.2.1 (#9955)
Bumps [protobufjs-cli](https://github.com/protobufjs/protobuf.js) from 1.1.3 to 1.2.1.
- [Release notes](https://github.com/protobufjs/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/protobufjs/protobuf.js/compare/protobufjs-cli-v1.1.3...protobufjs-cli-v1.2.1)
---
updated-dependencies:
- dependency-name: protobufjs-cli
dependency-version: 1.2.1
dependency-type: direct:development
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* build(deps): bump protobufjs from 7.4.0 to 7.5.9 in /e2e/data-connect (#9977)
Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.4.0 to 7.5.9.
- [Release notes](https://github.com/protobufjs/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/protobufjs-v7.5.9/CHANGELOG.md)
- [Commits](https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.4.0...protobufjs-v7.5.9)
---
updated-dependencies:
- dependency-name: protobufjs
dependency-version: 7.5.9
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* feature(firestore): added minimum and maximum FieldValue operations (#9913)
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* fix(changelog-generator): fix postinstall build failure (#9948)
The fix has two parts:
1. Add `"types": ["node"]` to tsconfig.
2. Fix an incorrect type cast in `index.ts`. The parsed GitHub API response
was being cast to the DOM `Response` type to access its `.body` property,
which is wrong — `Response.body` is a `ReadableStream`, not a string. The
actual value is the parsed JSON from the GitHub PR API, whose `body` field
is `string | null` per the API schema. Updated the cast accordingly.
Resolves #9947
* Feat/messaging api series (#9917)
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Mark Duckworth <1124037+MarkDuckworth@users.noreply.github.com>
Co-authored-by: Daniel La Rocque <dlarocque@google.com>
Co-authored-by: Christina Holland <chholland@google.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paul Beusterien <paulbeusterien@google.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Google Open Source Bot <firebase-oss-bot@google.com>
Co-authored-by: Stephen Rosa <84193009+stephenarosaj@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: DellaBitta <drsanta@google.com>
Co-authored-by: Kai Wu <zwu52@users.noreply.github.com>
Co-authored-by: macastelaz <34776182+macastelaz@users.noreply.github.com>
Co-authored-by: swseverance <swseverance@gmail.com>
commit c71db890acf551cbd843ae8d148b0b3952f6c39f
Author: Anthony Barone <tonybaroneee@gmail.com>
Date: Wed May 20 22:57:01 2026 -0400
Unify react router error boundaries and prevent duplicate logs (#9975)
* Unify react router error boundaries and prevent duplicate logs
* Fix tests
commit d3c3e0e768f0170c0af615e568367b445f9e7352
Author: Sai Sakhamuri <ssakhamu@google.com>
Date: Fri May 15 13:29:14 2026 -0400
refactoring common log attributes retrieval (#9967)
* refactoring common log attributes retrieval
* adding trace info as common attributes, refactoring options variable and startNewSession
* yarn format
commit 98a08233c6cc3c4597453cdcb1e07ad06724ca2a
Author: Anthony Barone <tonybaroneee@gmail.com>
Date: Tue May 12 14:39:06 2026 -0400
Update custom log attributes to align with OTel (#9953)
commit 6d3aed80851ef56facd46b2824b66bbfd95d89ae
Author: Anthony Barone <tonybaroneee@gmail.com>
Date: Tue May 12 11:22:14 2026 -0400
Merge branch "main" into crashlytics2 (#9941)
* feat(firestore): Added search stage support for languageCode, offset, limit, and retrievalDepth (#9884)
* feat(firestore): Added search stage support for languageCode, offset, limit, and retrievalDepth
* Create four-bottles-marry.md
* docgen
* PR feedback
* Update packages/firestore/src/lite-api/stage_options.ts
Co-authored-by: Daniel La Rocque <dlarocque@google.com>
* Improve ref doc
* More search refDoc improvements
* Consistent capitalization of search within ref docs
* remove deleted rut file
* docs devsite
---------
Co-authored-by: Daniel La Rocque <dlarocque@google.com>
* chore: Update picomatch and rollup-plugin-typescript2 (#9892)
* build(deps): bump picomatch from 2.3.1 to 2.3.2
Bumps [picomatch](https://github.com/micromatch/picomatch) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)
---
updated-dependencies:
- dependency-name: picomatch
dependency-version: 2.3.2
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
* Upgrade picomatch and rollup-plugin-typescript2
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* feat(ai): ImageConfig and FinishReasons (#9819)
* fix(firestore): Assertion ID: ca9 (pendingResponses less than 0) caused by target creation race condition (#9842)
* implement remote store target mapping
* Add spec test for removeTarget race condition
* cleanup
* Update packages/firestore/src/remote/remote_store.ts
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* cleanup
* Create loud-camels-cross.md
* Fix PR concerns and new tests
* Cleanup possible leak in watchChangeAggregator
* fix build issue with spec tests
* Fix integration test failure when running against public api
* another build fix
* Update spec test builder and runner to allow the spec test to specify the index of a target ID used for a query for some watch message types
* lint
* add Remote and SDK TargetID types
* Fix tests for SDK and Remote TargetId types
* refactor spec test to add step watchUsesTargetIndex and remove steps where the target index is passed to individual steps
* Remove unnecessary values passed to watchRemoves
* Removed unused helpers
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* build(deps): bump axios from 1.13.5 to 1.15.2 (#9860)
Bumps [axios](https://github.com/axios/axios) from 1.13.5 to 1.15.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.13.5...v1.15.2)
---
updated-dependencies:
- dependency-name: axios
dependency-version: 1.15.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore: migrate test functions to v2 (#9910)
* feat(data-connect): add de-duplication, resume, and intelligent reconnection with backoff (#9905)
* chore(data-connect): update documentation and names in stream transport (#9846)
* rename in preparation for future changes
* finish renaming + updating comments
* minor typo fix
* feat(data-connect): add query de-duplication to stream transport (#9850)
* rename in preparation for future changes
* finish renaming + updating comments
* minor typo fix
* add de-duping - now for tests
* add de-duplication tests for invokeQuery
* finish invoke operation dedupe tests
* add subscribe de-duping as well
* add more query dedupe tests
* chore(data-connect): clean up streaming tests a bit (#9851)
* rename in preparation for future changes
* finish renaming + updating comments
* minor typo fix
* add de-duping - now for tests
* add de-duplication tests for invokeQuery
* finish invoke operation dedupe tests
* add subscribe de-duping as well
* add more query dedupe tests
* clean up stream tests
* clean up promise types in streaming tests
* Pasta/bucatini resume refactor (#9885)
* add test changes
* add transportchanges
* finalize changes, run yarn format
* finalize changes based on reviewer feedback
* feat(data-connect): add prefer resume over execute optimization to stream transport (#9879)
* initial implementation - now for testing
* finish tests
* merge pasta/bucatini-resume-refactor
* address reviewer comments
* remove old comments
* address reviewer comments
* feat(data-connect): add intelligent reconnection to streaming transport and harden disconnect/cleanup functionality (#9893)
* WIP
* first pass
* fixing names
* tidying up, fixing tests
* fixed tests
* address reviewer comments
* address reviewer comments and harden close/cleanup lifecycle
* address reviewer comments
* make listener registering and unregistering more robust
* merge main, add changeset
* chore: fix e2e tests for functions and AI (#9924)
* Version Packages (#9923)
Release v12.13.0
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* fix(messaging): wire Firelog delivery metrics flush (startLoggingService) (#9916)
* fix(data-connect): Reduce Stream Transport Idle Timeout to Instant (#9936)
* reduce idle cooldown to instant
* run yarn format and add changeset
* update changelog
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Mark Duckworth <1124037+MarkDuckworth@users.noreply.github.com>
Co-authored-by: Daniel La Rocque <dlarocque@google.com>
Co-authored-by: Christina Holland <chholland@google.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paul Beusterien <paulbeusterien@google.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Google Open Source Bot <firebase-oss-bot@google.com>
Co-authored-by: Stephen Rosa <84193009+stephenarosaj@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: DellaBitta <drsanta@google.com>
Co-authored-by: Kai Wu <zwu52@users.noreply.github.com>
commit f1ce91f6fd815e0a81e21648afd1797f21aef2b6
Author: Anthony Barone <tonybaroneee@gmail.com>
Date: Tue May 12 10:25:18 2026 -0400
Add crashlytics to packages/firebase/package.json (#9946)
commit 95e5307dd57ab56465a915b0c7dd4760cb087d29
Author: Anthony Barone <tonybaroneee@gmail.com>
Date: Thu May 7 16:57:12 2026 -0400
Add crashlytics option for specifying cloud region (#9933)
commit f6902a26c18cbec5c0f1eb1ba216180f91cee98a
Author: Anthony Barone <tonybaroneee@gmail.com>
Date: Thu May 7 16:35:04 2026 -0400
Merge branch "main" into crashlytics2 (#9932)
* feat(firestore): Added search stage support for languageCode, offset, limit, and retrievalDepth (#9884)
* feat(firestore): Added search stage support for languageCode, offset, limit, and retrievalDepth
* Create four-bottles-marry.md
* docgen
* PR feedback
* Update packages/firestore/src/lite-api/stage_options.ts
Co-authored-by: Daniel La Rocque <dlarocque@google.com>
* Improve ref doc
* More search refDoc improvements
* Consistent capitalization of search within ref docs
* remove deleted rut file
* docs devsite
---------
Co-authored-by: Daniel La Rocque <dlarocque@google.com>
* chore: Update picomatch and rollup-plugin-typescript2 (#9892)
* build(deps): bump picomatch from 2.3.1 to 2.3.2
Bumps [picomatch](https://github.com/micromatch/picomatch) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)
---
updated-dependencies:
- dependency-name: picomatch
dependency-version: 2.3.2
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
* Upgrade picomatch and rollup-plugin-typescript2
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* feat(ai): ImageConfig and FinishReasons (#9819)
* fix(firestore): Assertion ID: ca9 (pendingResponses less than 0) caused by target creation race condition (#9842)
* implement remote store target mapping
* Add spec test for removeTarget race condition
* cleanup
* Update packages/firestore/src/remote/remote_store.ts
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* cleanup
* Create loud-camels-cross.md
* Fix PR concerns and new tests
* Cleanup possible leak in watchChangeAggregator
* fix build issue with spec tests
* Fix integration test failure when running against public api
* another build fix
* Update spec test builder and runner to allow the spec test to specify the index of a target ID used for a query for some watch message types
* lint
* add Remote and SDK TargetID types
* Fix tests for SDK and Remote TargetId types
* refactor spec test to add step watchUsesTargetIndex and remove steps where the target index is passed to individual steps
* Remove unnecessary values passed to watchRemoves
* Removed unused helpers
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* build(deps): bump axios from 1.13.5 to 1.15.2 (#9860)
Bumps [axios](https://github.com/axios/axios) from 1.13.5 to 1.15.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.13.5...v1.15.2)
---
updated-dependencies:
- dependency-name: axios
dependency-version: 1.15.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore: migrate test functions to v2 (#9910)
* feat(data-connect): add de-duplication, resume, and intelligent reconnection with backoff (#9905)
* chore(data-connect): update documentation and names in stream transport (#9846)
* rename in preparation for future changes
* finish renaming + updating comments
* minor typo fix
* feat(data-conn…
* adding background/foreground lifecycle logs * refacoring where logVisibilityEvent code is and reverting keepalive setting for simplicity * refactoring registerListeners test code * changing test names for logVisiibilityEvent
…10103) * keep-alive-true logic to allow for flush() to succeed on tab close * yarn format
* fixing app start root span ending * improving app start test * incorporating feedback * making setter private
* moved nextOnRequestError function and tests into next folder * adding CrashlyticsNavigationTracker component + getParameterizedRoute function and in next-navigation folder with tests/configs * updating documentation for both next and next-navigation * updating regex to cover edge case * make test names more consistent with other tests * reverting next server side instrumentation refactor * adding in test for undefined value in params
* adding navigation log support for angular * resolving feedback * adding @internal tags to internal functions * adding support for marix parameters * adding AI feedback * changing back to firstCall * cleaning up rebase
#10178) * removing firebase span processor and moving attribute assignment to applyCustomAttributesOnSpan * moving the tests from FirebaseSpanProcessor to the attribute store for getSpanAttributes
Add support for Crashlytics Tracing such that export of telemetry data only occurs on error
…10198) * replacing public tags with internal tags for tracing log functions * changing how flush is exported
* tsconfig override that allows for otel-browser instrumentation to be used in crashlytics * resolving AI feedback * modifying code to work with updated dependencies
* adding otel user action and navigation timing logging support * adding unregister instrumentation code and temporary custom log attributes * adding todo comment or customAttributesProcessor * removing unregister logic
* adding on app delete listern/instrumentation cleanup * error handling for provider shutdown failure
* adding root-telemetry queue class * yarn format * throws error when queue size is <= 0
|
Wiz Scan Summary
To detect these findings earlier in the dev lifecycle, try the Wiz Code extension for VS Code, JetBrains, or Visual Studio. |
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
There was a problem hiding this comment.
Code Review
This pull request introduces navigation tracking for Next.js and Angular, adds tracing support, and updates various dependencies. The review identified several areas for improvement, including potential WebSocket connection churn due to immediate idle timeouts, heuristic limitations in route pattern matching, inefficient useEffect dependency arrays, missing type handling for keepalive payloads, potential global unregistration issues in CrashlyticsService, and missing dependencies in React useEffect hooks.
|
|
||
| /** Time to wait before closing an idle connection (no active subscriptions). */ | ||
| const IDLE_CONNECTION_TIMEOUT_MS = 15 * 1000; // 15 seconds | ||
| const IDLE_CONNECTION_TIMEOUT_MS = 0; // immediate close |
There was a problem hiding this comment.
Immediate close of idle connections (IDLE_CONNECTION_TIMEOUT_MS = 0) can lead to severe WebSocket connection churn in single-page applications. When a user navigates between pages, subscriptions are often torn down and recreated in rapid succession. Closing the connection immediately means every such transition will require a full WebSocket handshake, increasing latency for the user and load on the server. Consider keeping a short grace period (e.g., a few seconds) instead of closing immediately.
| routePattern = routePattern.replace( | ||
| new RegExp(`/${escapedVal}(?=/|$)`), | ||
| `/:${key}` | ||
| ); |
There was a problem hiding this comment.
This heuristic replacement can incorrectly replace static path segments if a parameter's value happens to match a static segment earlier in the pathname. For example, for a path /posts/edit/edit where id = 'edit', the first static /edit will be replaced, resulting in /posts/:id/edit instead of /posts/edit/:id. While Next.js client-side navigation doesn't easily expose the raw route template, we should document this limitation or consider if there's a more robust way to match parameters (e.g., matching from right to left or checking parameter position if possible).
| useEffect(() => { | ||
| logViewBoundary(crashlytics, pattern); | ||
| }, [pathname, params]); |
There was a problem hiding this comment.
The useEffect dependency array contains [pathname, params], but params is an object returned by useParams(). If its reference changes on render (even if values are identical), the effect will re-run. Since pattern is a stable string derived from pathname and params, and both crashlytics and pattern are used inside the effect, it is more efficient and correct to use [crashlytics, pattern] as the dependency array.
useEffect(() => {\n logViewBoundary(crashlytics, pattern);\n }, [crashlytics, pattern]);| // Browsers limit the total keepalive budget (payload + headers) to 64KB. | ||
| // If the limit is exceeded, fetch throws a TypeError. We only use keepalive | ||
| // if the payload is within a safe limit. | ||
| const keepalive = data.byteLength < KEEPALIVE_MAX_PAYLOAD_SIZE; |
There was a problem hiding this comment.
The data payload sent to the transport can be a string or a Uint8Array. If data is a string, data.byteLength will be undefined, which makes keepalive evaluate to false regardless of the payload size. To support keepalive for string payloads, we should handle both types.
const byteLength = typeof data === 'string' ? new TextEncoder().encode(data).length : data.byteLength;\n const keepalive = byteLength < KEEPALIVE_MAX_PAYLOAD_SIZE;| async _delete(): Promise<void> { | ||
| if (this._unsubscribeListeners) { | ||
| this._unsubscribeListeners(); | ||
| } | ||
| unregisterLoggerInstrumentations(); | ||
| unregisterTracingInstrumentations(); |
There was a problem hiding this comment.
Since CrashlyticsService supports multiple instances (setMultipleInstances(true)), calling _delete() on one instance will globally unregister the instrumentations for all instances via unregisterLoggerInstrumentations() and unregisterTracingInstrumentations(). If other instances are still active, they will lose automatic tracing and logging. Consider using a reference counter or tracking active instances to only unregister when the last instance is deleted.
| useEffect(() => { | ||
| const crashlytics = getCrashlytics(firebaseApp, crashlyticsOptions); | ||
| return registerGlobalErrorListeners(crashlytics); | ||
| const globalErrorListeners = registerGlobalErrorListeners(crashlytics); | ||
| return () => globalErrorListeners(); | ||
| }, [firebaseApp, crashlyticsOptions]); |
There was a problem hiding this comment.
If crashlyticsOptions is passed as an inline object (e.g., <FirebaseCrashlytics crashlyticsOptions={{...}} />), its reference will change on every render. Since React's useEffect dependency check is shallow, this effect will re-run on every render, repeatedly adding and removing global window error listeners. Consider deeply comparing or memoizing crashlyticsOptions before using it in the dependency array, or using a ref to store the options.
| React.useEffect(() => { | ||
| logViewBoundary(crashlytics, pattern); | ||
| }, [location.key]); |
There was a problem hiding this comment.
The React.useEffect uses crashlytics and pattern inside the effect, but the dependency array is [location.key]. To be compliant with react-hooks/exhaustive-deps and ensure the effect re-runs if the crashlytics instance or pattern changes, they should be included in the dependency array.
React.useEffect(() => {\n logViewBoundary(crashlytics, pattern);\n }, [crashlytics, pattern, location.key]);
Hey there! So you want to contribute to a Firebase SDK?
Before you file this pull request, please read these guidelines:
Discussion
If not, go file an issue about this before creating a pull request to discuss.
Testing
API Changes
PR that changes the public API, we would suggest first proposing your change in an
issue so that we can discuss it together.