chore: sync main into beta - #88
Closed
github-actions[bot] wants to merge 15 commits into
Closed
github-actions[bot] wants to merge 15 commits into
github-actions[bot] wants to merge 15 commits into
Conversation
## Summary - create a reviewable sync PR from main to beta after each main push - run the ci-ok check for pull requests targeting beta - document beta synchronization and protection requirements ## Validation - actionlint - git diff --check The beta ruleset could not be created from this session because GitHub API write operations are blocked by the sandbox. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
## Summary - restrict beta manual publishing to workflow dispatches run from the beta branch - document the required beta-branch dispatch Supersedes #46, which conflicts because #45 was squash-merged. ## Validation - actionlint - git diff --check Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
## Summary - document stable-only and beta-first release flows - document how to resolve beta synchronization release-state conflicts - restore repository scoping and explicit GitHub CLI failure handling in the beta sync workflow ## Validation - actionlint - git diff --check Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
## Summary - configure the beta Release Please workflow with target-branch: beta - prevent beta release runs from using main release state or updating main Release PRs ## Validation - actionlint - git diff --check Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
## Summary - configure Release Please's prerelease versioning strategy for beta releases - retain the beta prerelease GitHub Release flag and beta version identifier ## Validation - JSON validation - git diff --check Supersedes beta Release PR #57, which generated a plain version because the versioning strategy was omitted. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
## Summary - accept both valid Release Please beta suffix forms: -beta and -beta.N - correct beta release version examples in the release guide ## Validation - actionlint - git diff --check - exercised guard matching for beta, beta.1, and stable versions Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Merges `beta` into `main` to promote the accumulated prerelease work (0.7.0-beta.1 – 0.7.0-beta.3) to a stable release. Includes: - feat(api): forward original Error to Faro's beforeSend via originalError (#53) - fix(errors): forward originalError for unhandledrejection via NaisErrorsInstrumentation (#68) - feat: export markErrorCaptured for custom error boundaries (#71) --------- Co-authored-by: Hans Kristian Flaatten <hans.kristian.flaatten@nav.no> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: sindrerh2 <--global>
Co-authored-by: sindrerh2 <--global>
🤖 I have created a release *beep* *boop* --- ## [0.7.0](apm-v0.6.3...apm-v0.7.0) (2026-09-23) ### Features * **api:** forward original Error to Faro's beforeSend via originalError ([#53](#53)) ([ddf8d6b](ddf8d6b)) * export markErrorCaptured for custom error boundaries ([#71](#71)) ([ddf8d6b](ddf8d6b)) ### Bug Fixes * **errors:** forward originalError for unhandledrejection via NaisErrorsInstrumentation ([#68](#68)) ([ddf8d6b](ddf8d6b)) * **release:** accept valid beta versions ([#61](#61)) ([8eaff56](8eaff56)) * **release:** clarify beta release flows ([#49](#49)) ([8c969cf](8c969cf)) * **release:** enable beta prerelease versioning ([#58](#58)) ([ecc2e29](ecc2e29)) * **release:** restrict beta manual publishing ([#47](#47)) ([84a81ae](84a81ae)) * **release:** target beta branch ([#55](#55)) ([473453a](473453a)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Major version bumps (e.g. vitest 4->5) were silently grouped together with safe minor/patch bumps, risking breaking changes landing unreviewed. Majors now get their own separate PR. Co-authored-by: sindrerh2 <--global>
🤖 I have created a release *beep* *boop* --- ## [0.7.1](apm-v0.7.0...apm-v0.7.1) (2026-09-23) ### Bug Fixes * **deps:** exclude major bumps from npm-all Dependabot group ([#81](#81)) ([c270040](c270040)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…ates (#85) Bumps the npm-all group with 8 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@testing-library/react](https://github.com/testing-library/react-testing-library) | `16.3.2` | `16.3.3` | | [fast-check](https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check) | `4.9.0` | `4.10.1` | | [jsdom](https://github.com/jsdom/jsdom) | `30.0.1` | `30.1.0` | | [react](https://github.com/react/react/tree/HEAD/packages/react) | `19.2.8` | `19.3.0` | | [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) | `19.2.18` | `19.3.0` | | [react-dom](https://github.com/react/react/tree/HEAD/packages/react-dom) | `19.2.8` | `19.3.0` | | [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) | `19.2.4` | `19.3.0` | | [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) | `7.18.2` | `7.18.4` | Updates `@testing-library/react` from 16.3.2 to 16.3.3 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/testing-library/react-testing-library/releases">@testing-library/react's releases</a>.</em></p> <blockquote> <h2>v16.3.3</h2> <h2><a href="https://github.com/testing-library/react-testing-library/compare/v16.3.2...v16.3.3">16.3.3</a> (2026-08-27)</h2> <h3>Bug Fixes</h3> <ul> <li>Avoid act() re-entrant when dispatching events (<a href="https://redirect.github.com/testing-library/react-testing-library/issues/1468">#1468</a>) (<a href="https://github.com/testing-library/react-testing-library/commit/20ce75f2907ca0e5c5a8ae595c0e9a4e368c7800">20ce75f</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/testing-library/react-testing-library/commit/20ce75f2907ca0e5c5a8ae595c0e9a4e368c7800"><code>20ce75f</code></a> fix: Avoid act() re-entrant when dispatching events (<a href="https://redirect.github.com/testing-library/react-testing-library/issues/1468">#1468</a>)</li> <li><a href="https://github.com/testing-library/react-testing-library/commit/be9d81d91314c9f0bafaa363f70b409b4b31989c"><code>be9d81d</code></a> docs: fix typos in comments and types (<a href="https://redirect.github.com/testing-library/react-testing-library/issues/1446">#1446</a>)</li> <li>See full diff in <a href="https://github.com/testing-library/react-testing-library/compare/v16.3.2...v16.3.3">compare view</a></li> </ul> </details> <br /> Updates `fast-check` from 4.9.0 to 4.10.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/dubzzz/fast-check/releases">fast-check's releases</a>.</em></p> <blockquote> <h2>Fix fake-timer compatibility in timeout and interrupt plugins</h2> <p>[<a href="https://github.com/dubzzz/fast-check/tree/v4.10.1">Code</a>][<a href="https://github.com/dubzzz/fast-check/compare/v4.10.0...v4.10.1">Diff</a>]</p> <h2>Fixes</h2> <ul> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7293">PR#7293</a>) Bug: Capture timers for <code>interruptAfterTimeLimit</code> plugin</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7282">PR#7282</a>) CI: Temporarily disable documentation updates until v5</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7279">PR#7279</a>) Doc: Release note for 4.10.0</li> </ul> <h2>New plugin API and deprecations ahead of v5</h2> <p>[<a href="https://github.com/dubzzz/fast-check/tree/v4.10.0">Code</a>][<a href="https://github.com/dubzzz/fast-check/compare/v4.9.0...v4.10.0">Diff</a>]</p> <h2>Features</h2> <ul> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7216">PR#7216</a>) Introduce a plugin API</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7221">PR#7221</a>) Refine plugin API</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7222">PR#7222</a>) Add ability to configure plugins globally</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7224">PR#7224</a>) Add the <code>beforeEach</code> plugin to hook in life-cycle</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7227">PR#7227</a>) Create an <code>afterEach</code> plugin</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7232">PR#7232</a>) Deprecate life-cycle methods</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7235">PR#7235</a>) Support teardown of <code>beforeEach</code> plugin</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7228">PR#7228</a>) Add <code>timeout</code> plugin to stop long running predicates</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7237">PR#7237</a>) Deprecate timeout from parameters</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7238">PR#7238</a>) Pass a store to plugins</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7239">PR#7239</a>) Add extra plugin's method called <code>onAllRunsComplete</code></li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7240">PR#7240</a>) Deprecate <code>reporter</code> and <code>asyncReporter</code> from parameters</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7229">PR#7229</a>) Add plugin to interrupt after time limit</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7245">PR#7245</a>) Support <code>failOnInterrupt</code> on the plugin</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7230">PR#7230</a>) Add plugins to drop runs on already covered cases</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7259">PR#7259</a>) Add ability to decorate <code>generate</code> via Plugins</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7231">PR#7231</a>) Add the <code>unbiased</code> plugin to generate without bias</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7260">PR#7260</a>) Deprecate parameters superseded by plugins</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7261">PR#7261</a>) Deprecate v5 removals</li> </ul> <h2>Fixes</h2> <ul> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7225">PR#7225</a>) Bug: Proper ordering between plugins</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7127">PR#7127</a>) CI: Announce on Bluesky when drafting the release</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7217">PR#7217</a>) CI: Dedupe packages for pnpm</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7137">PR#7137</a>) Doc: Release note for 4.9.0</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7226">PR#7226</a>) Doc: Fix admonition titles on the website</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7246">PR#7246</a>) Doc: Add jkomyno as code contributor</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7251">PR#7251</a>) Performance: Single timer for <code>interruptAfterTimeLimit</code></li> </ul> <hr /> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/dubzzz/fast-check/blob/main/packages/fast-check/CHANGELOG.md">fast-check's changelog</a>.</em></p> <blockquote> <h1>4.10.1</h1> <p><em>Fix fake-timer compatibility in timeout and interrupt plugins</em> [<a href="https://github.com/dubzzz/fast-check/tree/v4.10.1">Code</a>][<a href="https://github.com/dubzzz/fast-check/compare/v4.10.0...v4.10.1">Diff</a>]</p> <h2>Fixes</h2> <ul> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7292">PR#7292</a>) Bug: Capture timer globals for <code>timeout</code> plugin</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7293">PR#7293</a>) Bug: Capture timers for <code>interruptAfterTimeLimit</code> plugin</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7282">PR#7282</a>) CI: Temporarily disable documentation updates until v5</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7279">PR#7279</a>) Doc: Release note for 4.10.0</li> </ul> <h1>4.10.0</h1> <p><em>New plugin API and deprecations ahead of v5</em> [<a href="https://github.com/dubzzz/fast-check/tree/v4.10.0">Code</a>][<a href="https://github.com/dubzzz/fast-check/compare/v4.9.0...v4.10.0">Diff</a>]</p> <h2>Features</h2> <ul> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7216">PR#7216</a>) Introduce a plugin API</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7221">PR#7221</a>) Refine plugin API</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7222">PR#7222</a>) Add ability to configure plugins globally</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7224">PR#7224</a>) Add the <code>beforeEach</code> plugin to hook in life-cycle</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7227">PR#7227</a>) Create an <code>afterEach</code> plugin</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7232">PR#7232</a>) Deprecate life-cycle methods</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7235">PR#7235</a>) Support teardown of <code>beforeEach</code> plugin</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7228">PR#7228</a>) Add <code>timeout</code> plugin to stop long running predicates</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7237">PR#7237</a>) Deprecate timeout from parameters</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7238">PR#7238</a>) Pass a store to plugins</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7239">PR#7239</a>) Add extra plugin's method called <code>onAllRunsComplete</code></li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7240">PR#7240</a>) Deprecate <code>reporter</code> and <code>asyncReporter</code> from parameters</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7229">PR#7229</a>) Add plugin to interrupt after time limit</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7245">PR#7245</a>) Support <code>failOnInterrupt</code> on the plugin</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7230">PR#7230</a>) Add plugins to drop runs on already covered cases</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7259">PR#7259</a>) Add ability to decorate <code>generate</code> via Plugins</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7231">PR#7231</a>) Add the <code>unbiased</code> plugin to generate without bias</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7260">PR#7260</a>) Deprecate parameters superseded by plugins</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7261">PR#7261</a>) Deprecate v5 removals</li> </ul> <h2>Fixes</h2> <ul> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7225">PR#7225</a>) Bug: Proper ordering between plugins</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7127">PR#7127</a>) CI: Announce on Bluesky when drafting the release</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7217">PR#7217</a>) CI: Dedupe packages for pnpm</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7137">PR#7137</a>) Doc: Release note for 4.9.0</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7226">PR#7226</a>) Doc: Fix admonition titles on the website</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7246">PR#7246</a>) Doc: Add jkomyno as code contributor</li> <li>(<a href="https://redirect.github.com/dubzzz/fast-check/pull/7251">PR#7251</a>) Performance: Single timer for <code>interruptAfterTimeLimit</code></li> </ul> <hr /> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/dubzzz/fast-check/commit/e93c6a8d525c8d54560c81a016d4828360190b09"><code>e93c6a8</code></a> 🔖 Update CHANGELOG.md for fast-check@4.10.1 (<a href="https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/7294">#7294</a>)</li> <li><a href="https://github.com/dubzzz/fast-check/commit/15744d0c507088bd2335378aef2e84502aef2b32"><code>15744d0</code></a> 🐛 Capture timers for <code>interruptAfterTimeLimit</code> plugin (<a href="https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/7293">#7293</a>)</li> <li><a href="https://github.com/dubzzz/fast-check/commit/fb2ea50326b646b9cc824370e7f65a18a1c547ac"><code>fb2ea50</code></a> 🐛 Capture timer globals for <code>timeout</code> plugin (<a href="https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/7292">#7292</a>)</li> <li><a href="https://github.com/dubzzz/fast-check/commit/4fba17d0cfc16aad8d910fdcc650c08018640e3f"><code>4fba17d</code></a> 🔖 Update CHANGELOG.md for fast-check@4.10.0, <code>@fast-check/jest</code><a href="https://github.com/2"><code>@2</code></a>.3.0, <a href="https://github.com/fast-ch"><code>@fast-ch</code></a>...</li> <li><a href="https://github.com/dubzzz/fast-check/commit/a433d8b1ed9b56f404c86ce04edf3d9d213bf05f"><code>a433d8b</code></a> ⬆️ Update dependency <code>@types/node</code> to ^24.13.4 (<a href="https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/7263">#7263</a>)</li> <li><a href="https://github.com/dubzzz/fast-check/commit/8470c4685bd9ce93883601870398c70dffb2a4e5"><code>8470c46</code></a> ⬆️ Update dependency <code>@microsoft/api-extractor</code> to ^7.59.1 (<a href="https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/7255">#7255</a>)</li> <li><a href="https://github.com/dubzzz/fast-check/commit/53822213d73079c370d1be8c4263657c7f28d3c4"><code>5382221</code></a> 🗑️ Deprecate v5 removals (<a href="https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/7261">#7261</a>)</li> <li><a href="https://github.com/dubzzz/fast-check/commit/3cc3696bb40e53fd5c09da887f6261c7e3b7ba57"><code>3cc3696</code></a> 🗑️ Deprecate parameters superseded by plugins (<a href="https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/7260">#7260</a>)</li> <li><a href="https://github.com/dubzzz/fast-check/commit/a93374dc9685d76a0aa73ee82379757fd01bad2b"><code>a93374d</code></a> ✨ Add the <code>unbiased</code> plugin to generate without bias (<a href="https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/7231">#7231</a>)</li> <li><a href="https://github.com/dubzzz/fast-check/commit/0f1bf99547a592f0a2dc2d09ddf07034a727f59d"><code>0f1bf99</code></a> ✨ Add ability to decorate <code>generate</code> via Plugins (<a href="https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/7259">#7259</a>)</li> <li>Additional commits viewable in <a href="https://github.com/dubzzz/fast-check/commits/v4.10.1/packages/fast-check">compare view</a></li> </ul> </details> <br /> Updates `jsdom` from 30.0.1 to 30.1.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/jsdom/jsdom/releases">jsdom's releases</a>.</em></p> <blockquote> <h2>v30.1.0</h2> <p>jsdom is feeling the AGI!</p> <p>This release is dedicated to <a href="https://github.com/scttcper"><code>@scttcper</code></a>, who unleashed <a href="https://github.com/codex"><code>@codex</code></a> upon jsdom and found tons of performance improvements. Along the way, he found and fixed many correctness issues as well.</p> <p>We really appreciate his thoughtful PRs, which did a great job following the project's contribution guidelines, and were clearly human-curated, with their PR descriptions edited to be brief and respectful of the maintainers' time.</p> <p>Thanks to <a href="https://github.com/scttcper"><code>@scttcper</code></a>, as well as all the other contributors of this release (most of whom were AI-assisted).</p> <ul> <li>Added named access to elements on <code>document</code>, such as <code>document.myForm</code> for <code><form name="myForm"></code>. (<a href="https://github.com/vojtisprime11"><code>@vojtisprime11</code></a>)</li> <li>Added <code>QuotaExceededError</code>, including its use for storage quota errors and oversized <code>crypto.getRandomValues()</code> requests.</li> <li>Added support for the relaxed DOM naming rules when creating elements, attributes, and document types.</li> <li>Improved performance of DOM construction, tree mutations, range operations, and live collection access, especially on large documents. (<a href="https://github.com/scttcper"><code>@scttcper</code></a>, <a href="https://github.com/erezrokah"><code>@erezrokah</code></a>)</li> <li>Improved performance of <code>getComputedStyle()</code>, style changes, and CSS serialization. (<a href="https://github.com/scttcper"><code>@scttcper</code></a>, <a href="https://github.com/jhult"><code>@jhult</code></a>)</li> <li>Improved performance of event dispatch, form control and label lookups, and updates to <code><select></code> elements and radio button groups. (<a href="https://github.com/scttcper"><code>@scttcper</code></a>)</li> <li>Reduced memory use when creating and working with DOM nodes, attributes, event listeners, and mutation observers. (<a href="https://github.com/scttcper"><code>@scttcper</code></a>)</li> <li>Changed <code>window.close()</code> to preserve access to the document and its DOM through retained references.</li> <li>Fixed <code>element.querySelectorAll()</code> returning no matches when the first part of the selector matches the element itself, which regressed in v30.0.0. (<a href="https://github.com/asamuzaK"><code>@asamuzaK</code></a>)</li> <li>Fixed case sensitivity in CSS attribute selectors, including selectors matching <code>data-state=""</code>, <code>title=""</code>, and other case-sensitive values. (<a href="https://github.com/asamuzaK"><code>@asamuzaK</code></a>)</li> <li>Fixed <code>document.querySelector()</code> failing to find a matching element when an earlier element has the same ID but does not match the rest of the selector. (<a href="https://github.com/vojtisprime11"><code>@vojtisprime11</code></a>)</li> <li>Fixed <code>:focus</code> matching in shadow trees. (<a href="https://github.com/asamuzaK"><code>@asamuzaK</code></a>)</li> <li>Fixed DOM insertion and replacement, including valid <code>document.replaceChildren()</code> calls, invalid document element and doctype placements, and mutations during <code>element.replaceWith()</code>.</li> <li>Fixed the ordering of script execution, custom element callbacks, iframe loading, and mutation observer notifications during DOM insertion, including in shadow trees.</li> <li>Fixed queued events and navigation continuing after <code>window.close()</code> or iframe removal, and prevented new scripts, resource loads, timers, and animation frames from starting in destroyed documents. (<a href="https://github.com/scttcper"><code>@scttcper</code></a>)</li> <li>Fixed parent documents waiting indefinitely for loading to finish when a child iframe removes itself during loading.</li> <li>Fixed request cancellation across redirects, during pending <code>requestInterceptor()</code> callbacks, and when reusing an <code>XMLHttpRequest</code> after aborting it.</li> <li>Fixed resource loading and <code>JSDOM.fromURL()</code> potentially hanging when response handling throws and response stream cleanup does not finish.</li> <li>Fixed successful cached resource loads being treated as aborted.</li> <li>Fixed <code>getComputedStyle()</code> and <code>document.styleSheets</code> using the wrong stylesheet order after inserting or updating <code><style></code> elements.</li> <li>Fixed <code>getComputedStyle()</code> ignoring nested <code>@import</code> and <code>@media</code> rules in imported stylesheets, and returning stale results after imports finish loading.</li> <li>Fixed style invalidation, stylesheet removal, and frame source updates in shadow trees.</li> <li>Fixed repeated <code>getComputedStyle()</code> calls changing case-sensitive background URLs, and inconsistent resolution of border shorthands containing system colors. (<a href="https://github.com/scttcper"><code>@scttcper</code></a>)</li> <li>Fixed computed border widths, including borderless elements incorrectly reporting <code>16px</code>, which regressed in v30.0.0. (<a href="https://github.com/Alberto-BaseNet"><code>@Alberto-BaseNet</code></a>)</li> <li>Fixed <code>getComputedStyle()</code> to resolve <code>'font-weight'</code> keywords to numeric values. (<a href="https://github.com/tianrking"><code>@tianrking</code></a>)</li> <li>Fixed <code>getComputedStyle()</code> to convert lengths to pixels inside CSS math functions containing percentages, and to resolve percentages in <code>'font-size'</code> math functions. (<a href="https://github.com/soroushm"><code>@soroushm</code></a>)</li> <li>Fixed serialization of <code>min()</code> and <code>max()</code> containing nested <code>calc()</code>, which regressed in v30.0.0. (<a href="https://github.com/asamuzaK"><code>@asamuzaK</code></a>)</li> <li>Fixed CSS values mixing lengths or percentages with math functions, such as <code>'grid-template-columns'</code> values containing both <code>100px</code> and <code>calc()</code>. (<a href="https://github.com/rome-xi"><code>@rome-xi</code></a>)</li> <li>Fixed parsing of <code>'background'</code> and <code>'border'</code> shorthands with adjacent components, such as <code>url(a.png)no-repeat</code>, including a crash when parsing inline styles. Also fixed handling of invalid shorthand assignments and escaped or unusual characters in CSS declarations. (<a href="https://github.com/asamuzaK"><code>@asamuzaK</code></a>)</li> <li>Fixed parsing of unitless zero values in <code>'flex'</code> shorthands, such as <code>35 1 0</code>, and rejection of negative <code>'flex-basis'</code> lengths and percentages. (<a href="https://github.com/asamuzaK"><code>@asamuzaK</code></a>)</li> <li>Fixed shorthand style assignments producing extra mutation records and custom element callbacks for intermediate values. (<a href="https://github.com/scttcper"><code>@scttcper</code></a>)</li> <li>Fixed <code>Range</code> and <code>Selection</code> handling of CDATA sections, including boundary offsets and range cloning, extraction, deletion, insertion, and stringification. (<a href="https://github.com/scttcper"><code>@scttcper</code></a>)</li> <li>Fixed <code>text.normalize()</code> incorrectly removing the text node or merging its siblings. (<a href="https://github.com/scttcper"><code>@scttcper</code></a>)</li> <li>Fixed cloning and importing CDATA sections and processing instructions whose contents have been modified, and serialization of CDATA sections adopted into HTML documents.</li> <li>Fixed stale named-property collections on <code>window</code>, and incorrect named access from empty or namespaced <code>id=""</code> and <code>name=""</code> values. (<a href="https://github.com/scttcper"><code>@scttcper</code></a>)</li> <li>Fixed elements in documents created with <code>DOMParser</code> or <code>document.implementation.createHTMLDocument()</code> appearing as named properties on <code>window</code> and being retained in memory. (<a href="https://github.com/Iaotle"><code>@Iaotle</code></a>)</li> <li>Fixed memory leaks from mutation observers retaining observed nodes, abort signals retaining removed event listeners, and storage event tracking retaining closed windows. (<a href="https://github.com/scttcper"><code>@scttcper</code></a>)</li> <li>Fixed <code>storage</code> events being sent to windows created after the storage change, and ensured surviving recipients still receive events when the source document is destroyed.</li> <li>Fixed attribute lookups after namespace prefix changes, and namespaced attributes incorrectly affecting ID lookups and element behavior. (<a href="https://github.com/scttcper"><code>@scttcper</code></a>)</li> <li>Fixed <code>input.list</code> in detached element trees. (<a href="https://github.com/scttcper"><code>@scttcper</code></a>)</li> <li>Fixed <code>attr.ownerDocument</code> after setting an attribute node on an element in another document or adopting its element. (<a href="https://github.com/Kjubikstronk"><code>@Kjubikstronk</code></a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/jsdom/jsdom/commit/556b11fc3cc4676a22e34fa45dfa09cbd95adfb1"><code>556b11f</code></a> 30.1.0</li> <li><a href="https://github.com/jsdom/jsdom/commit/9547fbf5b60af45d54c9e34d0891c7808f6ee2ce"><code>9547fbf</code></a> Tie queued tasks to document lifetime</li> <li><a href="https://github.com/jsdom/jsdom/commit/3be65d931da2a693a6cefaa9d623da2416177c9e"><code>3be65d9</code></a> Disable unused HTML reports in the WPT runner</li> <li><a href="https://github.com/jsdom/jsdom/commit/d555e61fb5a3725709434468130c46faaea0d1fe"><code>d555e61</code></a> Replace SymbolTree with a DOM-specific tree</li> <li><a href="https://github.com/jsdom/jsdom/commit/f28983d3cef7dfd47b81bc3b992d4995f18e9abc"><code>f28983d</code></a> Clone CDATA and processing instructions without revalidation</li> <li><a href="https://github.com/jsdom/jsdom/commit/33e4fa72b9f44ae7b30e5b27c5b9120604b5045f"><code>33e4fa7</code></a> Invalidate computed styles after CSS imports load</li> <li><a href="https://github.com/jsdom/jsdom/commit/ec6fd5b3972f5bc678f667f8d2c9d502d3175eba"><code>ec6fd5b</code></a> Select storage event recipients at mutation time</li> <li><a href="https://github.com/jsdom/jsdom/commit/bcc037a836c86713f83c08ef80f6ebe5d989bc20"><code>bcc037a</code></a> Honor script type and legacy event attributes</li> <li><a href="https://github.com/jsdom/jsdom/commit/faa5c4f76151174889523dcb7351e1299d375ac1"><code>faa5c4f</code></a> Preserve currentScript across nested scripts</li> <li><a href="https://github.com/jsdom/jsdom/commit/8d7a37fc040634781444c2cba53f72a4cc1e80bf"><code>8d7a37f</code></a> Avoid quadratic HTML collection iteration</li> <li>Additional commits viewable in <a href="https://github.com/jsdom/jsdom/compare/v30.0.1...v30.1.0">compare view</a></li> </ul> </details> <br /> Updates `react` from 19.2.8 to 19.3.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/react/react/releases">react's releases</a>.</em></p> <blockquote> <h2>19.3.0 (September 9, 2026)</h2> <p>Below is a list of all new features, APIs, and bug fixes.</p> <p>Read the <a href="https://react.dev/blog/2026/09/09/react-19-3">React 19.3 release post</a> for more information.</p> <h2>New React Features</h2> <ul> <li><code><ViewTransition /></code>: Adds <code><ViewTransition /></code> and <code>addTransitionType</code> APIs to power View Transition animations in React (<a href="https://github.com/sebmarkbage"><code>@sebmarkbage</code></a>, <a href="https://github.com/jackpope"><code>@jackpope</code></a>, <a href="https://github.com/gaearon"><code>@gaearon</code></a>: <a href="https://redirect.github.com/facebook/react/pull/31975">#31975</a>, <a href="https://redirect.github.com/facebook/react/pull/31987">#31987</a>, <a href="https://redirect.github.com/facebook/react/pull/31996">#31996</a>, <a href="https://redirect.github.com/facebook/react/pull/31999">#31999</a>, <a href="https://redirect.github.com/facebook/react/pull/32001">#32001</a>, <a href="https://redirect.github.com/facebook/react/pull/32002">#32002</a>, <a href="https://redirect.github.com/facebook/react/pull/32028">#32028</a>, <a href="https://redirect.github.com/facebook/react/pull/32029">#32029</a>, <a href="https://redirect.github.com/facebook/react/pull/32031">#32031</a>, <a href="https://redirect.github.com/facebook/react/pull/32034">#32034</a>, <a href="https://redirect.github.com/facebook/react/pull/32038">#32038</a>, <a href="https://redirect.github.com/facebook/react/pull/32041">#32041</a>, <a href="https://redirect.github.com/facebook/react/pull/32050">#32050</a>, <a href="https://redirect.github.com/facebook/react/pull/32090">#32090</a>, <a href="https://redirect.github.com/facebook/react/pull/32105">#32105</a>, <a href="https://redirect.github.com/facebook/react/pull/32254">#32254</a>, <a href="https://redirect.github.com/facebook/react/pull/32379">#32379</a>, <a href="https://redirect.github.com/facebook/react/pull/32422">#32422</a>, <a href="https://redirect.github.com/facebook/react/pull/32462">#32462</a>, <a href="https://redirect.github.com/facebook/react/pull/32540">#32540</a>, <a href="https://redirect.github.com/facebook/react/pull/32545">#32545</a>, <a href="https://redirect.github.com/facebook/react/pull/32585">#32585</a>, <a href="https://redirect.github.com/facebook/react/pull/32599">#32599</a>, <a href="https://redirect.github.com/facebook/react/pull/32611">#32611</a>, <a href="https://redirect.github.com/facebook/react/pull/32612">#32612</a>, <a href="https://redirect.github.com/facebook/react/pull/32617">#32617</a>, <a href="https://redirect.github.com/facebook/react/pull/32651">#32651</a>, <a href="https://redirect.github.com/facebook/react/pull/32653">#32653</a>, <a href="https://redirect.github.com/facebook/react/pull/32656">#32656</a>, <a href="https://redirect.github.com/facebook/react/pull/32664">#32664</a>, <a href="https://redirect.github.com/facebook/react/pull/32699">#32699</a>, <a href="https://redirect.github.com/facebook/react/pull/32723">#32723</a>, <a href="https://redirect.github.com/facebook/react/pull/32734">#32734</a>, <a href="https://redirect.github.com/facebook/react/pull/32751">#32751</a>, <a href="https://redirect.github.com/facebook/react/pull/32752">#32752</a>, <a href="https://redirect.github.com/facebook/react/pull/32760">#32760</a>, <a href="https://redirect.github.com/facebook/react/pull/32761">#32761</a>, <a href="https://redirect.github.com/facebook/react/pull/32764">#32764</a>, <a href="https://redirect.github.com/facebook/react/pull/32772">#32772</a>, <a href="https://redirect.github.com/facebook/react/pull/32790">#32790</a>, <a href="https://redirect.github.com/facebook/react/pull/32819">#32819</a>, <a href="https://redirect.github.com/facebook/react/pull/32820">#32820</a>, <a href="https://redirect.github.com/facebook/react/pull/32822">#32822</a>, <a href="https://redirect.github.com/facebook/react/pull/32833">#32833</a>, <a href="https://redirect.github.com/facebook/react/pull/32849">#32849</a>, <a href="https://redirect.github.com/facebook/react/pull/33094">#33094</a>, <a href="https://redirect.github.com/facebook/react/pull/33191">#33191</a>, <a href="https://redirect.github.com/facebook/react/pull/33200">#33200</a>, <a href="https://redirect.github.com/facebook/react/pull/33206">#33206</a>, <a href="https://redirect.github.com/facebook/react/pull/33293">#33293</a>, <a href="https://redirect.github.com/facebook/react/pull/33330">#33330</a>, <a href="https://redirect.github.com/facebook/react/pull/33331">#33331</a>, <a href="https://redirect.github.com/facebook/react/pull/33332">#33332</a>, <a href="https://redirect.github.com/facebook/react/pull/33357">#33357</a>, <a href="https://redirect.github.com/facebook/react/pull/33362">#33362</a>, <a href="https://redirect.github.com/facebook/react/pull/33433">#33433</a>, <a href="https://redirect.github.com/facebook/react/pull/33576">#33576</a>, <a href="https://redirect.github.com/facebook/react/pull/34374">#34374</a>, <a href="https://redirect.github.com/facebook/react/pull/34450">#34450</a>, <a href="https://redirect.github.com/facebook/react/pull/34481">#34481</a>, <a href="https://redirect.github.com/facebook/react/pull/34500">#34500</a>, <a href="https://redirect.github.com/facebook/react/pull/34502">#34502</a>, <a href="https://redirect.github.com/facebook/react/pull/34510">#34510</a>, <a href="https://redirect.github.com/facebook/react/pull/34511">#34511</a>, <a href="https://redirect.github.com/facebook/react/pull/34539">#34539</a>, <a href="https://redirect.github.com/facebook/react/pull/35567">#35567</a>, <a href="https://redirect.github.com/facebook/react/pull/35564">#35564</a>, <a href="https://redirect.github.com/facebook/react/pull/35485">#35485</a>, <a href="https://redirect.github.com/facebook/react/pull/35380">#35380</a>, <a href="https://redirect.github.com/facebook/react/pull/35063">#35063</a>, <a href="https://redirect.github.com/facebook/react/pull/35060">#35060</a>, <a href="https://redirect.github.com/facebook/react/pull/34676">#34676</a>, <a href="https://redirect.github.com/facebook/react/pull/36917">#36917</a>, <a href="https://redirect.github.com/facebook/react/pull/35337">#35337</a>, <a href="https://redirect.github.com/facebook/react/pull/35520">#35520</a>)</li> <li>Fragment Refs: Add Refs to <code><Fragment /></code> to support composable platform behavior (<a href="https://github.com/jackpope"><code>@jackpope</code></a>, <a href="https://github.com/sebmarkbage"><code>@sebmarkbage</code></a>, <a href="https://github.com/eps1lon"><code>@eps1lon</code></a>, <a href="https://github.com/Dhakshin2007"><code>@Dhakshin2007</code></a>, <a href="https://github.com/chirokas"><code>@chirokas</code></a>, <a href="https://github.com/teamleaderleo"><code>@teamleaderleo</code></a>, <a href="https://github.com/fallintoplace"><code>@fallintoplace</code></a>: <a href="https://redirect.github.com/facebook/react/pull/32465">#32465</a>, <a href="https://redirect.github.com/facebook/react/pull/32613">#32613</a>, <a href="https://redirect.github.com/facebook/react/pull/32619">#32619</a>, <a href="https://redirect.github.com/facebook/react/pull/32654">#32654</a>, <a href="https://redirect.github.com/facebook/react/pull/32660">#32660</a>, <a href="https://redirect.github.com/facebook/react/pull/32682">#32682</a>, <a href="https://redirect.github.com/facebook/react/pull/32722">#32722</a>, <a href="https://redirect.github.com/facebook/react/pull/32813">#32813</a>, <a href="https://redirect.github.com/facebook/react/pull/32814">#32814</a>, <a href="https://redirect.github.com/facebook/react/pull/33056">#33056</a>, <a href="https://redirect.github.com/facebook/react/pull/33058">#33058</a>, <a href="https://redirect.github.com/facebook/react/pull/33093">#33093</a>, <a href="https://redirect.github.com/facebook/react/pull/34069">#34069</a>, <a href="https://redirect.github.com/facebook/react/pull/34103">#34103</a>, <a href="https://redirect.github.com/facebook/react/pull/34544">#34544</a>, <a href="https://redirect.github.com/facebook/react/pull/34545">#34545</a>, <a href="https://redirect.github.com/facebook/react/pull/37062">#37062</a>, <a href="https://redirect.github.com/facebook/react/pull/37061">#37061</a>, <a href="https://redirect.github.com/facebook/react/pull/37060">#37060</a>, <a href="https://redirect.github.com/facebook/react/pull/36047">#36047</a>, <a href="https://redirect.github.com/facebook/react/pull/36010">#36010</a>, <a href="https://redirect.github.com/facebook/react/pull/35642">#35642</a>, <a href="https://redirect.github.com/facebook/react/pull/35641">#35641</a>, <a href="https://redirect.github.com/facebook/react/pull/35637">#35637</a>, <a href="https://redirect.github.com/facebook/react/pull/35630">#35630</a>, <a href="https://redirect.github.com/facebook/react/pull/34935">#34935</a>, <a href="https://redirect.github.com/facebook/react/pull/37457">#37457</a>, <a href="https://redirect.github.com/facebook/react/pull/37408">#37408</a>, <a href="https://redirect.github.com/facebook/react/pull/37326">#37326</a>, <a href="https://redirect.github.com/facebook/react/pull/37251">#37251</a>, <a href="https://redirect.github.com/facebook/react/pull/37171">#37171</a>, <a href="https://redirect.github.com/facebook/react/pull/37169">#37169</a>, <a href="https://redirect.github.com/facebook/react/pull/37168">#37168</a>, <a href="https://redirect.github.com/facebook/react/pull/37167">#37167</a>, <a href="https://redirect.github.com/facebook/react/pull/37166">#37166</a>, <a href="https://redirect.github.com/facebook/react/pull/37165">#37165</a>, <a href="https://redirect.github.com/facebook/react/pull/37164">#37164</a>, <a href="https://redirect.github.com/facebook/react/pull/37163">#37163</a>, <a href="https://redirect.github.com/facebook/react/pull/37162">#37162</a>, <a href="https://redirect.github.com/facebook/react/pull/37161">#37161</a>, <a href="https://redirect.github.com/facebook/react/pull/37160">#37160</a>, <a href="https://redirect.github.com/facebook/react/pull/37125">#37125</a>, <a href="https://redirect.github.com/facebook/react/pull/37063">#37063</a>)</li> </ul> <h2>New React DOM Features</h2> <ul> <li><code>browser()</code>: a new <code>react-dom</code> API that returns a usable which errors during server rendering and resolves in the browser. <code>use(browser())</code> inside a <code><Suspense></code> boundary marks a subtree as browser-only without reporting a recoverable error (<a href="https://github.com/gnoff"><code>@gnoff</code></a>: <a href="https://redirect.github.com/facebook/react/pull/37143">#37143</a>, <a href="https://redirect.github.com/facebook/react/pull/37241">#37241</a>) <ul> <li>Added an <code>onBrowserBailout</code> option to the <code>react-dom/server</code> APIs to observe when a subtree defers to the browser (<a href="https://github.com/gnoff"><code>@gnoff</code></a> <a href="https://redirect.github.com/facebook/react/pull/37193">#37193</a>)</li> </ul> </li> </ul> <h2>Notable changes</h2> <ul> <li>Enable Trusted Types API integration (<a href="https://github.com/rickhanlonii"><code>@rickhanlonii</code></a> <a href="https://redirect.github.com/facebook/react/pull/35816">#35816</a>)</li> <li>Transitions now render independently instead of being entangled into a single render, so a slow transition no longer holds up unrelated ones (<a href="https://github.com/acdlite"><code>@acdlite</code></a> <a href="https://redirect.github.com/facebook/react/pull/37290">#37290</a>)</li> <li>Added a DEV-only warning when a component appears to have been unblocked by calling <code>use()</code> conditionally (<a href="https://github.com/hoxyq"><code>@hoxyq</code></a>, <a href="https://github.com/eps1lon"><code>@eps1lon</code></a>: <a href="https://redirect.github.com/facebook/react/pull/37104">#37104</a>, <a href="https://redirect.github.com/facebook/react/pull/37203">#37203</a>, <a href="https://redirect.github.com/facebook/react/pull/37491">#37491</a>)</li> </ul> <h2>All Changes</h2> <h3>React</h3> <ul> <li>Fast Refresh Fixes <ul> <li>Fix Fast Refresh to find and remount edits to components wrapped behind <code>lazy()</code> (<a href="https://github.com/sophiebits"><code>@sophiebits</code></a> <a href="https://redirect.github.com/facebook/react/pull/36965">#36965</a>)</li> <li>Fix Fast Refresh so edits to a <code>memo()</code> comparison function take effect (<a href="https://github.com/sophiebits"><code>@sophiebits</code></a> <a href="https://redirect.github.com/facebook/react/pull/36964">#36964</a>)</li> <li>Fix Fast Refresh crash when an edit changes the kind of a component's type (<a href="https://github.com/sophiebits"><code>@sophiebits</code></a> <a href="https://redirect.github.com/facebook/react/pull/36963">#36963</a>)</li> <li>Unify hot reload type resolution for Fast Refresh (<a href="https://github.com/sophiebits"><code>@sophiebits</code></a> <a href="https://redirect.github.com/facebook/react/pull/36962">#36962</a>)</li> <li>Fix Fast Refresh to remount correctly when an edit changes the component kind (<a href="https://github.com/sophiebits"><code>@sophiebits</code></a> <a href="https://redirect.github.com/facebook/react/pull/36950">#36950</a>)</li> <li>Double invoke effects in StrictMode after Fast Refresh (<a href="https://github.com/eps1lon"><code>@eps1lon</code></a> <a href="https://redirect.github.com/facebook/react/pull/35962">#35962</a>)</li> </ul> </li> <li>Performance Track Fixes <ul> <li>Prevent crash when accessing <code>$$typeof</code> in Performance Tracks (<a href="https://github.com/eps1lon"><code>@eps1lon</code></a> <a href="https://redirect.github.com/facebook/react/pull/35679">#35679</a>)</li> <li>Handle non-string function names in Performance Tracks (<a href="https://github.com/eps1lon"><code>@eps1lon</code></a> <a href="https://redirect.github.com/facebook/react/pull/35659">#35659</a>)</li> <li>Use minus (<code>-</code>) instead of en dash for removed props in Performance Tracks (<a href="https://github.com/eps1lon"><code>@eps1lon</code></a> <a href="https://redirect.github.com/facebook/react/pull/35649">#35649</a>)</li> <li>Handle arrays with bigints in deep objects in Performance Tracks (<a href="https://github.com/eps1lon"><code>@eps1lon</code></a> <a href="https://redirect.github.com/facebook/react/pull/35648">#35648</a>)</li> <li>Don't enumerate typed array props in Performance Tracks in DEV (<a href="https://github.com/UditDewan"><code>@UditDewan</code></a> <a href="https://redirect.github.com/facebook/react/pull/36913">#36913</a>)</li> <li>Bail out of diffing wide objects and arrays in Performance Tracks (<a href="https://github.com/eps1lon"><code>@eps1lon</code></a> <a href="https://redirect.github.com/facebook/react/pull/34742">#34742</a>)</li> <li>Clear potentially large performance measures in DEV (<a href="https://github.com/hoxyq"><code>@hoxyq</code></a> <a href="https://redirect.github.com/facebook/react/pull/34803">#34803</a>)</li> <li>Fix missing else branch for renders with no props change in Performance Tracks (<a href="https://github.com/hoxyq"><code>@hoxyq</code></a> <a href="https://redirect.github.com/facebook/react/pull/34837">#34837</a>)</li> </ul> </li> <li>Activity Fixes <ul> <li>Fix <code>useSyncExternalStore</code> missing store mutations that happened while an Activity tree was hidden (<a href="https://github.com/sophiebits"><code>@sophiebits</code></a> <a href="https://redirect.github.com/facebook/react/pull/36947">#36947</a>)</li> <li>Hide portal contents when an Activity is hidden (<a href="https://github.com/acdlite"><code>@acdlite</code></a> <a href="https://redirect.github.com/facebook/react/pull/35091">#35091</a>)</li> <li>Prevent metadata hoisting in hidden <code><Activity></code> trees (<a href="https://github.com/ronnakamoto"><code>@ronnakamoto</code></a> <a href="https://redirect.github.com/facebook/react/pull/34983">#34983</a>)</li> <li>Prevent errors thrown inside a hidden Activity from escaping to the visible UI (<a href="https://github.com/acdlite"><code>@acdlite</code></a> <a href="https://redirect.github.com/facebook/react/pull/35074">#35074</a>)</li> <li>Don't unhide a node if a direct parent Offscreen is still hidden (<a href="https://github.com/sebmarkbage"><code>@sebmarkbage</code></a> <a href="https://redirect.github.com/facebook/react/pull/34821">#34821</a>)</li> <li>Don't show internal <code><Offscreen></code> component in error messages (<a href="https://github.com/rickhanlonii"><code>@rickhanlonii</code></a> <a href="https://redirect.github.com/facebook/react/pull/35763">#35763</a>)</li> </ul> </li> <li>Warn in DEV when a component appears to have been unblocked by a conditional <code>use()</code> (<a href="https://github.com/hoxyq"><code>@hoxyq</code></a>, <a href="https://github.com/eps1lon"><code>@eps1lon</code></a>: <a href="https://redirect.github.com/facebook/react/pull/37104">#37104</a>, <a href="https://redirect.github.com/facebook/react/pull/37203">#37203</a>, <a href="https://redirect.github.com/facebook/react/pull/37491">#37491</a>)</li> <li>Render transitions independently instead of entangling them into a single render (<a href="https://github.com/acdlite"><code>@acdlite</code></a> <a href="https://redirect.github.com/facebook/react/pull/37290">#37290</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/react/react/blob/main/CHANGELOG.md">react's changelog</a>.</em></p> <blockquote> <h2>19.3.0 (September 9, 2026)</h2> <h3>New React Features</h3> <ul> <li><code><ViewTransition /></code>: Adds <code><ViewTransition /></code> and <code>addTransitionType</code> APIs to power View Transition animations in React (<a href="https://github.com/sebmarkbage"><code>@sebmarkbage</code></a>, <a href="https://github.com/jackpope"><code>@jackpope</code></a>, <a href="https://github.com/gaearon"><code>@gaearon</code></a>: <a href="https://redirect.github.com/facebook/react/pull/31975">#31975</a>, <a href="https://redirect.github.com/facebook/react/pull/31987">#31987</a>, <a href="https://redirect.github.com/facebook/react/pull/31996">#31996</a>, <a href="https://redirect.github.com/facebook/react/pull/31999">#31999</a>, <a href="https://redirect.github.com/facebook/react/pull/32001">#32001</a>, <a href="https://redirect.github.com/facebook/react/pull/32002">#32002</a>, <a href="https://redirect.github.com/facebook/react/pull/32028">#32028</a>, <a href="https://redirect.github.com/facebook/react/pull/32029">#32029</a>, <a href="https://redirect.github.com/facebook/react/pull/32031">#32031</a>, <a href="https://redirect.github.com/facebook/react/pull/32034">#32034</a>, <a href="https://redirect.github.com/facebook/react/pull/32038">#32038</a>, <a href="https://redirect.github.com/facebook/react/pull/32041">#32041</a>, <a href="https://redirect.github.com/facebook/react/pull/32050">#32050</a>, <a href="https://redirect.github.com/facebook/react/pull/32090">#32090</a>, <a href="https://redirect.github.com/facebook/react/pull/32105">#32105</a>, <a href="https://redirect.github.com/facebook/react/pull/32254">#32254</a>, <a href="https://redirect.github.com/facebook/react/pull/32379">#32379</a>, <a href="https://redirect.github.com/facebook/react/pull/32422">#32422</a>, <a href="https://redirect.github.com/facebook/react/pull/32462">#32462</a>, <a href="https://redirect.github.com/facebook/react/pull/32540">#32540</a>, <a href="https://redirect.github.com/facebook/react/pull/32545">#32545</a>, <a href="https://redirect.github.com/facebook/react/pull/32585">#32585</a>, <a href="https://redirect.github.com/facebook/react/pull/32599">#32599</a>, <a href="https://redirect.github.com/facebook/react/pull/32611">#32611</a>, <a href="https://redirect.github.com/facebook/react/pull/32612">#32612</a>, <a href="https://redirect.github.com/facebook/react/pull/32617">#32617</a>, <a href="https://redirect.github.com/facebook/react/pull/32651">#32651</a>, <a href="https://redirect.github.com/facebook/react/pull/32653">#32653</a>, <a href="https://redirect.github.com/facebook/react/pull/32656">#32656</a>, <a href="https://redirect.github.com/facebook/react/pull/32664">#32664</a>, <a href="https://redirect.github.com/facebook/react/pull/32699">#32699</a>, <a href="https://redirect.github.com/facebook/react/pull/32723">#32723</a>, <a href="https://redirect.github.com/facebook/react/pull/32734">#32734</a>, <a href="https://redirect.github.com/facebook/react/pull/32751">#32751</a>, <a href="https://redirect.github.com/facebook/react/pull/32752">#32752</a>, <a href="https://redirect.github.com/facebook/react/pull/32760">#32760</a>, <a href="https://redirect.github.com/facebook/react/pull/32761">#32761</a>, <a href="https://redirect.github.com/facebook/react/pull/32764">#32764</a>, <a href="https://redirect.github.com/facebook/react/pull/32772">#32772</a>, <a href="https://redirect.github.com/facebook/react/pull/32790">#32790</a>, <a href="https://redirect.github.com/facebook/react/pull/32819">#32819</a>, <a href="https://redirect.github.com/facebook/react/pull/32820">#32820</a>, <a href="https://redirect.github.com/facebook/react/pull/32822">#32822</a>, <a href="https://redirect.github.com/facebook/react/pull/32833">#32833</a>, <a href="https://redirect.github.com/facebook/react/pull/32849">#32849</a>, <a href="https://redirect.github.com/facebook/react/pull/33094">#33094</a>, <a href="https://redirect.github.com/facebook/react/pull/33191">#33191</a>, <a href="https://redirect.github.com/facebook/react/pull/33200">#33200</a>, <a href="https://redirect.github.com/facebook/react/pull/33206">#33206</a>, <a href="https://redirect.github.com/facebook/react/pull/33293">#33293</a>, <a href="https://redirect.github.com/facebook/react/pull/33330">#33330</a>, <a href="https://redirect.github.com/facebook/react/pull/33331">#33331</a>, <a href="https://redirect.github.com/facebook/react/pull/33332">#33332</a>, <a href="https://redirect.github.com/facebook/react/pull/33357">#33357</a>, <a href="https://redirect.github.com/facebook/react/pull/33362">#33362</a>, <a href="https://redirect.github.com/facebook/react/pull/33433">#33433</a>, <a href="https://redirect.github.com/facebook/react/pull/33576">#33576</a>, <a href="https://redirect.github.com/facebook/react/pull/34374">#34374</a>, <a href="https://redirect.github.com/facebook/react/pull/34450">#34450</a>, <a href="https://redirect.github.com/facebook/react/pull/34481">#34481</a>, <a href="https://redirect.github.com/facebook/react/pull/34500">#34500</a>, <a href="https://redirect.github.com/facebook/react/pull/34502">#34502</a>, <a href="https://redirect.github.com/facebook/react/pull/34510">#34510</a>, <a href="https://redirect.github.com/facebook/react/pull/34511">#34511</a>, <a href="https://redirect.github.com/facebook/react/pull/34539">#34539</a>, <a href="https://redirect.github.com/facebook/react/pull/35567">#35567</a>, <a href="https://redirect.github.com/facebook/react/pull/35564">#35564</a>, <a href="https://redirect.github.com/facebook/react/pull/35485">#35485</a>, <a href="https://redirect.github.com/facebook/react/pull/35380">#35380</a>, <a href="https://redirect.github.com/facebook/react/pull/35063">#35063</a>, <a href="https://redirect.github.com/facebook/react/pull/35060">#35060</a>, <a href="https://redirect.github.com/facebook/react/pull/34676">#34676</a>, <a href="https://redirect.github.com/facebook/react/pull/36917">#36917</a>, <a href="https://redirect.github.com/facebook/react/pull/35337">#35337</a>, <a href="https://redirect.github.com/facebook/react/pull/35520">#35520</a>)</li> <li>Fragment Refs: Add Refs to <code><Fragment /></code> to support composable platform behavior (<a href="https://github.com/jackpope"><code>@jackpope</code></a>, <a href="https://github.com/sebmarkbage"><code>@sebmarkbage</code></a>, <a href="https://github.com/eps1lon"><code>@eps1lon</code></a>, <a href="https://github.com/Dhakshin2007"><code>@Dhakshin2007</code></a>, <a href="https://github.com/chirokas"><code>@chirokas</code></a>, <a href="https://github.com/teamleaderleo"><code>@teamleaderleo</code></a>, <a href="https://github.com/fallintoplace"><code>@fallintoplace</code></a>: <a href="https://redirect.github.com/facebook/react/pull/32465">#32465</a>, <a href="https://redirect.github.com/facebook/react/pull/32613">#32613</a>, <a href="https://redirect.github.com/facebook/react/pull/32619">#32619</a>, <a href="https://redirect.github.com/facebook/react/pull/32654">#32654</a>, <a href="https://redirect.github.com/facebook/react/pull/32660">#32660</a>, <a href="https://redirect.github.com/facebook/react/pull/32682">#32682</a>, <a href="https://redirect.github.com/facebook/react/pull/32722">#32722</a>, <a href="https://redirect.github.com/facebook/react/pull/32813">#32813</a>, <a href="https://redirect.github.com/facebook/react/pull/32814">#32814</a>, <a href="https://redirect.github.com/facebook/react/pull/33056">#33056</a>, <a href="https://redirect.github.com/facebook/react/pull/33058">#33058</a>, <a href="https://redirect.github.com/facebook/react/pull/33093">#33093</a>, <a href="https://redirect.github.com/facebook/react/pull/34069">#34069</a>, <a href="https://redirect.github.com/facebook/react/pull/34103">#34103</a>, <a href="https://redirect.github.com/facebook/react/pull/34544">#34544</a>, <a href="https://redirect.github.com/facebook/react/pull/34545">#34545</a>, <a href="https://redirect.github.com/facebook/react/pull/37062">#37062</a>, <a href="https://redirect.github.com/facebook/react/pull/37061">#37061</a>, <a href="https://redirect.github.com/facebook/react/pull/37060">#37060</a>, <a href="https://redirect.github.com/facebook/react/pull/36047">#36047</a>, <a href="https://redirect.github.com/facebook/react/pull/36010">#36010</a>, <a href="https://redirect.github.com/facebook/react/pull/35642">#35642</a>, <a href="https://redirect.github.com/facebook/react/pull/35641">#35641</a>, <a href="https://redirect.github.com/facebook/react/pull/35637">#35637</a>, <a href="https://redirect.github.com/facebook/react/pull/35630">#35630</a>, <a href="https://redirect.github.com/facebook/react/pull/34935">#34935</a>, <a href="https://redirect.github.com/facebook/react/pull/37457">#37457</a>, <a href="https://redirect.github.com/facebook/react/pull/37408">#37408</a>, <a href="https://redirect.github.com/facebook/react/pull/37326">#37326</a>, <a href="https://redirect.github.com/facebook/react/pull/37251">#37251</a>, <a href="https://redirect.github.com/facebook/react/pull/37171">#37171</a>, <a href="https://redirect.github.com/facebook/react/pull/37169">#37169</a>, <a href="https://redirect.github.com/facebook/react/pull/37168">#37168</a>, <a href="https://redirect.github.com/facebook/react/pull/37167">#37167</a>, <a href="https://redirect.github.com/facebook/react/pull/37166">#37166</a>, <a href="https://redirect.github.com/facebook/react/pull/37165">#37165</a>, <a href="https://redirect.github.com/facebook/react/pull/37164">#37164</a>, <a href="https://redirect.github.com/facebook/react/pull/37163">#37163</a>, <a href="https://redirect.github.com/facebook/react/pull/37162">#37162</a>, <a href="https://redirect.github.com/facebook/react/pull/37161">#37161</a>, <a href="https://redirect.github.com/facebook/react/pull/37160">#37160</a>, <a href="https://redirect.github.com/facebook/react/pull/37125">#37125</a>, <a href="https://redirect.github.com/facebook/react/pull/37063">#37063</a>)</li> </ul> <h3>New React DOM Features</h3> <ul> <li><code>browser()</code>: a new <code>react-dom</code> API that returns a usable which errors during server rendering and resolves in the browser. <code>use(browser())</code> inside a <code><Suspense></code> boundary marks a subtree as browser-only without reporting a recoverable error (<a href="https://github.com/gnoff"><code>@gnoff</code></a>: <a href="https://redirect.github.com/facebook/react/pull/37143">#37143</a>, <a href="https://redirect.github.com/facebook/react/pull/37241">#37241</a>) <ul> <li>Added an <code>onBrowserBailout</code> option to the <code>react-dom/server</code> APIs to observe when a subtree defers to the browser (<a href="https://github.com/gnoff"><code>@gnoff</code></a> <a href="https://redirect.github.com/facebook/react/pull/37193">#37193</a>)</li> </ul> </li> </ul> <h3>Notable changes</h3> <ul> <li>Enable Trusted Types API integration (<a href="https://github.com/rickhanlonii"><code>@rickhanlonii</code></a> <a href="https://redirect.github.com/facebook/react/pull/35816">#35816</a>)</li> <li>Transitions now render independently instead of being entangled into a single render, so a slow transition no longer holds up unrelated ones (<a href="https://github.com/acdlite"><code>@acdlite</code></a> <a href="https://redirect.github.com/facebook/react/pull/37290">#37290</a>)</li> <li>Added a DEV-only warning when a component appears to have been unblocked by calling <code>use()</code> conditionally (<a href="https://github.com/hoxyq"><code>@hoxyq</code></a>, <a href="https://github.com/eps1lon"><code>@eps1lon</code></a>: <a href="https://redirect.github.com/facebook/react/pull/37104">#37104</a>, <a href="https://redirect.github.com/facebook/react/pull/37203">#37203</a>, <a href="https://redirect.github.com/facebook/react/pull/37491">#37491</a>)</li> </ul> <h3>All Changes</h3> <h4>React</h4> <ul> <li>Fast Refresh Fixes <ul> <li>Fix Fast Refresh to find and remount edits to components wrapped behind <code>lazy()</code> (<a href="https://github.com/sophiebits"><code>@sophiebits</code></a> <a href="https://redirect.github.com/facebook/react/pull/36965">#36965</a>)</li> <li>Fix Fast Refresh so edits to a <code>memo()</code> comparison function take effect (<a href="https://github.com/sophiebits"><code>@sophiebits</code></a> <a href="https://redirect.github.com/facebook/react/pull/36964">#36964</a>)</li> <li>Fix Fast Refresh crash when an edit changes the kind of a component's type (<a href="https://github.com/sophiebits"><code>@sophiebits</code></a> <a href="https://redirect.github.com/facebook/react/pull/36963">#36963</a>)</li> <li>Unify hot reload type resolution for Fast Refresh (<a href="https://github.com/sophiebits"><code>@sophiebits</code></a> <a href="https://redirect.github.com/facebook/react/pull/36962">#36962</a>)</li> <li>Fix Fast Refresh to remount correctly when an edit changes the component kind (<a href="https://github.com/sophiebits"><code>@sophiebits</code></a> <a href="https://redirect.github.com/facebook/react/pull/36950">#36950</a>)</li> <li>Double invoke effects in StrictMode after Fast Refresh (<a href="https://github.com/eps1lon"><code>@eps1lon</code></a> <a href="https://redirect.github.com/facebook/react/pull/35962">#35962</a>)</li> </ul> </li> <li>Performance Track Fixes <ul> <li>Prevent crash when accessing <code>$$typeof</code> in Performance Tracks (<a href="https://github.com/eps1lon"><code>@eps1lon</code></a> <a href="https://redirect.github.com/facebook/react/pull/35679">#35679</a>)</li> <li>Handle non-string function names in Performance Tracks (<a href="https://github.com/eps1lon"><code>@eps1lon</code></a> <a href="https://redirect.github.com/facebook/react/pull/35659">#35659</a>)</li> <li>Use minus (<code>-</code>) instead of en dash for removed props in Performance Tracks (<a href="https://github.com/eps1lon"><code>@eps1lon</code></a> <a href="https://redirect.github.com/facebook/react/pull/35649">#35649</a>)</li> <li>Handle arrays with bigints in deep objects in Performance Tracks (<a href="https://github.com/eps1lon"><code>@eps1lon</code></a> <a href="https://redirect.github.com/facebook/react/pull/35648">#35648</a>)</li> <li>Don't enumerate typed array props in Performance Tracks in DEV (<a href="https://github.com/UditDewan"><code>@UditDewan</code></a> <a href="https://redirect.github.com/facebook/react/pull/36913">#36913</a>)</li> <li>Bail out of diffing wide objects and arrays in Performance Tracks (<a href="https://github.com/eps1lon"><code>@eps1lon</code></a> <a href="https://redirect.github.com/facebook/react/pull/34742">#34742</a>)</li> <li>Clear potentially large performance measures in DEV (<a href="https://github.com/hoxyq"><code>@hoxyq</code></a> <a href="https://redirect.github.com/facebook/react/pull/34803">#34803</a>)</li> <li>Fix missing else branch for renders with no props change in Performance Tracks (<a href="https://github.com/hoxyq"><code>@hoxyq</code></a> <a href="https://redirect.github.com/facebook/react/pull/34837">#34837</a>)</li> </ul> </li> <li>Activity Fixes <ul> <li>Fix <code>useSyncExternalStore</code> missing store mutations that happened while an Activity tree was hidden (<a href="https://github.com/sophiebits"><code>@sophiebits</code></a> <a href="https://redirect.github.com/facebook/react/pull/36947">#36947</a>)</li> <li>Hide portal contents when an Activity is hidden (<a href="https://github.com/acdlite"><code>@acdlite</code></a> <a href="https://redirect.github.com/facebook/react/pull/35091">#35091</a>)</li> <li>Prevent metadata hoisting in hidden <code><Activity></code> trees (<a href="https://github.com/ronnakamoto"><code>@ronnakamoto</code></a> <a href="https://redirect.github.com/facebook/react/pull/34983">#34983</a>)</li> <li>Prevent errors thrown inside a hidden Activity from escaping to the visible UI (<a href="https://github.com/acdlite"><code>@acdlite</code></a> <a href="https://redirect.github.com/facebook/react/pull/35074">#35074</a>)</li> <li>Don't unhide a node if a direct parent Offscreen is still hidden (<a href="https://github.com/sebmarkbage"><code>@sebmarkbage</code></a> <a href="https://redirect.github.com/facebook/react/pull/34821">#34821</a>)</li> <li>Don't show internal <code><Offscreen></code> component in error messages (<a href="https://github.com/rickhanlonii"><code>@rickhanlonii</code></a> <a href="https://redirect.github.com/facebook/react/pull/35763">#35763</a>)</li> </ul> </li> <li>Warn in DEV when a component appears to have been unblocked by a conditional <code>use()</code> (<a href="https://github.com/hoxyq"><code>@hoxyq</code></a>, <a href="https://github.com/eps1lon"><code>@eps1lon</code></a>: <a href="https://redirect.github.com/facebook/react/pull/37104">#37104</a>, <a href="https://redirect.github.com/facebook/react/pull/37203">#37203</a>, <a href="https://redirect.github.com/facebook/react/pull/37491">#37491</a>)</li> <li>Render transitions independently instead of entangling them into a single render (<a href="https://github.com/acdlite"><code>@acdlite</code></a> <a href="https://redirect.github.com/facebook/react/pull/37290">#37290</a>)</li> <li>Fix hang when updating a dehydrated boundary inside a hidden tree (<a href="https://github.com/gaearon"><code>@gaearon</code></a> <a href="https://redirect.github.com/facebook/react/pull/37135">#37135</a>)</li> <li>Don't reacquire Host Singletons during dev effect validation (<a href="https://github.com/gnoff"><code>@gnoff</code></a> <a href="https://redirect.github.com/facebook/react/pull/37113">#37113</a>)</li> <li>Only remove properties from Host Singletons on release (<a href="https://github.com/gnoff"><code>@gnoff</code></a> <a href="https://redirect.github.com/facebook/react/pull/37112">#37112</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/react/react/commit/2dc7da790d6388b95b83198ca9b588b2ad5f5c0b"><code>2dc7da7</code></a> [test] Bump Jest to 30.4 (<a href="https://github.com/react/react/tree/HEAD/packages/react/issues/37382">#37382</a>)</li> <li><a href="https://github.com/react/react/commit/4f9389423b7319e1f7acc3d158c84a8365462748"><code>4f93894</code></a> docs: remove stale parentType param from validateChildKeys JSDoc (<a href="https://github.com/react/react/tree/HEAD/packages/react/issues/36928">#36928</a>)</li> <li><a href="https://github.com/react/react/commit/dbc37501ffeaf8fec45af5898caf1c3d64ad10bf"><code>dbc3750</code></a> Update required references to GitHub repo (<a href="https://github.com/react/react/tree/HEAD/packages/react/issues/36752">#36752</a>)</li> <li><a href="https://github.com/react/react/commit/900ae094d85b11c67d53dd14af50a2bda5db4495"><code>900ae09</code></a> [flow] Bump flow to v0.317.0 (<a href="https://github.com/react/react/tree/HEAD/packages/react/issues/36701">#36701</a>)</li> <li><a href="https://github.com/react/react/commit/fbb137059e4aacfaab1d36516e9b55050b4a0454"><code>fbb1370</code></a> [flow] Bump flow to v0.307.1 (<a href="https://github.com/react/react/tree/HEAD/packages/react/issues/36199">#36199</a>)</li> <li><a href="https://github.com/react/react/commit/56922cf751fab6c7ab4c12ddbbd15839959fa255"><code>56922cf</code></a> [react-native-renderer] Delete Paper (legacy) renderer (<a href="https://github.com/react/react/tree/HEAD/packages/react/issues/36285">#36285</a>)</li> <li><a href="https://github.com/react/react/commit/74568e8627aa43469b74f2972f427a209639d0b6"><code>74568e8</code></a> [Flight] Transport <code>AggregateErrors.errors</code> (<a href="https://github.com/react/react/tree/HEAD/packages/react/issues/36156">#36156</a>)</li> <li><a href="https://github.com/react/react/commit/e66ef6480ecd19c6885f2c06dec34fec1fdc0a98"><code>e66ef64</code></a> [tests] remove withoutStack from assertConsole helpers (<a href="https://github.com/react/react/tree/HEAD/packages/react/issues/35498">#35498</a>)</li> <li><a href="https://github.com/react/react/commit/db71391c5c70dc113560d1c23d0b6548604d827f"><code>db71391</code></a> [Fiber] Instrument the lazy initializer thenable in all cases (<a href="https://github.com/react/react/tree/HEAD/packages/react/issues/35521">#35521</a>)</li> <li><a href="https://github.com/react/react/commit/3e1abcc8d7083a13adf4774feb0d67ecbe4a2bc4"><code>3e1abcc</code></a> [tests] Require exact error messages in assertConsole helpers (<a href="https://github.com/react/react/tree/HEAD/packages/react/issues/35497">#35497</a>)</li> <li>Additional commits viewable in <a href="https://github.com/react/react/commits/v19.3.0/packages/react">compare view</a></li> </ul> </details> <br /> Updates `@types/react` from 19.2.18 to 19.3.0 <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/DefinitelyTyped/Definitel…
Bumps the faro group with 3 updates in the / directory: [@grafana/faro-web-sdk](https://github.com/grafana/faro-web-sdk/tree/HEAD/packages/web-sdk), [@grafana/faro-web-tracing](https://github.com/grafana/faro-web-sdk/tree/HEAD/packages/web-tracing) and [@grafana/faro-react](https://github.com/grafana/faro-web-sdk/tree/HEAD/packages/react). Updates `@grafana/faro-web-sdk` from 2.11.0 to 2.12.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/grafana/faro-web-sdk/releases">@grafana/faro-web-sdk's releases</a>.</em></p> <blockquote> <h2>v2.12.0</h2> <h2><a href="https://github.com/grafana/faro-web-sdk/compare/v2.11.0...v2.12.0">2.12.0</a> (2026-09-18)</h2> <h3>Features</h3> <ul> <li><strong>replay:</strong> expose recording pause controls (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2265">#2265</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/5eb93978e91cdefe2deef25f548283de9a18f64f">5eb9397</a>)</li> <li><strong>replay:</strong> preserve recording identity across tab handoffs (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2256">#2256</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/6891fad755ed8b0a74f7d8f32741a0cf8302a4df">6891fad</a>)</li> <li><strong>replay:</strong> use Grafana privacy classes by default (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2262">#2262</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/adb4bea4f5fd656c0cb6b53189990c826557177c">adb4bea</a>)</li> <li><strong>session:</strong> reconcile ownership before telemetry capture (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2261">#2261</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/ea5de814e01570be8a8ef9225f872e8226e0422e">ea5de81</a>)</li> <li><strong>web-sdk:</strong> make reliable Fetch transport the default (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2264">#2264</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/002103dfc64c736a588126cd6580825e22aa2e26">002103d</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><strong>core:</strong> do not drop signals added during BatchExecutor flush (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2257">#2257</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/227a8d1c4a241524adac39a6c0f398539c1151f1">227a8d1</a>)</li> <li><strong>deps:</strong> patch Joi prototype pollution vulnerabilities (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2281">#2281</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/879b04a0f224b085bade369aeb5a10f2a1c44bcc">879b04a</a>)</li> <li><strong>deps:</strong> patch js-yaml CVE-2026-84375 (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2279">#2279</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/224edc14086cf27367f9dcdddd2b4aeb8a652f0a">224edc1</a>)</li> <li><strong>deps:</strong> patch smol-toml denial of service (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2280">#2280</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/0a216b0d48e41c62dcb3c24a733812cc4cbf9330">0a216b0</a>)</li> <li><strong>fetch-v2:</strong> bind session invalidation to request identity (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2259">#2259</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/104e1a7ae57e3e9bd379ff85191a94a9a123e5a5">104e1a7</a>)</li> <li><strong>replay:</strong> discard invalidated recorder attempts (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2260">#2260</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/f3e8f2496cc3b1f0c5bdc29c3fb220f3b039ddf5">f3e8f24</a>)</li> <li><strong>replay:</strong> stop logging page errors as session replay errors (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2284">#2284</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/0b8fafd0ca5bb1e1e96d3123f44cbd08b3161069">0b8fafd</a>)</li> <li><strong>user-actions:</strong> trigger user actions from clicks on nested child elements (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2239">#2239</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/dbe73403cf0c371376bb367e879d9b9823ce60fe">dbe7340</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/grafana/faro-web-sdk/blob/main/CHANGELOG.md">@grafana/faro-web-sdk's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/grafana/faro-web-sdk/compare/v2.11.0...v2.12.0">2.12.0</a> (2026-09-18)</h2> <h3>Features</h3> <ul> <li><strong>replay:</strong> expose recording pause controls (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2265">#2265</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/5eb93978e91cdefe2deef25f548283de9a18f64f">5eb9397</a>)</li> <li><strong>replay:</strong> preserve recording identity across tab handoffs (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2256">#2256</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/6891fad755ed8b0a74f7d8f32741a0cf8302a4df">6891fad</a>)</li> <li><strong>replay:</strong> use Grafana privacy classes by default (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2262">#2262</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/adb4bea4f5fd656c0cb6b53189990c826557177c">adb4bea</a>)</li> <li><strong>session:</strong> reconcile ownership before telemetry capture (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2261">#2261</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/ea5de814e01570be8a8ef9225f872e8226e0422e">ea5de81</a>)</li> <li><strong>web-sdk:</strong> make reliable Fetch transport the default (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2264">#2264</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/002103dfc64c736a588126cd6580825e22aa2e26">002103d</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><strong>core:</strong> do not drop signals added during BatchExecutor flush (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2257">#2257</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/227a8d1c4a241524adac39a6c0f398539c1151f1">227a8d1</a>)</li> <li><strong>deps:</strong> patch Joi prototype pollution vulnerabilities (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2281">#2281</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/879b04a0f224b085bade369aeb5a10f2a1c44bcc">879b04a</a>)</li> <li><strong>deps:</strong> patch js-yaml CVE-2026-84375 (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2279">#2279</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/224edc14086cf27367f9dcdddd2b4aeb8a652f0a">224edc1</a>)</li> <li><strong>deps:</strong> patch smol-toml denial of service (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2280">#2280</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/0a216b0d48e41c62dcb3c24a733812cc4cbf9330">0a216b0</a>)</li> <li><strong>fetch-v2:</strong> bind session invalidation to request identity (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2259">#2259</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/104e1a7ae57e3e9bd379ff85191a94a9a123e5a5">104e1a7</a>)</li> <li><strong>replay:</strong> discard invalidated recorder attempts (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2260">#2260</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/f3e8f2496cc3b1f0c5bdc29c3fb220f3b039ddf5">f3e8f24</a>)</li> <li><strong>replay:</strong> stop logging page errors as session replay errors (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2284">#2284</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/0b8fafd0ca5bb1e1e96d3123f44cbd08b3161069">0b8fafd</a>)</li> <li><strong>user-actions:</strong> trigger user actions from clicks on nested child elements (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2239">#2239</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/dbe73403cf0c371376bb367e879d9b9823ce60fe">dbe7340</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/grafana/faro-web-sdk/commit/3e151dc048e1d0453fa9034bac0e7abf9dacaa3f"><code>3e151dc</code></a> chore: release 2.12.0 (<a href="https://github.com/grafana/faro-web-sdk/tree/HEAD/packages/web-sdk/issues/2266">#2266</a>)</li> <li><a href="https://github.com/grafana/faro-web-sdk/commit/dbe73403cf0c371376bb367e879d9b9823ce60fe"><code>dbe7340</code></a> fix(user-actions): trigger user actions from clicks on nested child elements ...</li> <li><a href="https://github.com/grafana/faro-web-sdk/commit/131691cb3ac56583e9eac28a2b59ccec06d045e7"><code>131691c</code></a> chore(deps): update patch updates (<a href="https://github.com/grafana/faro-web-sdk/tree/HEAD/packages/web-sdk/issues/2230">#2230</a>)</li> <li><a href="https://github.com/grafana/faro-web-sdk/commit/002103dfc64c736a588126cd6580825e22aa2e26"><code>002103d</code></a> feat(web-sdk): make reliable Fetch transport the default (<a href="https://github.com/grafana/faro-web-sdk/tree/HEAD/packages/web-sdk/issues/2264">#2264</a>)</li> <li><a href="https://github.com/grafana/faro-web-sdk/commit/ea5de814e01570be8a8ef9225f872e8226e0422e"><code>ea5de81</code></a> feat(session): reconcile ownership before telemetry capture (<a href="https://github.com/grafana/faro-web-sdk/tree/HEAD/packages/web-sdk/issues/2261">#2261</a>)</li> <li><a href="https://github.com/grafana/faro-web-sdk/commit/104e1a7ae57e3e9bd379ff85191a94a9a123e5a5"><code>104e1a7</code></a> fix(fetch-v2): bind session invalidation to request identity (<a href="https://github.com/grafana/faro-web-sdk/tree/HEAD/packages/web-sdk/issues/2259">#2259</a>)</li> <li>See full diff in <a href="https://github.com/grafana/faro-web-sdk/commits/v2.12.0/packages/web-sdk">compare view</a></li> </ul> </details> <br /> Updates `@grafana/faro-web-tracing` from 2.11.0 to 2.12.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/grafana/faro-web-sdk/releases">@grafana/faro-web-tracing's releases</a>.</em></p> <blockquote> <h2>v2.12.0</h2> <h2><a href="https://github.com/grafana/faro-web-sdk/compare/v2.11.0...v2.12.0">2.12.0</a> (2026-09-18)</h2> <h3>Features</h3> <ul> <li><strong>replay:</strong> expose recording pause controls (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2265">#2265</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/5eb93978e91cdefe2deef25f548283de9a18f64f">5eb9397</a>)</li> <li><strong>replay:</strong> preserve recording identity across tab handoffs (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2256">#2256</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/6891fad755ed8b0a74f7d8f32741a0cf8302a4df">6891fad</a>)</li> <li><strong>replay:</strong> use Grafana privacy classes by default (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2262">#2262</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/adb4bea4f5fd656c0cb6b53189990c826557177c">adb4bea</a>)</li> <li><strong>session:</strong> reconcile ownership before telemetry capture (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2261">#2261</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/ea5de814e01570be8a8ef9225f872e8226e0422e">ea5de81</a>)</li> <li><strong>web-sdk:</strong> make reliable Fetch transport the default (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2264">#2264</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/002103dfc64c736a588126cd6580825e22aa2e26">002103d</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><strong>core:</strong> do not drop signals added during BatchExecutor flush (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2257">#2257</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/227a8d1c4a241524adac39a6c0f398539c1151f1">227a8d1</a>)</li> <li><strong>deps:</strong> patch Joi prototype pollution vulnerabilities (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2281">#2281</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/879b04a0f224b085bade369aeb5a10f2a1c44bcc">879b04a</a>)</li> <li><strong>deps:</strong> patch js-yaml CVE-2026-84375 (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2279">#2279</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/224edc14086cf27367f9dcdddd2b4aeb8a652f0a">224edc1</a>)</li> <li><strong>deps:</strong> patch smol-toml denial of service (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2280">#2280</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/0a216b0d48e41c62dcb3c24a733812cc4cbf9330">0a216b0</a>)</li> <li><strong>fetch-v2:</strong> bind session invalidation to request identity (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2259">#2259</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/104e1a7ae57e3e9bd379ff85191a94a9a123e5a5">104e1a7</a>)</li> <li><strong>replay:</strong> discard invalidated recorder attempts (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2260">#2260</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/f3e8f2496cc3b1f0c5bdc29c3fb220f3b039ddf5">f3e8f24</a>)</li> <li><strong>replay:</strong> stop logging page errors as session replay errors (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2284">#2284</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/0b8fafd0ca5bb1e1e96d3123f44cbd08b3161069">0b8fafd</a>)</li> <li><strong>user-actions:</strong> trigger user actions from clicks on nested child elements (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2239">#2239</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/dbe73403cf0c371376bb367e879d9b9823ce60fe">dbe7340</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/grafana/faro-web-sdk/blob/main/CHANGELOG.md">@grafana/faro-web-tracing's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/grafana/faro-web-sdk/compare/v2.11.0...v2.12.0">2.12.0</a> (2026-09-18)</h2> <h3>Features</h3> <ul> <li><strong>replay:</strong> expose recording pause controls (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2265">#2265</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/5eb93978e91cdefe2deef25f548283de9a18f64f">5eb9397</a>)</li> <li><strong>replay:</strong> preserve recording identity across tab handoffs (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2256">#2256</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/6891fad755ed8b0a74f7d8f32741a0cf8302a4df">6891fad</a>)</li> <li><strong>replay:</strong> use Grafana privacy classes by default (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2262">#2262</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/adb4bea4f5fd656c0cb6b53189990c826557177c">adb4bea</a>)</li> <li><strong>session:</strong> reconcile ownership before telemetry capture (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2261">#2261</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/ea5de814e01570be8a8ef9225f872e8226e0422e">ea5de81</a>)</li> <li><strong>web-sdk:</strong> make reliable Fetch transport the default (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2264">#2264</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/002103dfc64c736a588126cd6580825e22aa2e26">002103d</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><strong>core:</strong> do not drop signals added during BatchExecutor flush (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2257">#2257</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/227a8d1c4a241524adac39a6c0f398539c1151f1">227a8d1</a>)</li> <li><strong>deps:</strong> patch Joi prototype pollution vulnerabilities (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2281">#2281</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/879b04a0f224b085bade369aeb5a10f2a1c44bcc">879b04a</a>)</li> <li><strong>deps:</strong> patch js-yaml CVE-2026-84375 (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2279">#2279</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/224edc14086cf27367f9dcdddd2b4aeb8a652f0a">224edc1</a>)</li> <li><strong>deps:</strong> patch smol-toml denial of service (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2280">#2280</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/0a216b0d48e41c62dcb3c24a733812cc4cbf9330">0a216b0</a>)</li> <li><strong>fetch-v2:</strong> bind session invalidation to request identity (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2259">#2259</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/104e1a7ae57e3e9bd379ff85191a94a9a123e5a5">104e1a7</a>)</li> <li><strong>replay:</strong> discard invalidated recorder attempts (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2260">#2260</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/f3e8f2496cc3b1f0c5bdc29c3fb220f3b039ddf5">f3e8f24</a>)</li> <li><strong>replay:</strong> stop logging page errors as session replay errors (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2284">#2284</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/0b8fafd0ca5bb1e1e96d3123f44cbd08b3161069">0b8fafd</a>)</li> <li><strong>user-actions:</strong> trigger user actions from clicks on nested child elements (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2239">#2239</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/dbe73403cf0c371376bb367e879d9b9823ce60fe">dbe7340</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/grafana/faro-web-sdk/commit/3e151dc048e1d0453fa9034bac0e7abf9dacaa3f"><code>3e151dc</code></a> chore: release 2.12.0 (<a href="https://github.com/grafana/faro-web-sdk/tree/HEAD/packages/web-tracing/issues/2266">#2266</a>)</li> <li><a href="https://github.com/grafana/faro-web-sdk/commit/ea5de814e01570be8a8ef9225f872e8226e0422e"><code>ea5de81</code></a> feat(session): reconcile ownership before telemetry capture (<a href="https://github.com/grafana/faro-web-sdk/tree/HEAD/packages/web-tracing/issues/2261">#2261</a>)</li> <li>See full diff in <a href="https://github.com/grafana/faro-web-sdk/commits/v2.12.0/packages/web-tracing">compare view</a></li> </ul> </details> <br /> Updates `@grafana/faro-react` from 2.11.0 to 2.12.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/grafana/faro-web-sdk/releases">@grafana/faro-react's releases</a>.</em></p> <blockquote> <h2>v2.12.0</h2> <h2><a href="https://github.com/grafana/faro-web-sdk/compare/v2.11.0...v2.12.0">2.12.0</a> (2026-09-18)</h2> <h3>Features</h3> <ul> <li><strong>replay:</strong> expose recording pause controls (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2265">#2265</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/5eb93978e91cdefe2deef25f548283de9a18f64f">5eb9397</a>)</li> <li><strong>replay:</strong> preserve recording identity across tab handoffs (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2256">#2256</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/6891fad755ed8b0a74f7d8f32741a0cf8302a4df">6891fad</a>)</li> <li><strong>replay:</strong> use Grafana privacy classes by default (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2262">#2262</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/adb4bea4f5fd656c0cb6b53189990c826557177c">adb4bea</a>)</li> <li><strong>session:</strong> reconcile ownership before telemetry capture (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2261">#2261</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/ea5de814e01570be8a8ef9225f872e8226e0422e">ea5de81</a>)</li> <li><strong>web-sdk:</strong> make reliable Fetch transport the default (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2264">#2264</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/002103dfc64c736a588126cd6580825e22aa2e26">002103d</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><strong>core:</strong> do not drop signals added during BatchExecutor flush (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2257">#2257</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/227a8d1c4a241524adac39a6c0f398539c1151f1">227a8d1</a>)</li> <li><strong>deps:</strong> patch Joi prototype pollution vulnerabilities (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2281">#2281</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/879b04a0f224b085bade369aeb5a10f2a1c44bcc">879b04a</a>)</li> <li><strong>deps:</strong> patch js-yaml CVE-2026-84375 (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2279">#2279</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/224edc14086cf27367f9dcdddd2b4aeb8a652f0a">224edc1</a>)</li> <li><strong>deps:</strong> patch smol-toml denial of service (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2280">#2280</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/0a216b0d48e41c62dcb3c24a733812cc4cbf9330">0a216b0</a>)</li> <li><strong>fetch-v2:</strong> bind session invalidation to request identity (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2259">#2259</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/104e1a7ae57e3e9bd379ff85191a94a9a123e5a5">104e1a7</a>)</li> <li><strong>replay:</strong> discard invalidated recorder attempts (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2260">#2260</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/f3e8f2496cc3b1f0c5bdc29c3fb220f3b039ddf5">f3e8f24</a>)</li> <li><strong>replay:</strong> stop logging page errors as session replay errors (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2284">#2284</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/0b8fafd0ca5bb1e1e96d3123f44cbd08b3161069">0b8fafd</a>)</li> <li><strong>user-actions:</strong> trigger user actions from clicks on nested child elements (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2239">#2239</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/dbe73403cf0c371376bb367e879d9b9823ce60fe">dbe7340</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/grafana/faro-web-sdk/blob/main/CHANGELOG.md">@grafana/faro-react's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/grafana/faro-web-sdk/compare/v2.11.0...v2.12.0">2.12.0</a> (2026-09-18)</h2> <h3>Features</h3> <ul> <li><strong>replay:</strong> expose recording pause controls (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2265">#2265</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/5eb93978e91cdefe2deef25f548283de9a18f64f">5eb9397</a>)</li> <li><strong>replay:</strong> preserve recording identity across tab handoffs (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2256">#2256</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/6891fad755ed8b0a74f7d8f32741a0cf8302a4df">6891fad</a>)</li> <li><strong>replay:</strong> use Grafana privacy classes by default (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2262">#2262</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/adb4bea4f5fd656c0cb6b53189990c826557177c">adb4bea</a>)</li> <li><strong>session:</strong> reconcile ownership before telemetry capture (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2261">#2261</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/ea5de814e01570be8a8ef9225f872e8226e0422e">ea5de81</a>)</li> <li><strong>web-sdk:</strong> make reliable Fetch transport the default (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2264">#2264</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/002103dfc64c736a588126cd6580825e22aa2e26">002103d</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><strong>core:</strong> do not drop signals added during BatchExecutor flush (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2257">#2257</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/227a8d1c4a241524adac39a6c0f398539c1151f1">227a8d1</a>)</li> <li><strong>deps:</strong> patch Joi prototype pollution vulnerabilities (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2281">#2281</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/879b04a0f224b085bade369aeb5a10f2a1c44bcc">879b04a</a>)</li> <li><strong>deps:</strong> patch js-yaml CVE-2026-84375 (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2279">#2279</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/224edc14086cf27367f9dcdddd2b4aeb8a652f0a">224edc1</a>)</li> <li><strong>deps:</strong> patch smol-toml denial of service (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2280">#2280</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/0a216b0d48e41c62dcb3c24a733812cc4cbf9330">0a216b0</a>)</li> <li><strong>fetch-v2:</strong> bind session invalidation to request identity (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2259">#2259</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/104e1a7ae57e3e9bd379ff85191a94a9a123e5a5">104e1a7</a>)</li> <li><strong>replay:</strong> discard invalidated recorder attempts (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2260">#2260</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/f3e8f2496cc3b1f0c5bdc29c3fb220f3b039ddf5">f3e8f24</a>)</li> <li><strong>replay:</strong> stop logging page errors as session replay errors (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2284">#2284</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/0b8fafd0ca5bb1e1e96d3123f44cbd08b3161069">0b8fafd</a>)</li> <li><strong>user-actions:</strong> trigger user actions from clicks on nested child elements (<a href="https://redirect.github.com/grafana/faro-web-sdk/issues/2239">#2239</a>) (<a href="https://github.com/grafana/faro-web-sdk/commit/dbe73403cf0c371376bb367e879d9b9823ce60fe">dbe7340</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/grafana/faro-web-sdk/commit/3e151dc048e1d0453fa9034bac0e7abf9dacaa3f"><code>3e151dc</code></a> chore: release 2.12.0 (<a href="https://github.com/grafana/faro-web-sdk/tree/HEAD/packages/react/issues/2266">#2266</a>)</li> <li><a href="https://github.com/grafana/faro-web-sdk/commit/131691cb3ac56583e9eac28a2b59ccec06d045e7"><code>131691c</code></a> chore(deps): update patch updates (<a href="https://github.com/grafana/faro-web-sdk/tree/HEAD/packages/react/issues/2230">#2230</a>)</li> <li>See full diff in <a href="https://github.com/grafana/faro-web-sdk/commits/v2.12.0/packages/react">compare view</a></li> </ul> </details> <br /> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…#87) ## Problem Multiple teams reported CORS preflight failures on `dev-gcp` when calling `https://telemetry.ekstern.dev.nav.no/collect`: ``` Access to fetch at 'https://telemetry.ekstern.dev.nav.no/collect' from origin 'https://borger.ansatt.dev.nav.no' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. ``` The origin **was** correctly allowlisted server-side (verified via direct `curl` preflight tests). The actual cause: `@grafana/faro-web-sdk@2.12.0` (pulled in transitively via `@nais/apm`'s previous `^2.11.0` range, and directly bumped to `^2.12.0` on `main` by dependabot in #84) unconditionally sends an `Idempotency-Key` request header on every request as of [grafana/faro-web-sdk#2264](grafana/faro-web-sdk#2264) ("make reliable Fetch transport the default"), **with no opt-out**. The `Alloy` `faro.receiver` component nais runs (via `nais/helm-charts` `features/alloy-faro`) hardcodes its allowed CORS request headers in Go and does not yet include `idempotency-key`. That fix ([grafana/alloy@a6e19ce](grafana/alloy@a6e19ce), merged 2026-09-09) has only shipped in the unreleased `v1.20.0-rc.0` — no stable Alloy release contains it yet, including the `1.12.1` currently pinned in `features/alloy-faro/Chart.yaml`. Per the [Fetch CORS spec](https://fetch.spec.whatwg.org/#cors-preflight-fetch), when *any* header in `Access-Control-Request-Headers` isn't in the receiver's allowlist, the **entire preflight is aborted** — no `Access-Control-Allow-Origin` is set at all, even though the origin itself is valid. This makes a header allowlist problem look exactly like an origin allowlist problem. ## Fix Pin `@grafana/faro-web-sdk` (dependency) and `@grafana/faro-react` (devDependency, used only for our own peer-compatibility tests) to the exact `2.11.0` release — the last version before the unconditional `Idempotency-Key` header was introduced. ## Verification - `pnpm test` — 244/244 tests pass - `pnpm build` — succeeds - Manually reproduced the failing preflight against `https://telemetry.ekstern.dev.nav.no/collect` with `Access-Control-Request-Headers: content-type,idempotency-key,x-faro-session-id` → 204 with no `Access-Control-Allow-Origin`. Removing `idempotency-key` from the request restores the header, confirming this is header- not origin-related. ## Follow-up Un-pin once nais's Alloy deployment is confirmed upgraded past `v1.20.0` in all clusters (or a backported patch release ships `idempotency-key` support earlier). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: sindrerh2 <--global> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
🤖 I have created a release *beep* *boop* --- ## [0.7.2](apm-v0.7.1...apm-v0.7.2) (2026-09-24) ### Bug Fixes * pin @grafana/faro-web-sdk to 2.11.0 (CORS regression on dev-gcp) ([#87](#87)) ([3805e49](3805e49)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Synchronizes
mainintobeta. Merge this PR after CI passes. This updates the beta branch but does not publish a beta package.