Skip to content

perf(react-router): reduce Link runtime allocations - #8324

Merged
schiller-manuel merged 2 commits into
optimize-link-benchmark-stagingfrom
optimize-link-react-runtime
Sep 13, 2026
Merged

schiller-manuel merged 2 commits into
optimize-link-benchmark-stagingfrom
optimize-link-react-runtime

Conversation

@schiller-manuel

@schiller-manuel schiller-manuel commented Sep 9, 2026 •

Copy link
Copy Markdown
Collaborator

🎯 Changes

Filter native Link props once and reuse hydration snapshot getters.

This is PR 9 of a stacked series and is based on optimize-link-benchmark-staging.

✅ Checklist

  • I have followed the steps in the Contributing guide.
  • I have tested code changes locally with the relevant test commands.
  • I fully understand the code in this pull request, including any code generated with AI assistance.

🚀 Release Impact

  • This change affects published code, and I have generated changesets.
  • This change is docs/CI/dev-only.

Summary by CodeRabbit

  • Bug Fixes

    • Improved hydration behavior to prevent unnecessary updates during rerenders of hydration-aware components.
    • Fixed link rendering so native and custom links consistently filter unsupported properties while preserving custom props, disabled accessibility behavior, and forwarded refs.
    • Improved server-to-client hydration consistency, including correct fallback content during initial hydration and reliable transition to client content.
  • Tests

    • Added coverage for link property handling and hydration behavior across server-side rendering and client-side rendering.

@coderabbitai

coderabbitai Bot commented Sep 9, 2026 •

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 24cb7114-346f-4929-b806-d906a796d189

📥 Commits

Reviewing files that changed from the base of the PR and between 95e18fe and bbf2222.

📒 Files selected for processing (6)
  • .changeset/deep-chefs-work.md
  • .changeset/rare-chefs-shine.md
  • packages/react-router/src/ClientOnly.tsx
  • packages/react-router/src/link.tsx
  • packages/react-router/tests/link-state-props.test.tsx
  • packages/react-router/tests/useHydrated.test.tsx

Included review availability: Your plan provides up to 10 included reviews per hour; 1 remains after this review.


📝 Walkthrough

Walkthrough

The PR stabilizes useHydrated snapshot getter references and separates native and custom Link prop filtering. It adds SSR, hydration, prop, accessibility, hook-result, and ref coverage, plus patch changesets for both updates.

Changes

React Router rendering behavior

Layer / File(s) Summary
Hydration snapshot stability
packages/react-router/src/ClientOnly.tsx, packages/react-router/tests/useHydrated.test.tsx, .changeset/deep-chefs-work.md
useHydrated uses stable module-level snapshot getters. Tests cover getter identity, SSR fallback output, client hydration, recoverable errors, and subsequent renders.
Link prop filtering
packages/react-router/src/link.tsx, packages/react-router/tests/link-state-props.test.tsx, .changeset/rare-chefs-shine.md
Native and custom Link branches filter props separately. Tests cover SSR and client output, accessibility props, hook results, custom props, and forwarded refs.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~15 minutes

Suggested reviewers: sheraff

Merge Risk: ⚪ Minimal · up to d2498

The hydration and Link performance changes preserve existing rendering, accessibility, ref, and hook behavior while reducing avoidable runtime work. The change is ready to merge.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 25.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 4 functions across 4 files. (2 skipped: 2… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the main change: reducing runtime allocations in React Router Link components.
Description check ✅ Passed The description includes all required sections, explains the changes and motivation, confirms testing and contributor-guide compliance, and documents the generated changesets.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 25.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 4 functions across 4 files. (2 skipped: 2 unsupported.)

✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch optimize-link-react-runtime

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@nx-cloud

nx-cloud Bot commented Sep 9, 2026 •

Copy link
Copy Markdown
Contributor

View your CI Pipeline Execution ↗ for commit d249878

Command Status Duration Result
nx affected --targets=test:eslint,test:unit,tes... ✅ Succeeded 16m 24s View ↗
nx run-many --target=build --exclude=examples/*... ✅ Succeeded 44s View ↗

☁️ Nx Cloud last updated this comment at 2026-09-12 23:12:09 UTC

@github-actions

github-actions Bot commented Sep 9, 2026 •

Copy link
Copy Markdown
Contributor

🚀 Changeset Version Preview

7 package(s) bumped directly, 22 bumped as dependents.

🟩 Patch bumps

Package Version Reason
@tanstack/history 1.162.3 → 1.162.4 Changeset
@tanstack/react-router 1.170.35 → 1.170.36 Changeset
@tanstack/router-core 1.171.29 → 1.171.30 Changeset
@tanstack/router-devtools-core 1.168.1 → 1.168.2 Changeset
@tanstack/solid-router 1.170.33 → 1.170.34 Changeset
@tanstack/start-server-core 1.169.34 → 1.169.35 Changeset
@tanstack/vue-router 1.170.32 → 1.170.33 Changeset
@tanstack/react-router-devtools 1.167.1 → 1.167.2 Dependent
@tanstack/react-start 1.168.52 → 1.168.53 Dependent
@tanstack/react-start-client 1.168.33 → 1.168.34 Dependent
@tanstack/react-start-rsc 0.1.51 → 0.1.52 Dependent
@tanstack/react-start-server 1.167.40 → 1.167.41 Dependent
@tanstack/router-cli 1.167.35 → 1.167.36 Dependent
@tanstack/router-devtools 1.167.1 → 1.167.2 Dependent
@tanstack/router-generator 1.167.35 → 1.167.36 Dependent
@tanstack/router-plugin 1.168.37 → 1.168.38 Dependent
@tanstack/router-vite-plugin 1.167.37 → 1.167.38 Dependent
@tanstack/solid-router-devtools 1.167.1 → 1.167.2 Dependent
@tanstack/solid-start 1.168.50 → 1.168.51 Dependent
@tanstack/solid-start-client 1.168.32 → 1.168.33 Dependent
@tanstack/solid-start-server 1.167.39 → 1.167.40 Dependent
@tanstack/start-client-core 1.170.29 → 1.170.30 Dependent
@tanstack/start-plugin-core 1.171.42 → 1.171.43 Dependent
@tanstack/start-static-server-functions 1.167.34 → 1.167.35 Dependent
@tanstack/start-storage-context 1.167.31 → 1.167.32 Dependent
@tanstack/vue-router-devtools 1.167.1 → 1.167.2 Dependent
@tanstack/vue-start 1.168.49 → 1.168.50 Dependent
@tanstack/vue-start-client 1.167.35 → 1.167.36 Dependent
@tanstack/vue-start-server 1.167.39 → 1.167.40 Dependent

@pkg-pr-new

pkg-pr-new Bot commented Sep 9, 2026 •

Copy link
Copy Markdown
More templates

@tanstack/arktype-adapter

npm i https://pkg.pr.new/@tanstack/arktype-adapter@8324

@tanstack/eslint-plugin-router

npm i https://pkg.pr.new/@tanstack/eslint-plugin-router@8324

@tanstack/eslint-plugin-start

npm i https://pkg.pr.new/@tanstack/eslint-plugin-start@8324

@tanstack/history

npm i https://pkg.pr.new/@tanstack/history@8324

@tanstack/nitro-v2-vite-plugin

npm i https://pkg.pr.new/@tanstack/nitro-v2-vite-plugin@8324

@tanstack/react-router

npm i https://pkg.pr.new/@tanstack/react-router@8324

@tanstack/react-router-devtools

npm i https://pkg.pr.new/@tanstack/react-router-devtools@8324

@tanstack/react-router-ssr-query

npm i https://pkg.pr.new/@tanstack/react-router-ssr-query@8324

@tanstack/react-start

npm i https://pkg.pr.new/@tanstack/react-start@8324

@tanstack/react-start-client

npm i https://pkg.pr.new/@tanstack/react-start-client@8324

@tanstack/react-start-rsc

npm i https://pkg.pr.new/@tanstack/react-start-rsc@8324

@tanstack/react-start-server

npm i https://pkg.pr.new/@tanstack/react-start-server@8324

@tanstack/router-cli

npm i https://pkg.pr.new/@tanstack/router-cli@8324

@tanstack/router-core

npm i https://pkg.pr.new/@tanstack/router-core@8324

@tanstack/router-devtools

npm i https://pkg.pr.new/@tanstack/router-devtools@8324

@tanstack/router-devtools-core

npm i https://pkg.pr.new/@tanstack/router-devtools-core@8324

@tanstack/router-generator

npm i https://pkg.pr.new/@tanstack/router-generator@8324

@tanstack/router-plugin

npm i https://pkg.pr.new/@tanstack/router-plugin@8324

@tanstack/router-ssr-query-core

npm i https://pkg.pr.new/@tanstack/router-ssr-query-core@8324

@tanstack/router-utils

npm i https://pkg.pr.new/@tanstack/router-utils@8324

@tanstack/router-vite-plugin

npm i https://pkg.pr.new/@tanstack/router-vite-plugin@8324

@tanstack/solid-router

npm i https://pkg.pr.new/@tanstack/solid-router@8324

@tanstack/solid-router-devtools

npm i https://pkg.pr.new/@tanstack/solid-router-devtools@8324

@tanstack/solid-router-ssr-query

npm i https://pkg.pr.new/@tanstack/solid-router-ssr-query@8324

@tanstack/solid-start

npm i https://pkg.pr.new/@tanstack/solid-start@8324

@tanstack/solid-start-client

npm i https://pkg.pr.new/@tanstack/solid-start-client@8324

@tanstack/solid-start-server

npm i https://pkg.pr.new/@tanstack/solid-start-server@8324

@tanstack/start-client-core

npm i https://pkg.pr.new/@tanstack/start-client-core@8324

@tanstack/start-fn-stubs

npm i https://pkg.pr.new/@tanstack/start-fn-stubs@8324

@tanstack/start-plugin-core

npm i https://pkg.pr.new/@tanstack/start-plugin-core@8324

@tanstack/start-server-core

npm i https://pkg.pr.new/@tanstack/start-server-core@8324

@tanstack/start-static-server-functions

npm i https://pkg.pr.new/@tanstack/start-static-server-functions@8324

@tanstack/start-storage-context

npm i https://pkg.pr.new/@tanstack/start-storage-context@8324

@tanstack/valibot-adapter

npm i https://pkg.pr.new/@tanstack/valibot-adapter@8324

@tanstack/virtual-file-routes

npm i https://pkg.pr.new/@tanstack/virtual-file-routes@8324

@tanstack/vue-router

npm i https://pkg.pr.new/@tanstack/vue-router@8324

@tanstack/vue-router-devtools

npm i https://pkg.pr.new/@tanstack/vue-router-devtools@8324

@tanstack/vue-router-ssr-query

npm i https://pkg.pr.new/@tanstack/vue-router-ssr-query@8324

@tanstack/vue-start

npm i https://pkg.pr.new/@tanstack/vue-start@8324

@tanstack/vue-start-client

npm i https://pkg.pr.new/@tanstack/vue-start-client@8324

@tanstack/vue-start-server

npm i https://pkg.pr.new/@tanstack/vue-start-server@8324

@tanstack/zod-adapter

npm i https://pkg.pr.new/@tanstack/zod-adapter@8324

commit: d249878

@github-actions

github-actions Bot commented Sep 9, 2026 •

Copy link
Copy Markdown
Contributor

Bundle Size Benchmarks

  • Commit: 579b330b90e4
  • Measured at: 2026-09-12T22:52:33.157Z
  • Baseline source: history:ae6853592904
  • Dashboard: bundle-size history

The following scenarios have bundle-size changes compared with the baseline:

Scenario Current (gzip) Initial (gzip) Raw Brotli Trend
react-router.minimal 84.0 KiB
+23 B
83.9 KiB
+23 B
262.1 KiB
-218 B
73.2 KiB
+30 B
█████▁▁▁▁▁▁▂
react-router.full 87.5 KiB
+46 B
87.4 KiB
+45 B
273.8 KiB
-217 B
76.2 KiB
+31 B
█████▂▂▂▂▂▁▄
solid-router.minimal 33.5 KiB
+39 B
33.4 KiB
+40 B
96.5 KiB
-247 B
30.3 KiB
+76 B
▁▃▃▃▃▃▃▃▃▃▂█
solid-router.full 38.3 KiB
+50 B
38.2 KiB
+52 B
111.2 KiB
-247 B
34.5 KiB
+6 B
▁▂▂▂▂▂▂▂▂▂▁█
vue-router.minimal 49.5 KiB
-42 B
49.4 KiB
-40 B
137.7 KiB
-675 B
44.8 KiB
-119 B
█████▂▂▂▂▂▂▁
vue-router.full 55.1 KiB
-49 B
55.0 KiB
-48 B
155.9 KiB
-675 B
49.8 KiB
+10 B
█████▂▂▂▂▂▂▁
react-start.minimal 96.9 KiB
+55 B
96.8 KiB
+52 B
304.4 KiB
-219 B
84.0 KiB
+8 B
█████▁▁▁▁▁▁▄
react-start.query-integration 104.3 KiB
+45 B
104.1 KiB
+43 B
330.9 KiB
-229 B
90.4 KiB
+49 B
█████▁▁▁▁▁▁▄
react-start.deferred-hydration 97.7 KiB
+48 B
96.8 KiB
+52 B
305.7 KiB
-219 B
84.7 KiB
-81 B
█████▁▁▁▁▁▁▄
react-start.full 100.1 KiB
+52 B
100.0 KiB
+52 B
314.1 KiB
-215 B
86.8 KiB
+118 B
█████▁▁▁▁▁▁▄
react-start.rsbuild.minimal 100.2 KiB
+34 B
100.0 KiB
+34 B
314.6 KiB
-211 B
86.5 KiB
+7 B
█████▁▁▁▁▁▁▃
react-start.rsbuild.minimal-iife 100.6 KiB
+34 B
100.4 KiB
+34 B
315.6 KiB
-211 B
86.8 KiB
+22 B
█████▁▁▁▁▁▁▃
react-start.rsbuild.full 103.4 KiB
+22 B
103.3 KiB
+22 B
324.7 KiB
-207 B
89.3 KiB
+117 B
█████▁▁▁▁▁▁▂
solid-start.minimal 46.4 KiB
+51 B
46.3 KiB
+49 B
137.6 KiB
-247 B
41.2 KiB
+29 B
▃▂▂▂▂▂▂▂▂▂▁█
solid-start.deferred-hydration 49.5 KiB
+43 B
46.3 KiB
+46 B
145.0 KiB
-247 B
44.1 KiB
+96 B
▁▂▂▂▂▂▂▂▂▂▂█
solid-start.full 51.4 KiB
+64 B
51.3 KiB
+61 B
153.0 KiB
-247 B
45.6 KiB
+25 B
▂▁▁▁▁▁▁▁▁▁▁█
vue-start.minimal 65.7 KiB
-57 B
65.5 KiB
-56 B
188.5 KiB
-675 B
58.5 KiB
+12 B
█████▂▂▂▂▂▂▁
vue-start.full 69.5 KiB
-26 B
69.4 KiB
-24 B
200.8 KiB
-675 B
61.8 KiB
-11 B
█████▂▂▂▂▂▂▁

Current gzip tracks all emitted client JS chunks. Initial gzip tracks only the entry/import graph. Trend sparkline is historical current gzip ending with this PR measurement; lower is better.

@codspeed

codspeed Bot commented Sep 9, 2026 •

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 180 untouched benchmarks


Comparing optimize-link-react-runtime (d249878) with optimize-link-benchmark-staging (74f4e6e)

Open in CodSpeed

@schiller-manuel
schiller-manuel force-pushed the optimize-link-react-runtime branch from 0803e7a to f19c091 Compare September 9, 2026 23:23
@schiller-manuel
schiller-manuel force-pushed the optimize-link-react-runtime branch from f19c091 to 0347a36 Compare September 10, 2026 06:05
@schiller-manuel
schiller-manuel force-pushed the optimize-link-react-runtime branch from 0347a36 to cdc8878 Compare September 10, 2026 20:29
@schiller-manuel
schiller-manuel force-pushed the optimize-link-react-runtime branch from cdc8878 to bbf2222 Compare September 10, 2026 21:12
@schiller-manuel
schiller-manuel force-pushed the optimize-link-react-runtime branch from bbf2222 to e22657a Compare September 11, 2026 21:08

@nx-cloud nx-cloud Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Important

At least one additional CI pipeline execution has run since the conclusion below was written and it may no longer be applicable.

Nx Cloud has identified a possible root cause for your failed CI:

We classified this failure as an environment issue rather than a code regression. The failing test (tanstack-vue-start-e2e-basic — client-side script loading) is completely unrelated to our react-router Link performance changes, and the project was not touched by this PR. With a 0% flakiness rate and no similar failures on other branches, this appears to be a pre-existing infrastructure issue.

No code changes were suggested for this issue.

Trigger a rerun:

Rerun CI

Nx Cloud View detailed reasoning on Nx Cloud ↗


🎓 Learn more about Self-Healing CI on nx.dev

schiller-manuel and others added 2 commits September 12, 2026 23:35
Omit type and disabled in one rest copy for native anchors instead of copying the hook result twice. Custom components still receive disabled, and useLinkProps still returns supported type/disabled values. Add client/SSR coverage for those distinctions, refs and render-function children.

Against 6e4584e0d8, four balanced fresh-process pairs with one implementation per process reduced client parameter-updater CPU from 15.61515 to 15.14615 ms per eight-navigation batch (-3.00%, 95% CI -4.19% to -1.80%); wall -3.04% (-4.29% to -1.78%). SSR shared-param CPU fell from 1.45208 to 1.41006 ms per four-request batch (-2.89%, CI -3.80% to -1.98%); wall -2.85% (-3.84% to -1.84%). Earlier co-loaded comparisons were inconclusive.

React Router minimal gzip -5 bytes to 85773; full +1 to 89358. Other React fixtures vary -3 to +4 bytes, raw +14; Solid/Vue remain byte-identical. No public API or prop functionality removed.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Reuse the existing true/false snapshot functions instead of allocating them on every useHydrated render. This lets React skip unnecessary store-instance passive bookkeeping without changing hydration values or adding hooks. Cover stable identities and an actual server-render/hydrateRoot transition.

Against b6971a434a, four balanced fresh-process pairs per case (200 warmup and 500 measured eight-navigation batches) reduced parameter-updater CPU from 15.16880 to 14.99436 ms (-1.15%, 95% CI -1.84% to -0.46%); wall -1.05% (-1.62% to -0.47%). Middleware CPU fell from 15.23708 to 14.81729 ms (-2.75%, CI -4.46% to -1.01%); wall -2.79% (-4.53% to -1.01%).

React Router minimal/full gzip increases 14/15 bytes for this isolated fix, remaining below the initial branch baseline. All Solid/Vue bundle output is unchanged. Public APIs, server snapshots and client hydration transitions are preserved.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@schiller-manuel
schiller-manuel force-pushed the optimize-link-react-runtime branch from e22657a to d249878 Compare September 12, 2026 21:35
@schiller-manuel
schiller-manuel merged commit 6387d58 into main Sep 13, 2026
26 checks passed
@schiller-manuel
schiller-manuel deleted the optimize-link-react-runtime branch September 13, 2026 11:55
Sheraff pushed a commit that referenced this pull request Sep 14, 2026
* perf(react-router): filter native Link props once

Omit type and disabled in one rest copy for native anchors instead of copying the hook result twice. Custom components still receive disabled, and useLinkProps still returns supported type/disabled values. Add client/SSR coverage for those distinctions, refs and render-function children.

Against 6e4584e0d8, four balanced fresh-process pairs with one implementation per process reduced client parameter-updater CPU from 15.61515 to 15.14615 ms per eight-navigation batch (-3.00%, 95% CI -4.19% to -1.80%); wall -3.04% (-4.29% to -1.78%). SSR shared-param CPU fell from 1.45208 to 1.41006 ms per four-request batch (-2.89%, CI -3.80% to -1.98%); wall -2.85% (-3.84% to -1.84%). Earlier co-loaded comparisons were inconclusive.

React Router minimal gzip -5 bytes to 85773; full +1 to 89358. Other React fixtures vary -3 to +4 bytes, raw +14; Solid/Vue remain byte-identical. No public API or prop functionality removed.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* perf(react-router): stabilize hydration snapshot getters

Reuse the existing true/false snapshot functions instead of allocating them on every useHydrated render. This lets React skip unnecessary store-instance passive bookkeeping without changing hydration values or adding hooks. Cover stable identities and an actual server-render/hydrateRoot transition.

Against b6971a434a, four balanced fresh-process pairs per case (200 warmup and 500 measured eight-navigation batches) reduced parameter-updater CPU from 15.16880 to 14.99436 ms (-1.15%, 95% CI -1.84% to -0.46%); wall -1.05% (-1.62% to -0.47%). Middleware CPU fell from 15.23708 to 14.81729 ms (-2.75%, CI -4.46% to -1.01%); wall -2.79% (-4.53% to -1.01%).

React Router minimal/full gzip increases 14/15 bytes for this isolated fix, remaining below the initial branch baseline. All Solid/Vue bundle output is unchanged. Public APIs, server snapshots and client hydration transitions are preserved.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
brandhaug added a commit to brandhaug/b2b-saas-starter that referenced this pull request Sep 22, 2026
## Dependency Updates

| Package | From | To | Type |
| --- | --- | --- | --- |
| `@babel/core` | 8.0.1 | 8.0.5 | patch |
| `@effect/platform-node` | 4.0.0-rc.112 | 4.0.0-rc.115 | prerelease |
| `@effect/sql-d1` | 4.0.0-rc.112 | 4.0.0-rc.115 | prerelease |
| `@effect/vitest` | 4.0.0-rc.112 | 4.0.0-rc.115 | prerelease |
| `@inlang/paraglide-js` | 2.25.0 | 2.25.4 | patch |
| `@react-email/ui` | 6.9.3 | 6.9.5 | patch |
| `@rolldown/plugin-babel` | 0.2.3 | 0.2.4 | patch |
| `@tanstack/react-query` | 5.103.0 | 5.103.1 | patch |
| `@tanstack/react-router` | 1.170.32 | 1.170.38 | patch |
| `@tanstack/react-router-devtools` | 1.167.1 | 1.167.2 | patch |
| `@tanstack/react-router-ssr-query` | 1.167.2 | 1.167.3 | patch |
| `@tanstack/react-start` | 1.168.49 | 1.168.56 | patch |
| `@testing-library/dom` | 10.4.1 | 10.4.2 | patch |
| `ai` | 7.0.101 | 7.0.106 | patch |
| `effect` | 4.0.0-rc.112 | 4.0.0-rc.115 | prerelease |
| `effectful-better-auth` | 1.0.0 | 1.0.2 | patch |
| `jose` | 6.2.10 | 6.2.12 | patch |
| `posthog-node` | 5.52.1 | 5.52.4 | patch |
| `react-email` | 6.9.3 | 6.9.5 | patch |
| `ws` | 8.21.0 | 8.21.3 | patch |

## Release Notes

<details>
<summary><b>@<!---->babel/core</b> (8.0.1 → 8.0.5)</summary>

## v8.0.5 (2026-09-10)

Thanks @<!---->drubetti, @<!---->jibin7jose, @<!---->joelle-a-dev,
@<!---->journey-ad, @<!---->Kjubikstronk, @<!---->MatteoGabriele, and
@<!---->zhangli091011 for your first PRs!

#### 👓 Spec Compliance
* `babel-parser`
* [#18218](babel/babel#18218) fix(parser): do
not form html entity for invalid codepoint
([@<!---->JLHwung](https://github.com/JLHwung))

#### 🐛 Bug Fix
* `babel-parser`
* [#18215](babel/babel#18215) fix(parser):
remove non-decimal prefix from bigint
([@<!---->JLHwung](https://github.com/JLHwung))
* [#18063](babel/babel#18063) Disallow new
import prop access ([@<!---->JLHwung](https://github.com/JLHwung))
* `babel-plugin-transform-destructuring`
* [#18214](babel/babel#18214) fix: only collapse
the empty-object check when it targets the declared binding
([@<!---->Kjubikstronk](https://github.com/Kjubikstronk))
* `babel-plugin-transform-typescript`
* [#18190](babel/babel#18190) fix(ts): improve
variable handling in namespace
([@<!---->JLHwung](https://github.com/JLHwung))
* [#18207](babel/babel#18207) [ts] Allow merging
`enum` into a `namespace`
([@<!---->nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-node`
* [#18217](babel/babel#18217) Fix import path
for babel-node.js ([@<!---->drubetti](https://github.com/drubetti))
* `babel-plugin-bugfix-safari-rest-destructuring-rhs-array`
* [#18213](babel/babel#18213) fix(bugfix): bound
check before array access
([@<!---->JLHwung](https://github.com/JLHwung))
* `babel-traverse`
* [#18183](babel/babel#18183) fix(remove):
unwrap single sequence expression
([@<!---->JLHwung](https://github.com/JLHwung))
* [#18153](babel/babel#18153) Handle null in
`getAll{Prev,Next}Siblings`
([@<!---->JLHwung](https://github.com/JLHwung))
* `babel-plugin-transform-block-scoping`
  * [#18194](https://github.com/babel/b

…[full notes](https://github.com/babel/babel/releases/tag/v8.0.5)

</details>

<details>
<summary><b>@<!---->effect/platform-node</b> (4.0.0-rc.112 →
4.0.0-rc.115) — 2 releases</summary>

<details>
<summary><b>4.0.0-rc.115</b></summary>

### Patch Changes

- Updated dependencies
[[`657254b`](Effect-TS/effect@657254b),
[`f9ef0e9`](Effect-TS/effect@f9ef0e9),
[`4f73f9e`](Effect-TS/effect@4f73f9e)]:
  - effect@4.0.0-rc.115
  - @<!---->effect/platform-node-shared@4.0.0-rc.115

</details>

<details>
<summary><b>4.0.0-rc.114</b></summary>

### Patch Changes

- Updated dependencies
[[`3ff4952`](Effect-TS/effect@3ff4952),
[`6d55555`](Effect-TS/effect@6d55555),
[`716e0c0`](Effect-TS/effect@716e0c0),
[`d4e4ad5`](Effect-TS/effect@d4e4ad5),
[`b1988f4`](Effect-TS/effect@b1988f4),
[`482b7d7`](Effect-TS/effect@482b7d7),
[`716e0c0`](Effect-TS/effect@716e0c0),
[`9941e6d`](Effect-TS/effect@9941e6d)]:
  - effect@4.0.0-rc.114
  - @<!---->effect/platform-node-shared@4.0.0-rc.114

</details>

</details>

<details>
<summary><b>@<!---->effect/sql-d1</b> (4.0.0-rc.112 → 4.0.0-rc.115) — 2
releases</summary>

<details>
<summary><b>4.0.0-rc.115</b></summary>

### Patch Changes

- Updated dependencies
[[`657254b`](Effect-TS/effect@657254b),
[`f9ef0e9`](Effect-TS/effect@f9ef0e9),
[`4f73f9e`](Effect-TS/effect@4f73f9e)]:
  - effect@4.0.0-rc.115

</details>

<details>
<summary><b>4.0.0-rc.114</b></summary>

### Patch Changes

- Updated dependencies
[[`3ff4952`](Effect-TS/effect@3ff4952),
[`6d55555`](Effect-TS/effect@6d55555),
[`716e0c0`](Effect-TS/effect@716e0c0),
[`d4e4ad5`](Effect-TS/effect@d4e4ad5),
[`b1988f4`](Effect-TS/effect@b1988f4),
[`482b7d7`](Effect-TS/effect@482b7d7),
[`716e0c0`](Effect-TS/effect@716e0c0),
[`9941e6d`](Effect-TS/effect@9941e6d)]:
  - effect@4.0.0-rc.114

</details>

</details>

<details>
<summary><b>@<!---->effect/vitest</b> (4.0.0-rc.112 → 4.0.0-rc.115) — 2
releases</summary>

<details>
<summary><b>4.0.0-rc.115</b></summary>

### Patch Changes

- Updated dependencies
[[`657254b`](Effect-TS/effect@657254b),
[`f9ef0e9`](Effect-TS/effect@f9ef0e9),
[`4f73f9e`](Effect-TS/effect@4f73f9e)]:
  - effect@4.0.0-rc.115

</details>

<details>
<summary><b>4.0.0-rc.114</b></summary>

### Patch Changes

- Updated dependencies
[[`3ff4952`](Effect-TS/effect@3ff4952),
[`6d55555`](Effect-TS/effect@6d55555),
[`716e0c0`](Effect-TS/effect@716e0c0),
[`d4e4ad5`](Effect-TS/effect@d4e4ad5),
[`b1988f4`](Effect-TS/effect@b1988f4),
[`482b7d7`](Effect-TS/effect@482b7d7),
[`716e0c0`](Effect-TS/effect@716e0c0),
[`9941e6d`](Effect-TS/effect@9941e6d)]:
  - effect@4.0.0-rc.114

</details>

</details>

<details>
<summary><b>@<!---->tanstack/react-query</b> (5.103.0 →
5.103.1)</summary>

### Patch Changes

- Updated dependencies
\[[`8330b2f`](TanStack/query@8330b2f),
[`3212966`](TanStack/query@3212966)]:
    -   @<!---->tanstack/query-core@5.103.1

</details>

<details>
<summary><b>@<!---->tanstack/react-router</b> (1.170.32 → 1.170.38) — 3
releases</summary>

<details>
<summary><b>1.170.38</b></summary>

### Patch Changes

- Updated dependencies
\[[`cecae54`](TanStack/router@cecae54),
[`0103578`](TanStack/router@0103578),
[`ce10dcd`](TanStack/router@ce10dcd),
[`84936cc`](TanStack/router@84936cc),
[`bbd2336`](TanStack/router@bbd2336)]:
    -   @<!---->tanstack/router-core@1.171.32

</details>

<details>
<summary><b>1.170.37</b></summary>

### Patch Changes

- [#8418](TanStack/router#8418)
[`e561fa1`](TanStack/router@e561fa1)
- `deepEqual` now takes its flags as positional arguments —
`deepEqual(a, b, partial?, explicitUndefined?)` — instead of an options
object. The router's hot callers (Link option stabilization and
active-state checks, `matchRoute`) no longer allocate an options object
per comparison, and the comparator reads two booleans instead of a
polymorphic object. `explicitUndefined` replaces `ignoreUndefined:
false`. `deepEqual` is an internal helper; it stays exported for
compatibility of two-argument calls.

- [#8419](TanStack/router#8419)
[`a1c8d1a`](TanStack/router@a1c8d1a)
- `resolvePath` (internal helper) now takes positional arguments —
`resolvePath(base, to, trailingSlash?, cache?)` — so `buildLocation` and
`matchRoute` no longer allocate an options object per path resolution.

- [#8204](TanStack/router#8204)
[`cbbfbe3`](TanStack/router@cbbfbe3)
- Stream large deferred SSR hydration payloads through a
backpressure-aware router transport, fail known setup errors before
response creation, and close cancelled or expired transforms safely.

Start now cancels discarded middleware and HEAD response bodies,
including plain streams and derived branches.

Server-function raw streams share one ordered response. Arbitrary or
sequential consumption can require potentially unbounded buffering of
unread data on the client. Cancelling one raw stream discards it
locally, while aborting the whole call cancels the response and server
work. Consume streams concurrently, cancel unused streams promptly, or
use separate calls when independent backpressure is required. A raw
stream that exceeds its unread-byte limit now fails alone; sibling
stream

…[full
notes](https://github.com/TanStack/router/releases/tag/%40tanstack/react-router%401.170.37)

</details>

<details>
<summary><b>1.170.36</b></summary>

### Patch Changes

- [#8390](TanStack/router#8390)
[`b747fb8`](TanStack/router@b747fb8)
- Keep the Link location cache out of server bundles: `buildLocation`
only creates, reads and writes it when `isServer` is false. Render React
Links on the server without the extra prop copies and the forwarded-ref
hook. Link SSR rendering is 20-40% faster in the Link benchmarks and the
React Start SSR request loop about 7% faster.

React `activeProps` and `inactiveProps` now follow one precedence rule
on every link, including links whose destination is blocked for using a
disallowed scheme: state props override element props, `ref` and event
handlers, while `href`, `disabled` and `target` stay controlled by the
router. Previously a blocked link ignored a `ref` or handler from its
inactive props.

React `Link` and `useLinkProps` split router options from element props
with one key set on the client and the server. Element props pass
through as given: external links forward them verbatim, falsy values
included, and `useLinkProps` now returns `children` for
router-controlled links as it already did for external ones.

- [#8324](TanStack/router#8324)
[`6387d58`](TanStack/router@6387d58)
- Reuse hydration snapshot getters to avoid unnecessary store-instance
effect updates when Links and other hydration-aware components rerender.

- [#8318](TanStack/router#8318)
[`9b2adaf`](TanStack/router@9b2adaf)
- Allow active and inactive Link props to override base element props in
React and Solid while preserving class/style merging. Keep React's
`href`, `target`, and `disabled` values controlled by routing options.
Preserve Vue object and nested-array class bindings, including reactive
updates and server rendering, without mutating cach

…[full
notes](https://github.com/TanStack/router/releases/tag/%40tanstack/react-router%401.170.36)

</details>

</details>

<details>
<summary><b>@<!---->tanstack/react-router-devtools</b> (1.167.1 →
1.167.2)</summary>

### Patch Changes

- Updated dependencies
\[[`d76a332`](TanStack/router@d76a332),
[`b747fb8`](TanStack/router@b747fb8),
[`6cfb1e8`](TanStack/router@6cfb1e8),
[`700a714`](TanStack/router@700a714),
[`700a714`](TanStack/router@700a714),
[`6387d58`](TanStack/router@6387d58),
[`7e349c3`](TanStack/router@7e349c3),
[`9b2adaf`](TanStack/router@9b2adaf),
[`873c830`](TanStack/router@873c830),
[`7e349c3`](TanStack/router@7e349c3),
[`634da91`](TanStack/router@634da91),
[`e9396c9`](TanStack/router@e9396c9),
[`634da91`](TanStack/router@634da91),
[`f151ab0`](TanStack/router@f151ab0),
[`bc57fa3`](TanStack/router@bc57fa3),
[`6387d58`](TanStack/router@6387d58),
[`9872d2a`](TanStack/router@9872d2a),
[`d76a332`](TanStack/router@d76a332),
[`634da91`](TanStack/router@634da91),
[`634da91`](TanStack/router@634da91),
[`7e349c3`](ht

…[full
notes](https://github.com/TanStack/router/releases/tag/%40tanstack/react-router-devtools%401.167.2)

</details>

<details>
<summary><b>@<!---->tanstack/react-router-ssr-query</b> (1.167.2 →
1.167.3)</summary>

### Patch Changes

- [#8204](TanStack/router#8204)
[`cbbfbe3`](TanStack/router@cbbfbe3)
- Stream large deferred SSR hydration payloads through a
backpressure-aware router transport, fail known setup errors before
response creation, and close cancelled or expired transforms safely.

Start now cancels discarded middleware and HEAD response bodies,
including plain streams and derived branches.

Server-function raw streams share one ordered response. Arbitrary or
sequential consumption can require potentially unbounded buffering of
unread data on the client. Cancelling one raw stream discards it
locally, while aborting the whole call cancels the response and server
work. Consume streams concurrently, cancel unused streams promptly, or
use separate calls when independent backpressure is required. A raw
stream that exceeds its unread-byte limit now fails alone; sibling
streams and the JSON result keep flowing.

The JSON wire shape of a `RawStream` server-function argument changed.
Clients and servers must run matching versions for requests that pass a
`RawStream`.

The frame-protocol constants (`FRAME_TYPE_*`, `MAX_FRAME_PAYLOAD_SIZE`,
`MAX_FRAMED_STREAMS`) moved from the `@tanstack/start-client-core` root
to the `@tanstack/start-client-core/client-rpc` subpath.

Router requests whose `Accept` header allows neither `text/html` nor
`*/*` now receive `406 Not Acceptable` instead of `500`.

Framework adapters share the body `<Scripts>` composition
(`getSsrBodyScriptParts`, `composeSsrBodyScripts`) and the eager HTML
response wrapper (`renderSsrHtmlResponse`) from `@tanstack/router-core`.

Solid SSR now emits one document type and renders late lazy errors
through route boundaries. A Solid `<Await>` without a `fallback` no
longer holds the streamed shell; it renders inside the nearest
`<Suspense>` boundary like React and Vue, and now renders falsy resolved
values.



…[full
notes](https://github.com/TanStack/router/releases/tag/%40tanstack/react-router-ssr-query%401.167.3)

</details>

<details>
<summary><b>@<!---->tanstack/react-start</b> (1.168.49 → 1.168.56) — 4
releases</summary>

<details>
<summary><b>1.168.56</b></summary>

### Patch Changes

-   Updated dependencies \[]:
    -   @<!---->tanstack/react-router@1.170.38
    -   @<!---->tanstack/react-start-client@1.168.36
    -   @<!---->tanstack/react-start-rsc@0.1.55
    -   @<!---->tanstack/react-start-server@1.167.43
    -   @<!---->tanstack/start-client-core@1.170.32
    -   @<!---->tanstack/start-plugin-core@1.171.46
    -   @<!---->tanstack/start-server-core@1.169.37

</details>

<details>
<summary><b>1.168.55</b></summary>

### Patch Changes

- Updated dependencies
\[[`e561fa1`](TanStack/router@e561fa1),
[`cbbfbe3`](TanStack/router@cbbfbe3),
[`a1c8d1a`](TanStack/router@a1c8d1a),
[`cbbfbe3`](TanStack/router@cbbfbe3),
[`8e164d2`](TanStack/router@8e164d2)]:
    -   @<!---->tanstack/react-router@1.170.37
    -   @<!---->tanstack/start-plugin-core@1.171.45
    -   @<!---->tanstack/start-client-core@1.170.31
    -   @<!---->tanstack/start-server-core@1.169.36
    -   @<!---->tanstack/react-start-client@1.168.35
    -   @<!---->tanstack/react-start-rsc@0.1.54
    -   @<!---->tanstack/react-start-server@1.167.42

</details>

<details>
<summary><b>1.168.54</b></summary>

### Patch Changes

- Updated dependencies
\[[`ab99818`](TanStack/router@ab99818)]:
    -   @<!---->tanstack/start-plugin-core@1.171.44
    -   @<!---->tanstack/react-start-rsc@0.1.53

</details>

<details>
<summary><b>1.168.53</b></summary>

### Patch Changes

- Updated dependencies
\[[`b747fb8`](TanStack/router@b747fb8),
[`6387d58`](TanStack/router@6387d58),
[`9b2adaf`](TanStack/router@9b2adaf),
[`634da91`](TanStack/router@634da91),
[`e9396c9`](TanStack/router@e9396c9),
[`6387d58`](TanStack/router@6387d58),
[`9872d2a`](TanStack/router@9872d2a),
[`7e349c3`](TanStack/router@7e349c3),
[`e9396c9`](TanStack/router@e9396c9)]:
    -   @<!---->tanstack/react-router@1.170.36
    -   @<!---->tanstack/start-server-core@1.169.35
    -   @<!---->tanstack/react-start-client@1.168.34
    -   @<!---->tanstack/react-start-rsc@0.1.52
    -   @<!---->tanstack/react-start-server@1.167.41
    -   @<!---->tanstack/start-client-core@1.170.30
    -   @<!---->tanstack/start-plugin-core@1.171.43

</details>

</details>

<details>
<summary><b>@<!---->testing-library/dom</b> (10.4.1 → 10.4.2)</summary>

##
[10.4.2](testing-library/dom-testing-library@v10.4.1...v10.4.2)
(2026-09-13)


### Bug Fixes

* **deps:** pin @<!---->types/node to a TypeScript 4-compatible version
([#1386](testing-library/dom-testing-library#1386))
([6049cc0](testing-library/dom-testing-library@6049cc0))

</details>

<details>
<summary><b>ai</b> (7.0.101 → 7.0.106)</summary>

### Patch Changes

- 4775577: fix(ai): preserve provider metadata when simulating text
streams
- 6696728: fix(ai): report the prepareStep model in streamed step
results
- 09516a1: fix(ai): prevent unhandled rejections when UI message stream
reading stops early
- 1aef01e: fix(ai): preserve prototype-named properties in serialized
tool outputs
- 9c1ea74: fix(ai): close telemetry spans when provider response streams
fail
- 107343a: fix(ai): use the prepareStep-selected model for streamed
response metadata fallbacks
- 03c3e33: fix(ai): preserve tool calls required by retained pending
approvals
- 5d42ebd: fix(ai): skip input available callbacks for invalid streamed
tool calls
- 4a67783: fix(ai): cancel prompt attachment downloads when model calls
are aborted or time out
- 1058ed5: fix(ai): strip streamed JSON fences before arbitrary trailing
whitespace
- 84f5d1b: fix(ai): stream null and empty string JSON partial outputs
- 2d53a5d: fix(ai): prevent onEnd after aborting a multi-step text
stream
- 2a5ed55: fix(ai): stream structured output from the final tool-loop
step
- Updated dependencies [4fdf51e]
- Updated dependencies [0455398]
  - @<!---->ai-sdk/gateway@4.0.86
  - @<!---->ai-sdk/provider-utils@5.0.44

</details>

<details>
<summary><b>effect</b> (4.0.0-rc.112 → 4.0.0-rc.115) — 2
releases</summary>

<details>
<summary><b>4.0.0-rc.115</b></summary>

### Patch Changes

- [#8196](Effect-TS/effect#8196)
[`657254b`](Effect-TS/effect@657254b)
Thanks @<!---->gcanti! - Optimize schema initialization while preserving
custom constructor options.

- [#8190](Effect-TS/effect#8190)
[`f9ef0e9`](Effect-TS/effect@f9ef0e9)
Thanks @<!---->javascript-unsafe! - Omit response bodies for statuses
204, 205, and 304 in `HttpServerResponse.toWeb` and the Bun/Deno HTTP
adapters, preventing invalid Web responses and hung requests. Cancel
omitted raw `ReadableStream` bodies, and finalize request resources
without starting omitted Effect streams.

- [#8187](Effect-TS/effect#8187)
[`4f73f9e`](Effect-TS/effect@4f73f9e)
Thanks @<!---->tim-smart! - Parameterize persistence lookup keys in both
SQL backing stores' `getMany` queries.

</details>

<details>
<summary><b>4.0.0-rc.114</b></summary>

### Patch Changes

- [#8177](Effect-TS/effect#8177)
[`3ff4952`](Effect-TS/effect@3ff4952)
Thanks @<!---->tim-smart! - Allow `Effect.cachedWithTTL` to compute the
TTL from each completed `Exit`, so successes and failures can use
different cache durations.

- [#8164](Effect-TS/effect#8164)
[`6d55555`](Effect-TS/effect@6d55555)
Thanks @<!---->sam-goodwin! - Keep Node and Bun file stats usable when
optional numeric metadata exceeds the safe integer range by returning
`Option.none()` for those fields.

- [#8162](Effect-TS/effect#8162)
[`716e0c0`](Effect-TS/effect@716e0c0)
Thanks @<!---->tim-smart! - Fix published declarations referencing
symbols stripped as `@internal`, which broke consumers compiling with
`skipLibCheck: false`. `Effectable.d.ts` now uses the public
`Effect.TypeId`, `Match.d.ts` no longer aliases an internal `Contextual`
type, `Schema.d.ts` ships the `AnnotationSchemaConstraint` alias it
references, and the CLI's `toFlagDoc` helper is marked internal so it no
longer leaks `Param.getParamMetadata`.

- [#8160](Effect-TS/effect#8160)
[`d4e4ad5`](Effect-TS/effect@d4e4ad5)
Thanks @<!---->gcanti! - Fix `SchemaRepresentation.toCodeDocument`
generating invalid TypeScript for optional tuple elements containing
unions or nested readonly tuples. Optional element types are now
parenthesized, for example `readonly [(string | number)?]` instead of
`readonly [string | number?]`. Generated runtime schemas are unchanged.

- [#8158](Effect-TS/effect#8158)
[`b1988f4`](Effect-TS/effect@b1988f4)
Thanks @<!---->gcanti! - Fix `SchemaRepresentation.toCodeDocument`
dropping Struct fields named `__proto__`

…[full
notes](https://github.com/Effect-TS/effect/releases/tag/effect%404.0.0-rc.114)

</details>

</details>

<details>
<summary><b>jose</b> (6.2.10 → 6.2.12) — 2 releases</summary>

<details>
<summary><b>6.2.12</b></summary>

### Documentation

* clarify and shorten public API guidance
([be62530](panva/jose@be62530))

### Refactor

* simplify JWS and JWE operation cores
([92e9640](panva/jose@92e9640))

### Performance

* avoid copying AES-GCM output
([6925d43](panva/jose@6925d43))
* deduplicate pending jwks key imports
([bf5138b](panva/jose@bf5138b))
* encode single-signature JWS input once
([7bc9a33](panva/jose@7bc9a33))
* normalize General JWE shared headers once
([78637bd](panva/jose@78637bd))
* normalize jwks selection metadata once
([fd3ae3f](panva/jose@fd3ae3f))
* use native encoding for larger ASCII strings
([b23a6f3](panva/jose@b23a6f3))

</details>

<details>
<summary><b>6.2.11</b></summary>

### Documentation

* render subpath indexes as tables
([94589ee](panva/jose@94589ee))
* shorten API index descriptions
([681482f](panva/jose@681482f))

### Refactor

* model JWE key management modes
([e01dda6](panva/jose@e01dda6))
* **types:** reduce declaration repetition
([55b970f](panva/jose@55b970f))

</details>

</details>

<details>
<summary><b>posthog-node</b> (5.52.1 → 5.52.4) — 3 releases</summary>

<details>
<summary><b>5.52.4</b></summary>

## 5.52.4

### Patch Changes

- [#4885](PostHog/posthog-js#4885)
[`39a8980`](PostHog/posthog-js@39a8980)
Thanks [@<!---->decknamec](https://github.com/decknamec)! - Server-side
feature flags now resolve in posthog-node and posthog-edge even when a
proxy rewrites the request's `User-Agent`. Flags restricted to the
`client` runtime now resolve to `undefined` in these SDKs, where a
rewritten `User-Agent` previously let them through.
  (2026-09-15)
- Updated dependencies
[[`39a8980`](PostHog/posthog-js@39a8980)]:
  - @<!---->posthog/core@1.54.2

</details>

<details>
<summary><b>5.52.3</b></summary>

## 5.52.3

### Patch Changes

- [#4941](PostHog/posthog-js#4941)
[`07c1045`](PostHog/posthog-js@07c1045)
Thanks [@<!---->marandaneto](https://github.com/marandaneto)! - Capture
causes and AggregateError members with relationship metadata and
individual stacks, limiting output to 50 entries and 1,000 member
inspections.
  (2026-09-15)
- Updated dependencies
[[`07c1045`](PostHog/posthog-js@07c1045)]:
  - @<!---->posthog/core@1.54.1

</details>

<details>
<summary><b>5.52.2</b></summary>

## 5.52.2

### Patch Changes

- [#4951](PostHog/posthog-js#4951)
[`55c5142`](PostHog/posthog-js@55c5142)
Thanks [@<!---->marandaneto](https://github.com/marandaneto)! - Fix
Express exception events reporting the initial response status instead
of the final HTTP status.
  (2026-09-14)

</details>

</details>

<details>
<summary><b>react-email</b> (6.9.3 → 6.9.5)</summary>

### Patch Changes

* 0250981: fix responsive padding not applying to inner td for Container
and Section

</details>

<details>
<summary><b>ws</b> (8.21.0 → 8.21.3) — 3 releases</summary>

<details>
<summary><b>8.21.3</b></summary>

# Bug fixes

- The server now correctly rejects permessage-deflate offers if the
incoming
`client_max_window_bits` parameter value is smaller than its configured
  `clientMaxWindowBits` (e97a20ea).

</details>

<details>
<summary><b>8.21.2</b></summary>

# Bug fixes

- Fixed a test for [CITGM][] (2eb3be0b).

[CITGM]: https://github.com/nodejs/citgm

</details>

<details>
<summary><b>8.21.1</b></summary>

# Bug fixes

- Empty fragments are now counted toward the limit (a2f4e7c0).
- The default values of the `maxBufferedChunks` and `maxFragments`
options have
  been reduced (f197ac65).

</details>

</details>

---
*This PR was auto-generated by
[catalog-update-action](https://github.com/brandhaug/catalog-update-action).*

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants