Skip to content

chore: sync main into beta - #88

Closed
github-actions[bot] wants to merge 15 commits into
betafrom
main
Closed

github-actions[bot] wants to merge 15 commits into
betafrom
main

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Synchronizes main into beta. Merge this PR after CI passes. This updates the beta branch but does not publish a beta package.

Starefossen and others added 15 commits September 10, 2026 08:33
## 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>&lt;form
name=&quot;myForm&quot;&gt;</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>&lt;select&gt;</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=&quot;&quot;</code>,
<code>title=&quot;&quot;</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>&lt;style&gt;</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=&quot;&quot;</code> and <code>name=&quot;&quot;</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>&lt;ViewTransition /&gt;</code>: Adds <code>&lt;ViewTransition
/&gt;</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>&lt;Fragment /&gt;</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>&lt;Suspense&gt;</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>&lt;Activity&gt;</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>&lt;Offscreen&gt;</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>&lt;ViewTransition /&gt;</code>: Adds <code>&lt;ViewTransition
/&gt;</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>&lt;Fragment /&gt;</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>&lt;Suspense&gt;</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>&lt;Activity&gt;</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>&lt;Offscreen&gt;</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>
@sindrerh2 sindrerh2 closed this Sep 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants