Skip to content

Commit d19d070

Browse files
fix(deps): update starter-peer-deps (#746)
## Manual Changes and Fixes #### Vite Upgrade (`7.1.5` -> `7.1.6`) and Directive Scanner Failures **Problem** We have a custom directive scanner that discovers `"use client"` and `"use server"` files. To minimize user dependencies and ensure consistent behavior, this scanner relies on the `esbuild` binary that ships with Vite. The upgrade to Vite `7.1.6` introduced a breaking change via its internal `esbuild` dependency, which was updated from `^0.23.0` to `^0.24.0`. The new `esbuild` version changed its API behavior, making it an error to use `write: false` with `bundle: true` for multiple entry points without specifying an `outdir`. This caused our directive scanner to fail. A follow-up issue also occurred where the scanner failed on virtual modules provided by Vite's config. **Solution** The scanner's `esbuild` configuration was updated to be compatible with the new API. This involved two changes: 1. Adding a temporary `outdir` to the configuration. Since `write: false` is still set, no files are written to disk. 2. Adding a filter to ignore virtual modules (e.g., `virtual:cloudflare/worker-entry`) before passing entry points to `esbuild`. --- #### `@cloudflare/vite-plugin` (`1.12.4` -> `1.13.3`) and Build Process Conflict **Problem** Our production build is a multi-pass process orchestrated by `buildApp.mts`. It first builds an intermediate worker bundle, then "links" it with an SSR bridge to produce the final single-file artifact. This process must work in harmony with the Cloudflare plugin. The updated `@cloudflare/vite-plugin` now requires the main worker entry chunk to be named `index`. This requires a Rollup input config like `{ index: '...' }`. However, to create a single-file worker bundle, we need `inlineDynamicImports: true`, and a recent Rollup update requires this option to be used with a simple string input, not an object. This created a deadlock, preventing a successful build. **Solution** The solution was to adapt our build process to cooperate with the plugin: 1. The manual `rollupOptions` for the worker build were removed from our `configPlugin.mts`, allowing the `@cloudflare/vite-plugin` to take control and generate a valid intermediate build with an `index.js` chunk. 2. The "linker" pass in `buildApp.mts` was updated to hook into the plugin-generated configuration. It now modifies the existing config, re-pointing the `input` to the intermediate `index.js` artifact from the first pass. This resolves the conflict by letting the plugin manage the build while still allowing our orchestrator to perform its essential multi-pass logic. --- #### Dev Server Directive Scan Regression **Problem** The fix for the production build involved removing the manual `rollupOptions` from the worker's Vite configuration, allowing the Cloudflare plugin to manage the build. This change, while correct for production, had an unintended side-effect on the development server. The dev server failed because the directive scanner, which runs on startup, no longer had an entry point. It relied on the `rollupOptions` that had been removed, and it was executing before the full Vite configuration for the worker environment was resolved. **Solution** The dependency on the implicit Vite configuration was removed. The `runDirectivesScan` function was updated to accept an explicit `entries` parameter. This entry point is now passed directly from the main `redwoodPlugin` (for the `dev` command) and the `buildApp` function (for the `build` command), ensuring the scanner always has the correct starting point. --- #### CI Infrastructure Changes: Switching to Tarball-Based Testing **Problem** The investigation into the build failures revealed that the existing CI setup, which relied on workspace linking, was running tests against stale dependencies from the monorepo's `node_modules`. This meant the CI was not testing against the newly upgraded package versions, which hid the build and type errors. **Solution** To ensure the CI accurately validates the project against the upgraded dependencies, the test environments for both smoke tests and E2E tests were switched to use a tarball-based installation. This process involves: 1. Packing the SDK into a tarball. 2. Copying the test project (e.g., a starter or playground app) to a clean, temporary directory. 3. Installing dependencies in the isolated environment using the SDK tarball. This approach guarantees that tests run in a clean environment with the correct, newly-updated dependencies, accurately simulating a real user installation. As part of this change, the redundant `check-starters.yml` workflow was removed, as its type-checking coverage is now handled more reliably by the playground E2E tests. ## Automated changes This PR contains the following updates: | Package | Change | Age | Confidence | |---|---|---|---| | [@cloudflare/vite-plugin](https://redirect.github.com/cloudflare/workers-sdk/tree/main/packages/vite-plugin-cloudflare#readme) ([source](https://redirect.github.com/cloudflare/workers-sdk/tree/HEAD/packages/vite-plugin-cloudflare)) | [`1.12.4` -> `1.13.3`](https://renovatebot.com/diffs/npm/@cloudflare%2fvite-plugin/1.12.4/1.13.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@cloudflare%2fvite-plugin/1.13.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@cloudflare%2fvite-plugin/1.12.4/1.13.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@cloudflare/workers-types](https://redirect.github.com/cloudflare/workerd) | [`4.20250913.0` -> `4.20250921.0`](https://renovatebot.com/diffs/npm/@cloudflare%2fworkers-types/4.20250913.0/4.20250921.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@cloudflare%2fworkers-types/4.20250921.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@cloudflare%2fworkers-types/4.20250913.0/4.20250921.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [react](https://react.dev/) ([source](https://redirect.github.com/facebook/react/tree/HEAD/packages/react)) | [`19.2.0-canary-3fb190f7-20250908` -> `19.2.0-canary-d415fd3e-20250919`](https://renovatebot.com/diffs/npm/react/19.2.0-canary-3fb190f7-20250908/19.2.0-canary-d415fd3e-20250919) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react/19.2.0-canary-d415fd3e-20250919?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react/19.2.0-canary-3fb190f7-20250908/19.2.0-canary-d415fd3e-20250919?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [react-dom](https://react.dev/) ([source](https://redirect.github.com/facebook/react/tree/HEAD/packages/react-dom)) | [`19.2.0-canary-3fb190f7-20250908` -> `19.2.0-canary-d415fd3e-20250919`](https://renovatebot.com/diffs/npm/react-dom/19.2.0-canary-3fb190f7-20250908/19.2.0-canary-d415fd3e-20250919) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-dom/19.2.0-canary-d415fd3e-20250919?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-dom/19.2.0-canary-3fb190f7-20250908/19.2.0-canary-d415fd3e-20250919?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [react-server-dom-webpack](https://react.dev/) ([source](https://redirect.github.com/facebook/react/tree/HEAD/packages/react-server-dom-webpack)) | [`19.2.0-canary-3fb190f7-20250908` -> `19.2.0-canary-d415fd3e-20250919`](https://renovatebot.com/diffs/npm/react-server-dom-webpack/19.2.0-canary-3fb190f7-20250908/19.2.0-canary-d415fd3e-20250919) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-server-dom-webpack/19.2.0-canary-d415fd3e-20250919?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-server-dom-webpack/19.2.0-canary-3fb190f7-20250908/19.2.0-canary-d415fd3e-20250919?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [vite](https://vite.dev) ([source](https://redirect.github.com/vitejs/vite/tree/HEAD/packages/vite)) | [`7.1.5` -> `7.1.6`](https://renovatebot.com/diffs/npm/vite/7.1.5/7.1.6) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vite/7.1.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vite/7.1.5/7.1.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [wrangler](https://redirect.github.com/cloudflare/workers-sdk) ([source](https://redirect.github.com/cloudflare/workers-sdk/tree/HEAD/packages/wrangler)) | [`4.35.0` -> `4.38.0`](https://renovatebot.com/diffs/npm/wrangler/4.35.0/4.38.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/wrangler/4.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/wrangler/4.35.0/4.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. This PR updates the following dependencies: --- ### Release Notes <details> <summary>cloudflare/workers-sdk (@&#8203;cloudflare/vite-plugin)</summary> ### [`v1.13.3`](https://redirect.github.com/cloudflare/workers-sdk/blob/HEAD/packages/vite-plugin-cloudflare/CHANGELOG.md#1133) [Compare Source](https://redirect.github.com/cloudflare/workers-sdk/compare/@cloudflare/vite-plugin@1.13.2...@cloudflare/vite-plugin@1.13.3) ##### Patch Changes - [#&#8203;10664](https://redirect.github.com/cloudflare/workers-sdk/pull/10664) [`924fdde`](https://redirect.github.com/cloudflare/workers-sdk/commit/924fdde4c36cd58de713ec9eaf2c983fa6bd6b22) Thanks [@&#8203;jamesopstad](https://redirect.github.com/jamesopstad)! - Avoid mutating the Worker config during build. - Updated dependencies \[[`b59e3e1`](https://redirect.github.com/cloudflare/workers-sdk/commit/b59e3e165d2a349399a6658c89419cb6aa89c713), [`a4e2439`](https://redirect.github.com/cloudflare/workers-sdk/commit/a4e243936744e9960f2e5006a2c0e2820c6333af), [`1cc258e`](https://redirect.github.com/cloudflare/workers-sdk/commit/1cc258e2fdf56e38c37b3cf36d6e279edc90ea2d), [`f76da43`](https://redirect.github.com/cloudflare/workers-sdk/commit/f76da43cc8f5f2a12fa15ba1db4ce5b3de84f33b), [`b30263e`](https://redirect.github.com/cloudflare/workers-sdk/commit/b30263ea2d0b608640f181ba84b46c27b14bfcaf), [`b30263e`](https://redirect.github.com/cloudflare/workers-sdk/commit/b30263ea2d0b608640f181ba84b46c27b14bfcaf), [`769ffb1`](https://redirect.github.com/cloudflare/workers-sdk/commit/769ffb190e69a759322612700677c770c8c54c09), [`e9b0c66`](https://redirect.github.com/cloudflare/workers-sdk/commit/e9b0c665aea3c12103ebc2d1070d7e05ff0bfe46), [`6caf938`](https://redirect.github.com/cloudflare/workers-sdk/commit/6caf938fe989ee7c261b330560982311b93e0438), [`88132bc`](https://redirect.github.com/cloudflare/workers-sdk/commit/88132bc25c45257d8a38c25bef3b9c4761a2903e)]: - miniflare\@&#8203;4.20250917.0 - wrangler\@&#8203;4.38.0 - [@&#8203;cloudflare/unenv-preset](https://redirect.github.com/cloudflare/unenv-preset)@&#8203;2.7.4 ### [`v1.13.2`](https://redirect.github.com/cloudflare/workers-sdk/blob/HEAD/packages/vite-plugin-cloudflare/CHANGELOG.md#1132) [Compare Source](https://redirect.github.com/cloudflare/workers-sdk/compare/@cloudflare/vite-plugin@1.13.1...@cloudflare/vite-plugin@1.13.2) ##### Patch Changes - [#&#8203;10632](https://redirect.github.com/cloudflare/workers-sdk/pull/10632) [`60631d5`](https://redirect.github.com/cloudflare/workers-sdk/commit/60631d5ab443e5694037687e591bb6d38447c128) Thanks [@&#8203;jamesopstad](https://redirect.github.com/jamesopstad)! - Ensure that correct error messages and stack traces are displayed. - Updated dependencies \[[`3029b9a`](https://redirect.github.com/cloudflare/workers-sdk/commit/3029b9a9734edd52b7d83f91d56abbbd8ad9ae81), [`783afeb`](https://redirect.github.com/cloudflare/workers-sdk/commit/783afeb90f32c9e2c0a96f83ccff30ad7155e419), [`31ec996`](https://redirect.github.com/cloudflare/workers-sdk/commit/31ec996d39713c9d25da60122edc9e41aec1a90b)]: - wrangler\@&#8203;4.37.1 - miniflare\@&#8203;4.20250913.0 ### [`v1.13.1`](https://redirect.github.com/cloudflare/workers-sdk/blob/HEAD/packages/vite-plugin-cloudflare/CHANGELOG.md#1131) [Compare Source](https://redirect.github.com/cloudflare/workers-sdk/compare/@cloudflare/vite-plugin@1.13.0...@cloudflare/vite-plugin@1.13.1) ##### Patch Changes - Updated dependencies \[[`d53a0bc`](https://redirect.github.com/cloudflare/workers-sdk/commit/d53a0bc3afee011cc9edbb61d1583f61a986831f), [`735785e`](https://redirect.github.com/cloudflare/workers-sdk/commit/735785e7948da06411b738c70efcd95626efb3eb), [`15c34e2`](https://redirect.github.com/cloudflare/workers-sdk/commit/15c34e23d6bcd225a3ebea08cba25d3c62b77729)]: - wrangler\@&#8203;4.37.0 - miniflare\@&#8203;4.20250906.2 ### [`v1.13.0`](https://redirect.github.com/cloudflare/workers-sdk/blob/HEAD/packages/vite-plugin-cloudflare/CHANGELOG.md#1130) [Compare Source](https://redirect.github.com/cloudflare/workers-sdk/compare/@cloudflare/vite-plugin@1.12.4...@cloudflare/vite-plugin@1.13.0) ##### Minor Changes - [#&#8203;10212](https://redirect.github.com/cloudflare/workers-sdk/pull/10212) [`0837a8d`](https://redirect.github.com/cloudflare/workers-sdk/commit/0837a8d4e406809e388dc06ad0b26a77b350f7b4) Thanks [@&#8203;jamesopstad](https://redirect.github.com/jamesopstad)! - Support packages and virtual modules in the `main` field of the Worker config. The primary use case is to enable users to directly provide a file exported by a framework as the Worker entry module. - [#&#8203;10604](https://redirect.github.com/cloudflare/workers-sdk/pull/10604) [`135e066`](https://redirect.github.com/cloudflare/workers-sdk/commit/135e06658ad3e3bd1d255c412597ce761ea412cb) Thanks [@&#8203;penalosa](https://redirect.github.com/penalosa)! - Enable Remote Bindings without the need for the `experimental: { remoteBindings: true }` property ##### Patch Changes - Updated dependencies \[[`0837a8d`](https://redirect.github.com/cloudflare/workers-sdk/commit/0837a8d4e406809e388dc06ad0b26a77b350f7b4), [`da24079`](https://redirect.github.com/cloudflare/workers-sdk/commit/da24079b370ad2af4e97b41ab20ad474ab148ead), [`ffa2600`](https://redirect.github.com/cloudflare/workers-sdk/commit/ffa2600a656b7a07cab622ea67338e770fd33bc3), [`135e066`](https://redirect.github.com/cloudflare/workers-sdk/commit/135e06658ad3e3bd1d255c412597ce761ea412cb), [`e2b838f`](https://redirect.github.com/cloudflare/workers-sdk/commit/e2b838ff56572d581661143d56f2485d7bcf1e0e), [`30f558e`](https://redirect.github.com/cloudflare/workers-sdk/commit/30f558eb4a02dcc5125f216d6fbe1d0be3b6d08f), [`d8860ac`](https://redirect.github.com/cloudflare/workers-sdk/commit/d8860ac17b20be71e1069d90861e3c49a6d5247b), [`336a75d`](https://redirect.github.com/cloudflare/workers-sdk/commit/336a75d8d7c52cc24e08de62dd4306201b879932), [`51553ef`](https://redirect.github.com/cloudflare/workers-sdk/commit/51553efa5bd7f07aa20d38fe6db62aa61e2b1999)]: - wrangler\@&#8203;4.36.0 - miniflare\@&#8203;4.20250906.1 </details> <details> <summary>cloudflare/workerd (@&#8203;cloudflare/workers-types)</summary> ### [`v4.20250921.0`](https://redirect.github.com/cloudflare/workerd/compare/c0dfafd4a4cc755dd6ab5c524ecbbd2f14dd21f6...1db98ae93ad97c00283e87bbeb14c93f10c1dae6) [Compare Source](https://redirect.github.com/cloudflare/workerd/compare/c0dfafd4a4cc755dd6ab5c524ecbbd2f14dd21f6...1db98ae93ad97c00283e87bbeb14c93f10c1dae6) ### [`v4.20250920.0`](https://redirect.github.com/cloudflare/workerd/compare/7b6621d94ced05981d04b88f894ba617985e086c...c0dfafd4a4cc755dd6ab5c524ecbbd2f14dd21f6) [Compare Source](https://redirect.github.com/cloudflare/workerd/compare/7b6621d94ced05981d04b88f894ba617985e086c...c0dfafd4a4cc755dd6ab5c524ecbbd2f14dd21f6) ### [`v4.20250919.0`](https://redirect.github.com/cloudflare/workerd/compare/f0c91b22361c02328bfdf5053c5380598f26f67c...7b6621d94ced05981d04b88f894ba617985e086c) [Compare Source](https://redirect.github.com/cloudflare/workerd/compare/f0c91b22361c02328bfdf5053c5380598f26f67c...7b6621d94ced05981d04b88f894ba617985e086c) ### [`v4.20250918.0`](https://redirect.github.com/cloudflare/workerd/compare/84b597aca73b45f38a61c131f388ee26a64cf145...f0c91b22361c02328bfdf5053c5380598f26f67c) [Compare Source](https://redirect.github.com/cloudflare/workerd/compare/84b597aca73b45f38a61c131f388ee26a64cf145...f0c91b22361c02328bfdf5053c5380598f26f67c) ### [`v4.20250917.0`](https://redirect.github.com/cloudflare/workerd/compare/182098fbaa2df43c2ae0299affa9ce68fe007b89...84b597aca73b45f38a61c131f388ee26a64cf145) [Compare Source](https://redirect.github.com/cloudflare/workerd/compare/182098fbaa2df43c2ae0299affa9ce68fe007b89...84b597aca73b45f38a61c131f388ee26a64cf145) </details> <details> <summary>facebook/react (react)</summary> ### [`v19.2.0-canary-d415fd3e-20250919`](https://redirect.github.com/facebook/react/compare/cee7939b0017ff58230e19663c22393bfd9025ef...d415fd3ed716f02f463232341ab21e909e0058ca) [Compare Source](https://redirect.github.com/facebook/react/compare/cee7939b0017ff58230e19663c22393bfd9025ef...d415fd3ed716f02f463232341ab21e909e0058ca) ### [`v19.2.0-canary-cee7939b-20250625`](https://redirect.github.com/facebook/react/compare/c498bfce8b9baa3dd21bd0d5124eb3a4549886f1...cee7939b0017ff58230e19663c22393bfd9025ef) [Compare Source](https://redirect.github.com/facebook/react/compare/c498bfce8b9baa3dd21bd0d5124eb3a4549886f1...cee7939b0017ff58230e19663c22393bfd9025ef) ### [`v19.2.0-canary-c498bfce-20250426`](https://redirect.github.com/facebook/react/compare/c4676e72a630f3e93634c2b004b3be07b17a79c8...c498bfce8b9baa3dd21bd0d5124eb3a4549886f1) [Compare Source](https://redirect.github.com/facebook/react/compare/c4676e72a630f3e93634c2b004b3be07b17a79c8...c498bfce8b9baa3dd21bd0d5124eb3a4549886f1) ### [`v19.2.0-canary-c4676e72-20250520`](https://redirect.github.com/facebook/react/compare/c44e4a250557e53b120e40db8b01fb5fd93f1e35...c4676e72a630f3e93634c2b004b3be07b17a79c8) [Compare Source](https://redirect.github.com/facebook/react/compare/c44e4a250557e53b120e40db8b01fb5fd93f1e35...c4676e72a630f3e93634c2b004b3be07b17a79c8) ### [`v19.2.0-canary-c44e4a25-20250409`](https://redirect.github.com/facebook/react/compare/c260b38d0a082641342fc45ff5ac96e32f764f20...c44e4a250557e53b120e40db8b01fb5fd93f1e35) [Compare Source](https://redirect.github.com/facebook/react/compare/c260b38d0a082641342fc45ff5ac96e32f764f20...c44e4a250557e53b120e40db8b01fb5fd93f1e35) ### [`v19.2.0-canary-c260b38d-20250731`](https://redirect.github.com/facebook/react/compare/c129c2424b662a371865a0145c562a1cf934b023...c260b38d0a082641342fc45ff5ac96e32f764f20) [Compare Source](https://redirect.github.com/facebook/react/compare/c129c2424b662a371865a0145c562a1cf934b023...c260b38d0a082641342fc45ff5ac96e32f764f20) ### [`v19.2.0-canary-c129c242-20250505`](https://redirect.github.com/facebook/react/compare/c0464aedb16b1c970d717651bba8d1c66c578729...c129c2424b662a371865a0145c562a1cf934b023) [Compare Source](https://redirect.github.com/facebook/react/compare/c0464aedb16b1c970d717651bba8d1c66c578729...c129c2424b662a371865a0145c562a1cf934b023) ### [`v19.2.0-canary-c0464aed-20250523`](https://redirect.github.com/facebook/react/compare/befc1246b07a04b401bc6e914b7f336a442dca1a...c0464aedb16b1c970d717651bba8d1c66c578729) [Compare Source](https://redirect.github.com/facebook/react/compare/befc1246b07a04b401bc6e914b7f336a442dca1a...c0464aedb16b1c970d717651bba8d1c66c578729) ### [`v19.2.0-canary-befc1246-20250708`](https://redirect.github.com/facebook/react/compare/be11cb5c4b36b42dcc4c8bdcbc67d9a9b4ac2e14...befc1246b07a04b401bc6e914b7f336a442dca1a) [Compare Source](https://redirect.github.com/facebook/react/compare/be11cb5c4b36b42dcc4c8bdcbc67d9a9b4ac2e14...befc1246b07a04b401bc6e914b7f336a442dca1a) ### [`v19.2.0-canary-be11cb5c-20250804`](https://redirect.github.com/facebook/react/compare/bdb4a96f628d3b426d3c79fbd598ec35c05835a3...be11cb5c4b36b42dcc4c8bdcbc67d9a9b4ac2e14) [Compare Source](https://redirect.github.com/facebook/react/compare/bdb4a96f628d3b426d3c79fbd598ec35c05835a3...be11cb5c4b36b42dcc4c8bdcbc67d9a9b4ac2e14) ### [`v19.2.0-canary-bdb4a96f-20250801`](https://redirect.github.com/facebook/react/compare/bc6184dd993e6ea0efdee7553293676db774c3ca...bdb4a96f628d3b426d3c79fbd598ec35c05835a3) [Compare Source](https://redirect.github.com/facebook/react/compare/bc6184dd993e6ea0efdee7553293676db774c3ca...bdb4a96f628d3b426d3c79fbd598ec35c05835a3) ### [`v19.2.0-canary-bc6184dd-20250417`](https://redirect.github.com/facebook/react/compare/bbc13fa17be8eebef3e6ee47f48c76c0c44e2f36...bc6184dd993e6ea0efdee7553293676db774c3ca) [Compare Source](https://redirect.github.com/facebook/react/compare/bbc13fa17be8eebef3e6ee47f48c76c0c44e2f36...bc6184dd993e6ea0efdee7553293676db774c3ca) ### [`v19.2.0-canary-bbc13fa1-20250624`](https://redirect.github.com/facebook/react/compare/bb6f0c8d2f29754347db0ff28186dc89c128b6ca...bbc13fa17be8eebef3e6ee47f48c76c0c44e2f36) [Compare Source](https://redirect.github.com/facebook/react/compare/bb6f0c8d2f29754347db0ff28186dc89c128b6ca...bbc13fa17be8eebef3e6ee47f48c76c0c44e2f36) ### [`v19.2.0-canary-bb6f0c8d-20250901`](https://redirect.github.com/facebook/react/compare/edf550b67936f2c62534ad5549bf580a4f581bd8...bb6f0c8d2f29754347db0ff28186dc89c128b6ca) [Compare Source](https://redirect.github.com/facebook/react/compare/edf550b67936f2c62534ad5549bf580a4f581bd8...bb6f0c8d2f29754347db0ff28186dc89c128b6ca) ### [`v19.2.0-canary-b9cfa0d3-20250505`](https://redirect.github.com/facebook/react/compare/b9a045368bc1186fcaff6e8b027cfca28c857f04...edf550b67936f2c62534ad5549bf580a4f581bd8) [Compare Source](https://redirect.github.com/facebook/react/compare/b9a045368bc1186fcaff6e8b027cfca28c857f04...edf550b67936f2c62534ad5549bf580a4f581bd8) ### [`v19.2.0-canary-b9a04536-20250904`](https://redirect.github.com/facebook/react/compare/b94603b95504130aec72f61e02d7b66d48f33653...b9a045368bc1186fcaff6e8b027cfca28c857f04) [Compare Source](https://redirect.github.com/facebook/react/compare/b94603b95504130aec72f61e02d7b66d48f33653...b9a045368bc1186fcaff6e8b027cfca28c857f04) ### [`v19.2.0-canary-b94603b9-20250513`](https://redirect.github.com/facebook/react/compare/b7e2de632b2a160bc09edda1fbb9b8f85a6914e8...b94603b95504130aec72f61e02d7b66d48f33653) [Compare Source](https://redirect.github.com/facebook/react/compare/b7e2de632b2a160bc09edda1fbb9b8f85a6914e8...b94603b95504130aec72f61e02d7b66d48f33653) ### [`v19.2.0-canary-b7e2de63-20250611`](https://redirect.github.com/facebook/react/compare/b6c0aa88140bba2a61c1de16bda2505c89b26235...b7e2de632b2a160bc09edda1fbb9b8f85a6914e8) [Compare Source](https://redirect.github.com/facebook/react/compare/b6c0aa88140bba2a61c1de16bda2505c89b26235...b7e2de632b2a160bc09edda1fbb9b8f85a6914e8) ### [`v19.2.0-canary-b6c0aa88-20250609`](https://redirect.github.com/facebook/react/compare/b4477d3800ccb0bdf26670cd1f021d094159c38f...b6c0aa88140bba2a61c1de16bda2505c89b26235) [Compare Source](https://redirect.github.com/facebook/react/compare/b4477d3800ccb0bdf26670cd1f021d094159c38f...b6c0aa88140bba2a61c1de16bda2505c89b26235) ### [`v19.2.0-canary-b4477d38-20250605`](https://redirect.github.com/facebook/react/compare/b1b0955f2b34286a7408e58463f4cc429627f9a8...b4477d3800ccb0bdf26670cd1f021d094159c38f) [Compare Source](https://redirect.github.com/facebook/react/compare/b1b0955f2b34286a7408e58463f4cc429627f9a8...b4477d3800ccb0bdf26670cd1f021d094159c38f) ### [`v19.2.0-canary-b1b0955f-20250901`](https://redirect.github.com/facebook/react/compare/b10cb4c01ec1ae41b67422239d919f261fefa7d1...b1b0955f2b34286a7408e58463f4cc429627f9a8) [Compare Source](https://redirect.github.com/facebook/react/compare/b10cb4c01ec1ae41b67422239d919f261fefa7d1...b1b0955f2b34286a7408e58463f4cc429627f9a8) ### [`v19.2.0-canary-b10cb4c0-20250403`](https://redirect.github.com/facebook/react/compare/b07717d857422af5fb1c2ee0930e5a2a62df2b0e...b10cb4c01ec1ae41b67422239d919f261fefa7d1) [Compare Source](https://redirect.github.com/facebook/react/compare/b07717d857422af5fb1c2ee0930e5a2a62df2b0e...b10cb4c01ec1ae41b67422239d919f261fefa7d1) ### [`v19.2.0-canary-b07717d8-20250528`](https://redirect.github.com/facebook/react/compare/b04254fdcee30871760301f34236ee0dfadf86ab...b07717d857422af5fb1c2ee0930e5a2a62df2b0e) [Compare Source](https://redirect.github.com/facebook/react/compare/b04254fdcee30871760301f34236ee0dfadf86ab...b07717d857422af5fb1c2ee0930e5a2a62df2b0e) ### [`v19.2.0-canary-b04254fd-20250415`](https://redirect.github.com/facebook/react/compare/ac7820a99efac29dcd5a69f6d2438f6d31b7abbf...b04254fdcee30871760301f34236ee0dfadf86ab) [Compare Source](https://redirect.github.com/facebook/react/compare/ac7820a99efac29dcd5a69f6d2438f6d31b7abbf...b04254fdcee30871760301f34236ee0dfadf86ab) ### [`v19.2.0-canary-ac7820a9-20250811`](https://redirect.github.com/facebook/react/compare/ab859e31be5db56106161060033109c9f2d26eca...ac7820a99efac29dcd5a69f6d2438f6d31b7abbf) [Compare Source](https://redirect.github.com/facebook/react/compare/ab859e31be5db56106161060033109c9f2d26eca...ac7820a99efac29dcd5a69f6d2438f6d31b7abbf) ### [`v19.2.0-canary-ab859e31-20250606`](https://redirect.github.com/facebook/react/compare/aad7c664ffbde52e5d8004b542d83d6d4b7a32a0...ab859e31be5db56106161060033109c9f2d26eca) [Compare Source](https://redirect.github.com/facebook/react/compare/aad7c664ffbde52e5d8004b542d83d6d4b7a32a0...ab859e31be5db56106161060033109c9f2d26eca) ### [`v19.2.0-canary-aad7c664-20250829`](https://redirect.github.com/facebook/react/compare/a96a0f3903ea0a9d45ff7c30a3fd9efe830c4628...aad7c664ffbde52e5d8004b542d83d6d4b7a32a0) [Compare Source](https://redirect.github.com/facebook/react/compare/a96a0f3903ea0a9d45ff7c30a3fd9efe830c4628...aad7c664ffbde52e5d8004b542d83d6d4b7a32a0) ### [`v19.2.0-canary-a96a0f39-20250815`](https://redirect.github.com/facebook/react/compare/a7a116577daf3b135c226ed9db8a8c2f9166c023...a96a0f3903ea0a9d45ff7c30a3fd9efe830c4628) [Compare Source](https://redirect.github.com/facebook/react/compare/a7a116577daf3b135c226ed9db8a8c2f9166c023...a96a0f3903ea0a9d45ff7c30a3fd9efe830c4628) ### [`v19.2.0-canary-a7a11657-20250708`](https://redirect.github.com/facebook/react/compare/a00ca6f6b51e46a0ccec54a2231bfe7a1ed9ae1d...a7a116577daf3b135c226ed9db8a8c2f9166c023) [Compare Source](https://redirect.github.com/facebook/react/compare/a00ca6f6b51e46a0ccec54a2231bfe7a1ed9ae1d...a7a116577daf3b135c226ed9db8a8c2f9166c023) ### [`v19.2.0-canary-a00ca6f6-20250611`](https://redirect.github.com/facebook/react/compare/9be531cd37f5558c72f7de360eb921b0074e8544...a00ca6f6b51e46a0ccec54a2231bfe7a1ed9ae1d) [Compare Source](https://redirect.github.com/facebook/react/compare/9be531cd37f5558c72f7de360eb921b0074e8544...a00ca6f6b51e46a0ccec54a2231bfe7a1ed9ae1d) ### [`v19.2.0-canary-9be531cd-20250729`](https://redirect.github.com/facebook/react/compare/99efc627a5a8cb56f50cfffee544c86c49572b6f...9be531cd37f5558c72f7de360eb921b0074e8544) [Compare Source](https://redirect.github.com/facebook/react/compare/99efc627a5a8cb56f50cfffee544c86c49572b6f...9be531cd37f5558c72f7de360eb921b0074e8544) ### [`v19.2.0-canary-99efc627-20250523`](https://redirect.github.com/facebook/react/compare/97cdd5d3c33eda77be4f96a43f72d6916d3badbb...99efc627a5a8cb56f50cfffee544c86c49572b6f) [Compare Source](https://redirect.github.com/facebook/react/compare/97cdd5d3c33eda77be4f96a43f72d6916d3badbb...99efc627a5a8cb56f50cfffee544c86c49572b6f) ### [`v19.2.0-canary-97cdd5d3-20250710`](https://redirect.github.com/facebook/react/compare/9784cb379e249a5495cde5ba3037521207144e91...97cdd5d3c33eda77be4f96a43f72d6916d3badbb) [Compare Source](https://redirect.github.com/facebook/react/compare/9784cb379e249a5495cde5ba3037521207144e91...97cdd5d3c33eda77be4f96a43f72d6916d3badbb) ### [`v19.2.0-canary-9784cb37-20250730`](https://redirect.github.com/facebook/react/compare/96c61b7f1f145b9fe5103051b636959cdeb20cc8...9784cb379e249a5495cde5ba3037521207144e91) [Compare Source](https://redirect.github.com/facebook/react/compare/96c61b7f1f145b9fe5103051b636959cdeb20cc8...9784cb379e249a5495cde5ba3037521207144e91) ### [`v19.2.0-canary-96c61b7f-20250709`](https://redirect.github.com/facebook/react/compare/93d7aa69b29c20529c40cf64b0afdb5d51c9ddd1...96c61b7f1f145b9fe5103051b636959cdeb20cc8) [Compare Source](https://redirect.github.com/facebook/react/compare/93d7aa69b29c20529c40cf64b0afdb5d51c9ddd1...96c61b7f1f145b9fe5103051b636959cdeb20cc8) ### [`v19.2.0-canary-93d7aa69-20250912`](https://redirect.github.com/facebook/react/compare/914319ae595010cd5d3f0e277c77eb86da18e4f0...93d7aa69b29c20529c40cf64b0afdb5d51c9ddd1) [Compare Source](https://redirect.github.com/facebook/react/compare/914319ae595010cd5d3f0e277c77eb86da18e4f0...93d7aa69b29c20529c40cf64b0afdb5d51c9ddd1) ### [`v19.2.0-canary-914319ae-20250423`](https://redirect.github.com/facebook/react/compare/8e60cb7ed55a3dce35bd809b4cf1ad803c59abfd...914319ae595010cd5d3f0e277c77eb86da18e4f0) [Compare Source](https://redirect.github.com/facebook/react/compare/8e60cb7ed55a3dce35bd809b4cf1ad803c59abfd...914319ae595010cd5d3f0e277c77eb86da18e4f0) ### [`v19.2.0-canary-8e60cb7e-20250902`](https://redirect.github.com/facebook/react/compare/8d7b5e490320732f40d9c3aa4590b5b0ae5116f5...8e60cb7ed55a3dce35bd809b4cf1ad803c59abfd) [Compare Source](https://redirect.github.com/facebook/react/compare/8d7b5e490320732f40d9c3aa4590b5b0ae5116f5...8e60cb7ed55a3dce35bd809b4cf1ad803c59abfd) ### [`v19.2.0-canary-8d7b5e49-20250827`](https://redirect.github.com/facebook/react/compare/8ce15b0f56a066ece465963ca1370e46113bb868...8d7b5e490320732f40d9c3aa4590b5b0ae5116f5) [Compare Source](https://redirect.github.com/facebook/react/compare/8ce15b0f56a066ece465963ca1370e46113bb868...8d7b5e490320732f40d9c3aa4590b5b0ae5116f5) ### [`v19.2.0-canary-8ce15b0f-20250522`](https://redirect.github.com/facebook/react/compare/8a8e9a7edf16fabc1335c9910bddfef66737ee4e...8ce15b0f56a066ece465963ca1370e46113bb868) [Compare Source](https://redirect.github.com/facebook/react/compare/8a8e9a7edf16fabc1335c9910bddfef66737ee4e...8ce15b0f56a066ece465963ca1370e46113bb868) ### [`v19.2.0-canary-8a8e9a7e-20250912`](https://redirect.github.com/facebook/react/compare/89a803fcec363df9108f2908735e5693280a78b5...8a8e9a7edf16fabc1335c9910bddfef66737ee4e) [Compare Source](https://redirect.github.com/facebook/react/compare/89a803fcec363df9108f2908735e5693280a78b5...8a8e9a7edf16fabc1335c9910bddfef66737ee4e) ### [`v19.2.0-canary-89a803fc-20250828`](https://redirect.github.com/facebook/react/compare/886b3d36d7994259df2c3ab1983f425a4b718615...89a803fcec363df9108f2908735e5693280a78b5) [Compare Source](https://redirect.github.com/facebook/react/compare/886b3d36d7994259df2c3ab1983f425a4b718615...89a803fcec363df9108f2908735e5693280a78b5) ### [`v19.2.0-canary-886b3d36-20250910`](https://redirect.github.com/facebook/react/compare/873f71129964350333503c039d9fa5784ea102d1...886b3d36d7994259df2c3ab1983f425a4b718615) [Compare Source](https://redirect.github.com/facebook/react/compare/873f71129964350333503c039d9fa5784ea102d1...886b3d36d7994259df2c3ab1983f425a4b718615) ### [`v19.2.0-canary-873f7112-20250821`](https://redirect.github.com/facebook/react/compare/84af9085c11411e44cc5e5aee6cf00c02a78986e...873f71129964350333503c039d9fa5784ea102d1) [Compare Source](https://redirect.github.com/facebook/react/compare/84af9085c11411e44cc5e5aee6cf00c02a78986e...873f71129964350333503c039d9fa5784ea102d1) ### [`v19.2.0-canary-84af9085-20250917`](https://redirect.github.com/facebook/react/compare/7deda941f7f77e82de0311fc3e0cf94d8a863069...84af9085c11411e44cc5e5aee6cf00c02a78986e) [Compare Source](https://redirect.github.com/facebook/react/compare/7deda941f7f77e82de0311fc3e0cf94d8a863069...84af9085c11411e44cc5e5aee6cf00c02a78986e) ### [`v19.2.0-canary-7deda941-20250804`](https://redirect.github.com/facebook/react/compare/7a2c7045aed222b1ece44a18db6326f2f10c89e3...7deda941f7f77e82de0311fc3e0cf94d8a863069) [Compare Source](https://redirect.github.com/facebook/react/compare/7a2c7045aed222b1ece44a18db6326f2f10c89e3...7deda941f7f77e82de0311fc3e0cf94d8a863069) ### [`v19.2.0-canary-7a2c7045-20250506`](https://redirect.github.com/facebook/react/compare/30f00e0eec5ed2f3367def1b852efa80ef362092...7a2c7045aed222b1ece44a18db6326f2f10c89e3) [Compare Source](https://redirect.github.com/facebook/react/compare/30f00e0eec5ed2f3367def1b852efa80ef362092...7a2c7045aed222b1ece44a18db6326f2f10c89e3) ### [`v19.2.0-canary-79d9aed7-20250620`](https://redirect.github.com/facebook/react/compare/7513996f20e34070141aa605fe282ca6986915a0...30f00e0eec5ed2f3367def1b852efa80ef362092) [Compare Source](https://redirect.github.com/facebook/react/compare/7513996f20e34070141aa605fe282ca6986915a0...30f00e0eec5ed2f3367def1b852efa80ef362092) ### [`v19.2.0-canary-7513996f-20250722`](https://redirect.github.com/facebook/react/compare/73aa744b7029556430f409ec3887a714940698ba...7513996f20e34070141aa605fe282ca6986915a0) [Compare Source](https://redirect.github.com/facebook/react/compare/73aa744b7029556430f409ec3887a714940698ba...7513996f20e34070141aa605fe282ca6986915a0) ### [`v19.2.0-canary-73aa744b-20250702`](https://redirect.github.com/facebook/react/compare/7216c0f002222cdee3075410f7432d64724640cc...73aa744b7029556430f409ec3887a714940698ba) [Compare Source](https://redirect.github.com/facebook/react/compare/7216c0f002222cdee3075410f7432d64724640cc...73aa744b7029556430f409ec3887a714940698ba) ### [`v19.2.0-canary-7216c0f0-20250630`](https://redirect.github.com/facebook/react/compare/721350964952457e0b9286867c42135df0c5e787...7216c0f002222cdee3075410f7432d64724640cc) [Compare Source](https://redirect.github.com/facebook/react/compare/721350964952457e0b9286867c42135df0c5e787...7216c0f002222cdee3075410f7432d64724640cc) ### [`v19.2.0-canary-72135096-20250421`](https://redirect.github.com/facebook/react/compare/6eda534718d09a26d58d65c0a376e05d7e2a3358...721350964952457e0b9286867c42135df0c5e787) [Compare Source](https://redirect.github.com/facebook/react/compare/6eda534718d09a26d58d65c0a376e05d7e2a3358...721350964952457e0b9286867c42135df0c5e787) ### [`v19.2.0-canary-6eda5347-20250918`](https://redirect.github.com/facebook/react/compare/6de32a5a07958d7fc2f8d0785f5873d2da73b9fa...6eda534718d09a26d58d65c0a376e05d7e2a3358) [Compare Source](https://redirect.github.com/facebook/react/compare/6de32a5a07958d7fc2f8d0785f5873d2da73b9fa...6eda534718d09a26d58d65c0a376e05d7e2a3358) ### [`v19.2.0-canary-6de32a5a-20250822`](https://redirect.github.com/facebook/react/compare/6b70072c4f21d6762d914adb42007db68f1e00a9...6de32a5a07958d7fc2f8d0785f5873d2da73b9fa) [Compare Source](https://redirect.github.com/facebook/react/compare/6b70072c4f21d6762d914adb42007db68f1e00a9...6de32a5a07958d7fc2f8d0785f5873d2da73b9fa) ### [`v19.2.0-canary-6b70072c-20250909`](https://redirect.github.com/facebook/react/compare/6a7650c75c1bc110517bd9b3eefdc66eadbb9cbf...6b70072c4f21d6762d914adb42007db68f1e00a9) [Compare Source](https://redirect.github.com/facebook/react/compare/6a7650c75c1bc110517bd9b3eefdc66eadbb9cbf...6b70072c4f21d6762d914adb42007db68f1e00a9) ### [`v19.2.0-canary-6a7650c7-20250405`](https://redirect.github.com/facebook/react/compare/67a44bcd1b09ab809cf503b39c2568212e13e1a5...6a7650c75c1bc110517bd9b3eefdc66eadbb9cbf) [Compare Source](https://redirect.github.com/facebook/react/compare/67a44bcd1b09ab809cf503b39c2568212e13e1a5...6a7650c75c1bc110517bd9b3eefdc66eadbb9cbf) ### [`v19.2.0-canary-67a44bcd-20250915`](https://redirect.github.com/facebook/react/compare/66f09bd0540d0a094b80c94d013df885903c97da...67a44bcd1b09ab809cf503b39c2568212e13e1a5) [Compare Source](https://redirect.github.com/facebook/react/compare/66f09bd0540d0a094b80c94d013df885903c97da...67a44bcd1b09ab809cf503b39c2568212e13e1a5) ### [`v19.2.0-canary-66f09bd0-20250806`](https://redirect.github.com/facebook/react/compare/65c4decb565b4eb1423518e76dbda7bc40a01c04...66f09bd0540d0a094b80c94d013df885903c97da) [Compare Source](https://redirect.github.com/facebook/react/compare/65c4decb565b4eb1423518e76dbda7bc40a01c04...66f09bd0540d0a094b80c94d013df885903c97da) ### [`v19.2.0-canary-65c4decb-20250630`](https://redirect.github.com/facebook/react/compare/6377903074d4b3a2de48c4da91783a5af9fc5237...65c4decb565b4eb1423518e76dbda7bc40a01c04) [Compare Source](https://redirect.github.com/facebook/react/compare/6377903074d4b3a2de48c4da91783a5af9fc5237...65c4decb565b4eb1423518e76dbda7bc40a01c04) ### [`v19.2.0-canary-63779030-20250328`](https://redirect.github.com/facebook/react/compare/60b5271a9ad0e9eec2489b999ce774d39d09285b...6377903074d4b3a2de48c4da91783a5af9fc5237) [Compare Source](https://redirect.github.com/facebook/react/compare/60b5271a9ad0e9eec2489b999ce774d39d09285b...6377903074d4b3a2de48c4da91783a5af9fc5237) ### [`v19.2.0-canary-60b5271a-20250709`](https://redirect.github.com/facebook/react/compare/5e0c951b58a98feed034e2bb92f25ae6d0616855...60b5271a9ad0e9eec2489b999ce774d39d09285b) [Compare Source](https://redirect.github.com/facebook/react/compare/5e0c951b58a98feed034e2bb92f25ae6d0616855...60b5271a9ad0e9eec2489b999ce774d39d09285b) ### [`v19.2.0-canary-5e0c951b-20250916`](https://redirect.github.com/facebook/react/compare/5dc00d6b2b7798266c1e3b6132f1d076fa9f55d7...5e0c951b58a98feed034e2bb92f25ae6d0616855) [Compare Source](https://redirect.github.com/facebook/react/compare/5dc00d6b2b7798266c1e3b6132f1d076fa9f55d7...5e0c951b58a98feed034e2bb92f25ae6d0616855) ### [`v19.2.0-canary-5dc00d6b-20250428`](https://redirect.github.com/facebook/react/compare/5d87cd224452c68d09bef99656b6261e9772a210...5dc00d6b2b7798266c1e3b6132f1d076fa9f55d7) [Compare Source](https://redirect.github.com/facebook/react/compare/5d87cd224452c68d09bef99656b6261e9772a210...5dc00d6b2b7798266c1e3b6132f1d076fa9f55d7) ### [`v19.2.0-canary-5d87cd22-20250704`](https://redirect.github.com/facebook/react/compare/56408a5b12fa4099e9dbbeca7f6bc59e1307e507...5d87cd224452c68d09bef99656b6261e9772a210) [Compare Source](https://redirect.github.com/facebook/react/compare/56408a5b12fa4099e9dbbeca7f6bc59e1307e507...5d87cd224452c68d09bef99656b6261e9772a210) ### [`v19.2.0-canary-56408a5b-20250610`](https://redirect.github.com/facebook/react/compare/540cd65252ced9f970fb97d5f5b7f029bd7cac83...56408a5b12fa4099e9dbbeca7f6bc59e1307e507) [Compare Source](https://redirect.github.com/facebook/react/compare/540cd65252ced9f970fb97d5f5b7f029bd7cac83...56408a5b12fa4099e9dbbeca7f6bc59e1307e507) ### [`v19.2.0-canary-540cd652-20250403`](https://redirect.github.com/facebook/react/compare/534bed5fa7ea927b00c48b348bee9a8087b68f9c...540cd65252ced9f970fb97d5f5b7f029bd7cac83) [Compare Source](https://redirect.github.com/facebook/react/compare/534bed5fa7ea927b00c48b348bee9a8087b68f9c...540cd65252ced9f970fb97d5f5b7f029bd7cac83) ### [`v19.2.0-canary-534bed5f-20250813`](https://redirect.github.com/facebook/react/compare/526dd340b3e77193846fe5eed02b9bb89d7c2d15...534bed5fa7ea927b00c48b348bee9a8087b68f9c) [Compare Source](https://redirect.github.com/facebook/react/compare/526dd340b3e77193846fe5eed02b9bb89d7c2d15...534bed5fa7ea927b00c48b348bee9a8087b68f9c) ### [`v19.2.0-canary-526dd340-20250602`](https://redirect.github.com/facebook/react/compare/4db4b21c63ebc4edc508c5f7674f9df50d8f9744...526dd340b3e77193846fe5eed02b9bb89d7c2d15) [Compare Source](https://redirect.github.com/facebook/react/compare/4db4b21c63ebc4edc508c5f7674f9df50d8f9744...526dd340b3e77193846fe5eed02b9bb89d7c2d15) ### [`v19.2.0-canary-4db4b21c-20250626`](https://redirect.github.com/facebook/react/compare/4a45ba92c4097a97333c04b5516ba2d5c81af716...4db4b21c63ebc4edc508c5f7674f9df50d8f9744) [Compare Source](https://redirect.github.com/facebook/react/compare/4a45ba92c4097a97333c04b5516ba2d5c81af716...4db4b21c63ebc4edc508c5f7674f9df50d8f9744) ### [`v19.2.0-canary-4a45ba92-20250515`](https://redirect.github.com/facebook/react/compare/4a36d3eab7d9bbbfae62699989aa95e5a0297c16...4a45ba92c4097a97333c04b5516ba2d5c81af716) [Compare Source](https://redirect.github.com/facebook/react/compare/4a36d3eab7d9bbbfae62699989aa95e5a0297c16...4a45ba92c4097a97333c04b5516ba2d5c81af716) ### [`v19.2.0-canary-4a36d3ea-20250416`](https://redirect.github.com/facebook/react/compare/462d08f9ba41d48ab36bf405235c1c22023603dc...4a36d3eab7d9bbbfae62699989aa95e5a0297c16) [Compare Source](https://redirect.github.com/facebook/react/compare/462d08f9ba41d48ab36bf405235c1c22023603dc...4a36d3eab7d9bbbfae62699989aa95e5a0297c16) ### [`v19.2.0-canary-462d08f9-20250517`](https://redirect.github.com/facebook/react/compare/4448b18760d867f9e009e810571e7a3b8930bb19...462d08f9ba41d48ab36bf405235c1c22023603dc) [Compare Source](https://redirect.github.com/facebook/react/compare/4448b18760d867f9e009e810571e7a3b8930bb19...462d08f9ba41d48ab36bf405235c1c22023603dc) ### [`v19.2.0-canary-4448b187-20250515`](https://redirect.github.com/facebook/react/compare/4123f6b771bb71a2831b1c450c385c38530125a0...4448b18760d867f9e009e810571e7a3b8930bb19) [Compare Source](https://redirect.github.com/facebook/react/compare/4123f6b771bb71a2831b1c450c385c38530125a0...4448b18760d867f9e009e810571e7a3b8930bb19) ### [`v19.2.0-canary-4123f6b7-20250826`](https://redirect.github.com/facebook/react/compare/408d055a3b89794088130ed39bf42ca540766275...4123f6b771bb71a2831b1c450c385c38530125a0) [Compare Source](https://redirect.github.com/facebook/react/compare/408d055a3b89794088130ed39bf42ca540766275...4123f6b771bb71a2831b1c450c385c38530125a0) ### [`v19.2.0-canary-408d055a-20250430`](https://redirect.github.com/facebook/react/compare/3fbfb9baaf38528349b86372bd7eff36c6a3261a...408d055a3b89794088130ed39bf42ca540766275) [Compare Source](https://redirect.github.com/facebook/react/compare/3fbfb9baaf38528349b86372bd7eff36c6a3261a...408d055a3b89794088130ed39bf42ca540766275) ### [`v19.2.0-canary-3fbfb9ba-20250409`](https://redirect.github.com/facebook/react/compare/3fb190f729ddcf32e7a76961082929683a3395a7...3fbfb9baaf38528349b86372bd7eff36c6a3261a) [Compare Source](https://redirect.github.com/facebook/react/compare/3fb190f729ddcf32e7a76961082929683a3395a7...3fbfb9baaf38528349b86372bd7eff36c6a3261a) </details> <details> <summary>facebook/react (react-dom)</summary> ### [`v19.2.0-canary-d415fd3e-20250919`](https://redirect.github.com/facebook/react/compare/cee7939b0017ff58230e19663c22393bfd9025ef...d415fd3ed716f02f463232341ab21e909e0058ca) [Compare Source](https://redirect.github.com/facebook/react/compare/cee7939b0017ff58230e19663c22393bfd9025ef...d415fd3ed716f02f463232341ab21e909e0058ca) ### [`v19.2.0-canary-cee7939b-20250625`](https://redirect.github.com/facebook/react/compare/c498bfce8b9baa3dd21bd0d5124eb3a4549886f1...cee7939b0017ff58230e19663c22393bfd9025ef) [Compare Source](https://redirect.github.com/facebook/react/compare/c498bfce8b9baa3dd21bd0d5124eb3a4549886f1...cee7939b0017ff58230e19663c22393bfd9025ef) ### [`v19.2.0-canary-c498bfce-20250426`](https://redirect.github.com/facebook/react/compare/c4676e72a630f3e93634c2b004b3be07b17a79c8...c498bfce8b9baa3dd21bd0d5124eb3a4549886f1) [Compare Source](https://redirect.github.com/facebook/react/compare/c4676e72a630f3e93634c2b004b3be07b17a79c8...c498bfce8b9baa3dd21bd0d5124eb3a4549886f1) ### [`v19.2.0-canary-c4676e72-20250520`](https://redirect.github.com/facebook/react/compare/c44e4a250557e53b120e40db8b01fb5fd93f1e35...c4676e72a630f3e93634c2b004b3be07b17a79c8) [Compare Source](https://redirect.github.com/facebook/react/compare/c44e4a250557e53b120e40db8b01fb5fd93f1e35...c4676e72a630f3e93634c2b004b3be07b17a79c8) ### [`v19.2.0-canary-c44e4a25-20250409`](https://redirect.github.com/facebook/react/compare/c260b38d0a082641342fc45ff5ac96e32f764f20...c44e4a250557e53b120e40db8b01fb5fd93f1e35) [Compare Source](https://redirect.github.com/facebook/react/compare/c260b38d0a082641342fc45ff5ac96e32f764f20...c44e4a250557e53b120e40db8b01fb5fd93f1e35) ### [`v19.2.0-canary-c260b38d-20250731`](https://redirect.github.com/facebook/react/compare/c129c2424b662a371865a0145c562a1cf934b023...c260b38d0a082641342fc45ff5ac96e32f764f20) [Compare Source](https://redirect.github.com/facebook/react/compare/c129c2424b662a371865a0145c562a1cf934b023...c260b38d0a082641342fc45ff5ac96e32f764f20) ### [`v19.2.0-canary-c129c242-20250505`](https://redirect.github.com/facebook/react/compare/c0464aedb16b1c970d717651bba8d1c66c578729...c129c2424b662a371865a0145c562a1cf934b023) [Compare Source](https://redirect.github.com/facebook/react/compare/c0464aedb16b1c970d717651bba8d1c66c578729...c129c2424b662a371865a0145c562a1cf934b023) ### [`v19.2.0-canary-c0464aed-20250523`](https://redirect.github.com/facebook/react/compare/befc1246b07a04b401bc6e914b7f336a442dca1a...c0464aedb16b1c970d717651bba8d1c66c578729) [Compare Source](https://redirect.github.com/facebook/react/compare/befc1246b07a04b401bc6e914b7f336a442dca1a...c0464aedb16b1c970d717651bba8d1c66c578729) ### [`v19.2.0-canary-befc1246-20250708`](https://redirect.github.com/facebook/react/compare/be11cb5c4b36b42dcc4c8bdcbc67d9a9b4ac2e14...befc1246b07a04b401bc6e914b7f336a442dca1a) [Compare Source](https://redirect.github.com/facebook/react/compare/be11cb5c4b36b42dcc4c8bdcbc67d9a9b4ac2e14...befc1246b07a04b401bc6e914b7f336a442dca1a) ### [`v19.2.0-canary-be11cb5c-20250804`](https://redirect.github.com/facebook/react/compare/bdb4a96f628d3b426d3c79fbd598ec35c05835a3...be11cb5c4b36b42dcc4c8bdcbc67d9a9b4ac2e14) [Compare Source](https://redirect.github.com/facebook/react/compare/bdb4a96f628d3b426d3c79fbd598ec35c05835a3...be11cb5c4b36b42dcc4c8bdcbc67d9a9b4ac2e14) ### [`v19.2.0-canary-bdb4a96f-20250801`](https://redirect.github.com/facebook/react/compare/bc6184dd993e6ea0efdee7553293676db774c3ca...bdb4a96f628d3b426d3c79fbd598ec35c05835a3) [Compare Source](https://redirect.github.com/facebook/react/compare/bc6184dd993e6ea0efdee7553293676db774c3ca...bdb4a96f628d3b426d3c79fbd598ec35c05835a3) ### [`v19.2.0-canary-bc6184dd-20250417`](https://redirect.github.com/facebook/react/compare/bbc13fa17be8eebef3e6ee47f48c76c0c44e2f36...bc6184dd993e6ea0efdee7553293676db774c3ca) [Compare Source](https://redirect.github.com/facebook/react/compare/bbc13fa17be8eebef3e6ee47f48c76c0c44e2f36...bc6184dd993e6ea0efdee7553293676db774c3ca) ### [`v19.2.0-canary-bbc13fa1-20250624`](https://redirect.github.com/facebook/react/compare/bb6f0c8d2f29754347db0ff28186dc89c128b6ca...bbc13fa17be8eebef3e6ee47f48c76c0c44e2f36) [Compare Source](https://redirect.github.com/facebook/react/compare/bb6f0c8d2f29754347db0ff28186dc89c128b6ca...bbc13fa17be8eebef3e6ee47f48c76c0c44e2f36) ### [`v19.2.0-canary-bb6f0c8d-20250901`](https://redirect.github.com/facebook/react/compare/edf550b67936f2c62534ad5549bf580a4f581bd8...bb6f0c8d2f29754347db0ff28186dc89c128b6ca) [Compare Source](https://redirect.github.com/facebook/react/compare/edf550b67936f2c62534ad5549bf580a4f581bd8...bb6f0c8d2f29754347db0ff28186dc89c128b6ca) ### [`v19.2.0-canary-b9cfa0d3-20250505`](https://redirect.github.com/facebook/react/compare/b9a045368bc1186fcaff6e8b027cfca28c857f04...edf550b67936f2c62534ad5549bf580a4f581bd8) [Compare Source](https://redirect.github.com/facebook/react/compare/b9a045368bc1186fcaff6e8b027cfca28c857f04...edf550b67936f2c62534ad5549bf580a4f581bd8) ### [`v19.2.0-canary-b9a04536-20250904`](https://redirect.github.com/facebook/react/compare/b94603b95504130aec72f61e02d7b66d48f33653...b9a045368bc1186fcaff6e8b027cfca28c857f04) [Compare Source](https://redirect.github.com/facebook/react/compare/b94603b95504130aec72f61e02d7b66d48f33653...b9a045368bc1186fcaff6e8b027cfca28c857f04) ### [`v19.2.0-canary-b94603b9-20250513`](https://redirect.github.com/facebook/react/compare/b7e2de632b2a160bc09edda1fbb9b8f85a6914e8...b94603b95504130aec72f61e02d7b66d48f33653) [Compare Source](https://redirect.github.com/facebook/react/compare/b7e2de632b2a160bc09edda1fbb9b8f85a6914e8...b94603b95504130aec72f61e02d7b66d48f33653) ### [`v19.2.0-canary-b7e2de63-20250611`](https://redirect.github.com/facebook/react/compare/b6c0aa88140bba2a61c1de16bda2505c89b26235...b7e2de632b2a160bc09edda1fbb9b8f85a6914e8) [Compare Source](https://redirect.github.com/facebook/react/compare/b6c0aa88140bba2a61c1de16bda2505c89b26235...b7e2de632b2a160bc09edda1fbb9b8f85a6914e8) ### [`v19.2.0-canary-b6c0aa88-20250609`](https://redirect.github.com/facebook/react/compare/b4477d3800ccb0bdf26670cd1f021d094159c38f...b6c0aa88140bba2a61c1de16bda2505c89b26235) [Compare Source](https://redirect.github.com/facebook/react/compare/b4477d3800ccb0bdf26670cd1f021d094159c38f...b6c0aa88140bba2a61c1de16bda2505c89b26235) ### [`v19.2.0-canary-b4477d38-20250605`](https://redirect.github.com/facebook/react/compare/b1b0955f2b34286a7408e58463f4cc429627f9a8...b4477d3800ccb0bdf26670cd1f021d094159c38f) [Compare Source](https://redirect.github.com/facebook/react/compare/b1b0955f2b34286a7408e58463f4cc429627f9a8...b4477d3800ccb0bdf26670cd1f021d094159c38f) ### [`v19.2.0-canary-b1b0955f-20250901`](https://redirect.github.com/facebook/react/compare/b10cb4c01ec1ae41b67422239d919f261fefa7d1...b1b0955f2b34286a7408e58463f4cc429627f9a8) [Compare Source](https://redirect.github.com/facebook/react/compare/b10cb4c01ec1ae41b67422239d919f261fefa7d1...b1b0955f2b34286a7408e58463f4cc429627f9a8) ### [`v19.2.0-canary-b10cb4c0-20250403`](https://redirect.github.com/facebook/react/compare/b07717d857422af5fb1c2ee0930e5a2a62df2b0e...b10cb4c01ec1ae41b67422239d919f261fefa7d1) [Compare Source](https://redirect.github.com/facebook/react/compare/b07717d857422af5fb1c2ee0930e5a2a62df2b0e...b10cb4c01ec1ae41b67422239d919f261fefa7d1) ### [`v19.2.0-canary-b07717d8-20250528`](https://redirect.github.com/facebook/react/compare/b04254fdcee30871760301f34236ee0dfadf86ab...b07717d857422af5fb1c2ee0930e5a2a62df2b0e) [Compare Source](https://redirect.github.com/facebook/react/compare/b04254fdcee30871760301f34236ee0dfadf86ab...b07717d857422af5fb1c2ee0930e5a2a62df2b0e) ### [`v19.2.0-canary-b04254fd-20250415`](https://redirect.github.com/facebook/react/compare/ac7820a99efac29dcd5a69f6d2438f6d31b7abbf...b04254fdcee30871760301f34236ee0dfadf86ab) [Compare Source](https://redirect.github.com/facebook/react/compare/ac7820a99efac29dcd5a69f6d2438f6d31b7abbf...b04254fdcee30871760301f34236ee0dfadf86ab) ### [`v19.2.0-canary-ac7820a9-20250811`](https://redirect.github.com/facebook/react/compare/ab859e31be5db56106161060033109c9f2d26eca...ac7820a99efac29dcd5a69f6d2438f6d31b7abbf) [Compare Source](https://redirect.github.com/facebook/react/compare/ab859e31be5db56106161060033109c9f2d26eca...ac7820a99efac29dcd5a69f6d2438f6d31b7abbf) ### [`v19.2.0-canary-ab859e31-20250606`](https://redirect.github.com/facebook/react/compare/aad7c664ffbde52e5d8004b542d83d6d4b7a32a0...ab859e31be5db56106161060033109c9f2d26eca) [Compare Source](https://redirect.github.com/facebook/react/compare/aad7c664ffbde52e5d8004b542d83d6d4b7a32a0...ab859e31be5db56106161060033109c9f2d26eca) ### [`v19.2.0-canary-aad7c664-20250829`](https://redirect.github.com/facebook/react/compare/a96a0f3903ea0a9d45ff7c30a3fd9efe830c4628...aad7c664ffbde52e5d8004b542d83d6d4b7a32a0) [Compare Source](https://redirect.github.com/facebook/react/compare/a96a0f3903ea0a9d45ff7c30a3fd9efe830c4628...aad7c664ffbde52e5d8004b542d83d6d4b7a32a0) ### [`v19.2.0-canary-a96a0f39-20250815`](https://redirect.github.com/facebook/react/compare/a7a116577daf3b135c226ed9db8a8c2f9166c023...a96a0f3903ea0a9d45ff7c30a3fd9efe830c4628) [Compare Source](https://redirect.github.com/facebook/react/compare/a7a116577daf3b135c226ed9db8a8c2f9166c023...a96a0f3903ea0a9d45ff7c30a3fd9efe830c4628) ### [`v19.2.0-canary-a7a11657-20250708`](https://redirect.github.com/facebook/react/compare/a00ca6f6b51e46a0ccec54a2231bfe7a1ed9ae1d...a7a116577daf3b135c226ed9db8a8c2f9166c023) [Compare Source](https://redirect.github.com/facebook/react/compare/a00ca6f6b51e46a0ccec54a2231bfe7a1ed9ae1d...a7a116577daf3b135c226ed9db8a8c2f9166c023) ### [`v19.2.0-canary-a00ca6f6-20250611`](https://redirect.github.com/facebook/react/compare/9be531cd37f5558c72f7de360eb921b0074e8544...a00ca6f6b51e46a0ccec54a2231bfe7a1ed9ae1d) [Compare Source](https://redirect.github.com/facebook/react/compare/9be531cd37f5558c72f7de360eb921b0074e8544...a00ca6f6b51e46a0ccec54a2231bfe7a1ed9ae1d) ### [`v19.2.0-canary-9be531cd-20250729`](https://redirect.github.com/facebook/react/compare/99efc627a5a8cb56f50cfffee544c86c49572b6f...9be531cd37f5558c72f7de360eb921b0074e8544) [Compare Source](https://redirect.github.com/facebook/react/compare/99efc627a5a8cb56f50cfffee544c86c49572b6f...9be531cd37f5558c72f7de360eb921b0074e8544) ### [`v19.2.0-canary-99efc627-20250523`](https://redirect.github.com/facebook/react/compare/97cdd5d3c33eda77be4f96a43f72d6916d3badbb...99efc627a5a8cb56f50cfffee544c86c49572b6f) [Compare Source](https://redirect.github.com/facebook/react/compare/97cdd5d3c33eda77be4f96a43f72d6916d3badbb...99efc627a5a8cb56f50cfffee544c86c49572b6f) ### [`v19.2.0-canary-97cdd5d3-20250710`](https://redirect.github.com/facebook/react/compare/9784cb379e249a5495cde5ba3037521207144e91...97cdd5d3c33eda77be4f96a43f72d6916d3badbb) [Compare Source](https://redirect.github.com/facebook/react/compare/9784cb379e249a5495cde5ba3037521207144e91...97cdd5d3c33eda77be4f96a43f72d6916d3badbb) ### [`v19.2.0-canary-9784cb37-20250730`](https://redirect.github.com/facebook/react/compare/96c61b7f1f145b9fe5103051b636959cdeb20cc8...9784cb379e249a5495cde5ba3037521207144e91) [Compare Source](https://redirect.github.com/facebook/react/compare/96c61b7f1f145b9fe5103051b636959cdeb20cc8...9784cb379e249a5495cde5ba3037521207144e91) ### [`v19.2.0-canary-96c61b7f-20250709`](https://redirect.github.com/facebook/react/compare/93d7aa69b29c20529c40cf64b0afdb5d51c9ddd1...96c61b7f1f145b9fe5103051b636959cdeb20cc8) [Compare Source](https://redirect.github.com/facebook/react/compare/93d7aa69b29c20529c40cf64b0afdb5d51c9ddd1...96c61b7f1f145b9fe5103051b636959cdeb20cc8) ### [`v19.2.0-canary-93d7aa69-20250912`](https://redirect.github.com/facebook/react/compare/914319ae595010cd5d3f0e277c77eb86da18e4f0...93d7aa69b29c20529c40cf64b0afdb5d51c9ddd1) [Compare Source](https://redirect.github.com/facebook/react/compare/914319ae595010cd5d3f0e277c77eb86da18e4f0...93d7aa69b29c20529c40cf64b0afdb5d51c9ddd1) ### [`v19.2.0-canary-914319ae-20250423`](https://redirect.github.com/facebook/react/compare/8e60cb7ed55a3dce35bd809b4cf1ad803c59abfd...914319ae595010cd5d3f0e277c77eb86da18e4f0) [Compare Source](https://redirect.github.com/facebook/react/compare/8e60cb7ed55a3dce35bd809b4cf1ad803c59abfd...914319ae595010cd5d3f0e277c77eb86da18e4f0) ### [`v19.2.0-canary-8e60cb7e-20250902`](https://redirect.github.com/facebook/react/compare/8d7b5e490320732f40d9c3aa4590b5b0ae5116f5...8e60cb7ed55a3dce35bd809b4cf1ad803c59abfd) [Compare Source](https://redirect.github.com/facebook/react/compare/8d7b5e490320732f40d9c3aa4590b5b0ae5116f5...8e60cb7ed55a3dce35bd809b4cf1ad803c59abfd) ### [`v19.2.0-canary-8d7b5e49-20250827`](https://redirect.github.com/facebook/react/compare/8ce15b0f56a066ece465963ca1370e46113bb868...8d7b5e490320732f40d9c3aa4590b5b0ae5116f5) [Compare Source](https://redirect.github.com/facebook/react/compare/8ce15b0f56a066ece465963ca1370e46113bb868...8d7b5e490320732f40d9c3aa4590b5b0ae5116f5) ### [`v19.2.0-canary-8ce15b0f-20250522`](https://redirect.github.com/facebook/react/compare/8a8e9a7edf16fabc1335c9910bddfef66737ee4e...8ce15b0f56a066ece465963ca1370e46113bb868) [Compare Source](https://redirect.github.com/facebook/react/compare/8a8e9a7edf16fabc1335c9910bddfef66737ee4e...8ce15b0f56a066ece465963ca1370e46113bb868) ### [`v19.2.0-canary-8a8e9a7e-20250912`](https://redirect.github.com/facebook/react/compare/89a803fcec363df9108f2908735e5693280a78b5...8a8e9a7edf16fabc1335c9910bddfef66737ee4e) [Compare Source](https://redirect.github.com/facebook/react/compare/89a803fcec363df9108f2908735e5693280a78b5...8a8e9a7edf16fabc1335c9910bddfef66737ee4e) ### [`v19.2.0-canary-89a803fc-20250828`](https://redirect.github.com/facebook/react/compare/886b3d36d7994259df2c3ab1983f425a4b718615...89a803fcec363df9108f2908735e5693280a78b5) [Compare Source](https://redirect.github.com/facebook/react/compare/886b3d36d7994259df2c3ab1983f425a4b718615...89a803fcec363df9108f2908735e5693280a78b5) ### [`v19.2.0-canary-886b3d36-20250910`](https://redirect.github.com/facebook/react/compare/873f71129964350333503c039d9fa5784ea102d1...886b3d36d7994259df2c3ab1983f425a4b718615) [Compare Source](https://redirect.github.com/facebook/react/compare/873f71129964350333503c039d9fa5784ea102d1...886b3d36d7994259df2c3ab1983f425a4b718615) ### [`v19.2.0-canary-873f7112-20250821`](https://redirect.github.com/facebook/react/compare/84af9085c11411e44cc5e5aee6cf00c02a78986e...873f71129964350333503c039d9fa5784ea102d1) [Compare Source](https://redirect.github.com/facebook/react/compare/84af9085c11411e44cc5e5aee6cf00c02a78986e...873f71129964350333503c039d9fa5784ea102d1) ### [`v19.2.0-canary-84af9085-20250917`](https://redirect.github.com/facebook/react/compare/7deda941f7f77e82de0311fc3e0cf94d8a863069...84af9085c11411e44cc5e5aee6cf00c02a78986e) [Compare Source](https://redirect.github.com/facebook/react/compare/7deda941f7f77e82de0311fc3e0cf94d8a863069...84af9085c11411e44cc5e5aee6cf00c02a78986e) ### [`v19.2.0-canary-7deda941-20250804`](https://redirect.github.com/facebook/react/compare/7a2c7045aed222b1ece44a18db6326f2f10c89e3...7deda941f7f77e82de0311fc3e0cf94d8a863069) [Compare Source](https://redirect.github.com/facebook/react/compare/7a2c7045aed222b1ece44a18db6326f2f10c89e3...7deda941f7f77e82de0311fc3e0cf94d8a863069) ### [`v19.2.0-canary-7a2c7045-20250506`](https://redirect.github.com/facebook/react/compare/30f00e0eec5ed2f3367def1b852efa80ef362092...7a2c7045aed222b1ece44a18db6326f2f10c89e3) [Compare Source](https://redirect.github.com/facebook/react/compare/30f00e0eec5ed2f3367def1b852efa80ef362092...7a2c7045aed222b1ece44a18db6326f2f10c89e3) ### [`v19.2.0-canary-79d9aed7-20250620`](https://redirect.github.com/facebook/react/compare/7513996f20e34070141aa605fe282ca6986915a0...30f00e0eec5ed2f3367def1b852efa80ef362092) [Compare Source](https://redirect.github.com/facebook/react/compare/7513996f20e34070141aa605fe282ca6986915a0...30f00e0eec5ed2f3367def1b852efa80ef362092) ### [`v19.2.0-canary-7513996f-20250722`](https://redirect.github.com/facebook/react/compare/73aa744b7029556430f409ec3887a714940698ba...7513996f20e34070141aa605fe282ca6986915a0) [Compare Source](https://redirect.github.com/facebook/react/compare/73aa744b7029556430f409ec3887a714940698ba...7513996f20e34070141aa605fe282ca6986915a0) ### [`v19.2.0-canary-73aa744b-20250702`](https://redirect.github.com/facebook/react/compare/7216c0f002222cdee3075410f7432d64724640cc...73aa744b7029556430f409ec3887a714940698ba) [Compare Source](https://redirect.github.com/facebook/react/compare/7216c0f002222cdee3075410f7432d64724640cc...73aa744b7029556430f409ec3887a714940698ba) ### [`v19.2.0-canary-7216c0f0-20250630`](https://redirect.github.com/facebook/react/compare/721350964952457e0b9286867c42135df0c5e787...7216c0f002222cdee3075410f7432d64724640cc) [Compare Source](https://redirect.github.com/facebook/react/compare/721350964952457e0b9286867c42135df0c5e787...7216c0f002222cdee3075410f7432d64724640cc) ### [`v19.2.0-canary-72135096-20250421`](https://redirect.github.com/facebook/react/compare/6eda534718d09a26d58d65c0a376e05d7e2a3358...721350964952457e0b9286867c42135df0c5e787) [Compare Source](https://redirect.github.com/facebook/react/compare/6eda534718d09a26d58d65c0a376e05d7e2a3358...721350964952457e0b9286867c42135df0c5e787) ### [`v19.2.0-canary-6eda5347-20250918`](https://redirect.github.com/facebook/react/compare/6de32a5a07958d7fc2f8d0785f5873d2da73b9fa...6eda534718d09a26d58d65c0a376e05d7e2a3358) [Compare Source](https://redirect.github.com/facebook/react/compare/6de32a5a07958d7fc2f8d0785f5873d2da73b9fa...6eda534718d09a26d58d65c0a376e05d7e2a3358) ### [`v19.2.0-canary-6de32a5a-20250822`](https://redirect.github.com/facebook/react/compare/6b70072c4f21d6762d914adb42007db68f1e00a9...6de32a5a07958d7fc2f8d0785f5873d2da73b9fa) [Compare Source](https://redirect.github.com/facebook/react/compare/6b70072c4f21d6762d914adb42007db68f1e00a9...6de32a5a07958d7fc2f8d0785f5873d2da73b9fa) ### [`v19.2.0-canary-6b70072c-20250909`](https://redirect.github.com/facebook/react/compare/6a7650c75c1bc110517bd9b3eefdc66eadbb9cbf...6b70072c4f21d6762d914adb42007db68f1e00a9) [Compare Source](https://redirect.github.com/facebook/react/compare/6a7650c75c1bc110517bd9b3eefdc66eadbb9cbf...6b70072c4f21d6762d914adb42007db68f1e00a9) ### [`v19.2.0-canary-6a7650c7-20250405`](https://redirect.github.com/facebook/react/compare/67a44bcd1b09ab809cf503b39c2568212e13e1a5...6a7650c75c1bc110517bd9b3eefdc66eadbb9cbf) [Compare Source](https://redirect.github.com/facebook/react/compare/67a44bcd1b09ab809cf503b39c2568212e13e1a5...6a7650c75c1bc110517bd9b3eefdc66eadbb9cbf) ### [`v19.2.0-canary-67a44bcd-20250915`](https://redirect.github.com/facebook/react/compare/66f09bd0540d0a094b80c94d013df885903c97da...67a44bcd1b09ab809cf503b39c2568212e13e1a5) [Compare Source](https://redirect.github.com/facebook/react/compare/66f09bd0540d0a094b80c94d013df885903c97da...67a44bcd1b09ab809cf503b39c2568212e13e1a5) ### [`v19.2.0-canary-66f09bd0-20250806`](https://redirect.github.com/facebook/react/compare/65c4decb565b4eb1423518e76dbda7bc40a01c04...66f09bd0540d0a094b80c94d013df885903c97da) [Compare Source](https://redirect.github.com/facebook/react/compare/65c4decb565b4eb1423518e76dbda7bc40a01c04...66f09bd0540d0a094b80c94d013df885903c97da) ### [`v19.2.0-canary-65c4decb-20250630`](https://redirect.github.com/facebook/react/compare/6377903074d4b3a2de48c4da91783a5af9fc5237...65c4decb565b4eb1423518e76dbda7bc40a01c04) </details> --- ### Configuration 📅 **Schedule**: Branch creation - "every weekend" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/redwoodjs/sdk). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS45Ny4xMCIsInVwZGF0ZWRJblZlciI6IjQxLjk3LjEwIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
1 parent 8cafd5a commit d19d070

25 files changed

+1035
-513
lines changed

.github/workflows/check-starters.yml

Lines changed: 0 additions & 45 deletions
This file was deleted.

.github/workflows/playground-e2e-tests.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,15 @@ on:
66
- main
77
paths-ignore:
88
- "docs/**"
9+
- ".notes/**"
10+
- "*.md"
911
pull_request:
1012
branches:
1113
- main
1214
paths-ignore:
1315
- "docs/**"
16+
- ".notes/**"
17+
- "*.md"
1418
workflow_dispatch:
1519
inputs:
1620
os:

.github/workflows/smoke-test-starters.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,15 @@ on:
66
- main
77
paths-ignore:
88
- "docs/**"
9+
- ".notes/**"
10+
- "*.md"
911
pull_request:
1012
branches:
1113
- main
1214
paths-ignore:
1315
- "docs/**"
16+
- ".notes/**"
17+
- "*.md"
1418
workflow_dispatch:
1519
inputs:
1620
starter:

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,4 +187,5 @@ smoke-test-artifacts
187187
# But we also don't want to commit the cursor rules to this repo
188188
starters/standard/.cursor/rules/*
189189
starters/standard/.pnpm-store
190+
190191
.cursor/rules/user

.notes/justin/worklogs/2025-09-21-fix-esbuild-scanner-error.md

Lines changed: 290 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
Running the type check separately was problematic because it would run before the necessary types had been generated. Relying on the `generate` script's built-in type check ensures that types are checked at the correct point in the process, resolving the CI failures.
2+
3+
## PR Description
4+
5+
### Manual Changes and Fixes
6+
7+
This PR includes manual changes to address issues that arose from the automated dependency updates.
8+
9+
#### Problem
10+
11+
The dependency updates, primarily to Vite and its internal esbuild version, introduced several breaking changes and revealed weaknesses in the CI process:
12+
13+
1. **Build Failures**: An esbuild version bump caused a breaking change in its API, leading to build failures in the directive scanner.
14+
2. **CI Blind Spots**: The existing CI (`check-starters.yml`) used workspace linking, which masked type inconsistencies and did not accurately simulate a real user's package installation. This allowed type errors related to Vite's updated plugin API to go undetected.
15+
3. **Brittle Test Environments**: Attempts to improve CI by running `npm run check` in isolated environments failed. This was due to broken `pnpm` symlinks being copied into test directories, which prevented clean dependency installation.
16+
4. **Code Duplication**: The setup logic for smoke tests and the E2E tests was heavily duplicated, making maintenance difficult.
17+
18+
#### Solution
19+
20+
A series of fixes and refactorings were implemented to resolve these issues and make the testing process more robust:
21+
22+
1. **Build Fixes**: The esbuild scanner was updated to be compatible with the new API. A TypeScript error in an E2E test file related to `null` values was also corrected.
23+
2. **Tarball-Based Testing**: The CI process was refactored to use tarball-based installations for E2E and smoke tests. This more accurately reflects a real user environment and successfully caught the underlying type errors.
24+
3. **Test Environment Refactoring**: The project-copying and environment setup logic for both smoke and E2E tests were consolidated into a single, shared, cross-platform function. This new function correctly excludes `node_modules` to ensure clean dependency installs, resolving the broken symlink issue.
25+
4. **Simplified Type Checking**: Redundant `npm run check` commands were removed from the test harnesses. The type check that runs as part of the `npm run generate` command is now the single source of truth, ensuring types are checked only after they have been correctly generated.
26+
27+
These changes ensure the codebase is compatible with the updated dependencies and strengthen the CI process to prevent similar issues in the future.

playground/hello-world/package.json

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,20 @@
2323
},
2424
"dependencies": {
2525
"rwsdk": "workspace:*",
26-
"react": "19.2.0-canary-3fb190f7-20250908",
27-
"react-dom": "19.2.0-canary-3fb190f7-20250908",
28-
"react-server-dom-webpack": "19.2.0-canary-3fb190f7-20250908"
26+
"react": "19.2.0-canary-d415fd3e-20250919",
27+
"react-dom": "19.2.0-canary-d415fd3e-20250919",
28+
"react-server-dom-webpack": "19.2.0-canary-d415fd3e-20250919"
2929
},
3030
"devDependencies": {
31-
"@cloudflare/vite-plugin": "1.12.4",
32-
"@cloudflare/workers-types": "4.20250913.0",
31+
"@cloudflare/vite-plugin": "1.13.3",
32+
"@cloudflare/workers-types": "4.20250921.0",
3333
"@types/node": "22.14.0",
3434
"@types/react": "19.1.2",
3535
"@types/react-dom": "19.1.2",
3636
"typescript": "5.8.3",
37-
"vite": "7.1.5",
38-
"wrangler": "4.35.0"
37+
"vite": "7.1.6",
38+
"vitest": "^3.1.1",
39+
"wrangler": "4.38.0"
3940
},
4041
"pnpm": {
4142
"onlyBuiltDependencies": [

playground/hello-world/worker-configuration.d.ts

Lines changed: 104 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
/* eslint-disable */
2-
// Generated by Wrangler by running `wrangler types` (hash: 187132f48ddf0f604882ba8213fe386f)
3-
// Runtime types generated with workerd@1.20250906.0 2025-08-21 nodejs_compat
2+
// Generated by Wrangler by running `wrangler types` (hash: 6b6db21c80ba9cfeb812f12bd8b8b3e4)
3+
// Runtime types generated with workerd@1.20250917.0 2025-08-21 nodejs_compat
44
declare namespace Cloudflare {
5+
interface GlobalProps {
6+
mainModule: typeof import("./src/worker");
7+
}
58
interface Env {
69
ASSETS: Fetcher;
710
}
@@ -340,10 +343,10 @@ declare const origin: string;
340343
declare const navigator: Navigator;
341344
interface TestController {
342345
}
343-
interface ExecutionContext {
346+
interface ExecutionContext<Props = unknown> {
344347
waitUntil(promise: Promise<any>): void;
345348
passThroughOnException(): void;
346-
props: any;
349+
readonly props: Props;
347350
}
348351
type ExportedHandlerFetchHandler<Env = unknown, CfHostMetadata = unknown> = (request: Request<CfHostMetadata, IncomingRequestCfProperties<CfHostMetadata>>, env: Env, ctx: ExecutionContext) => Response | Promise<Response>;
349352
type ExportedHandlerTailHandler<Env = unknown> = (events: TraceItem[], env: Env, ctx: ExecutionContext) => void | Promise<void>;
@@ -430,9 +433,11 @@ type DurableObjectLocationHint = "wnam" | "enam" | "sam" | "weur" | "eeur" | "ap
430433
interface DurableObjectNamespaceGetDurableObjectOptions {
431434
locationHint?: DurableObjectLocationHint;
432435
}
433-
interface DurableObjectState {
436+
interface DurableObjectClass<_T extends Rpc.DurableObjectBranded | undefined = undefined> {
437+
}
438+
interface DurableObjectState<Props = unknown> {
434439
waitUntil(promise: Promise<any>): void;
435-
props: any;
440+
readonly props: Props;
436441
readonly id: DurableObjectId;
437442
readonly storage: DurableObjectStorage;
438443
container?: Container;
@@ -2569,6 +2574,17 @@ declare class MessageChannel {
25692574
interface MessagePortPostMessageOptions {
25702575
transfer?: any[];
25712576
}
2577+
type LoopbackForExport<T extends (new (...args: any[]) => Rpc.EntrypointBranded) | ExportedHandler<any, any, any> | undefined = undefined> = T extends new (...args: any[]) => Rpc.WorkerEntrypointBranded ? LoopbackServiceStub<InstanceType<T>> : T extends new (...args: any[]) => Rpc.DurableObjectBranded ? LoopbackDurableObjectClass<InstanceType<T>> : T extends ExportedHandler<any, any, any> ? LoopbackServiceStub<undefined> : undefined;
2578+
type LoopbackServiceStub<T extends Rpc.WorkerEntrypointBranded | undefined = undefined> = Fetcher<T> & (T extends CloudflareWorkersModule.WorkerEntrypoint<any, infer Props> ? (opts: {
2579+
props?: Props;
2580+
}) => Fetcher<T> : (opts: {
2581+
props?: any;
2582+
}) => Fetcher<T>);
2583+
type LoopbackDurableObjectClass<T extends Rpc.DurableObjectBranded | undefined = undefined> = DurableObjectClass<T> & (T extends CloudflareWorkersModule.DurableObject<any, infer Props> ? (opts: {
2584+
props?: Props;
2585+
}) => DurableObjectClass<T> : (opts: {
2586+
props?: any;
2587+
}) => DurableObjectClass<T>);
25722588
interface SyncKvStorage {
25732589
get<T = unknown>(key: string): T | undefined;
25742590
list<T = unknown>(options?: SyncKvListOptions): Iterable<[
@@ -2586,6 +2602,34 @@ interface SyncKvListOptions {
25862602
reverse?: boolean;
25872603
limit?: number;
25882604
}
2605+
interface WorkerStub {
2606+
getEntrypoint<T extends Rpc.WorkerEntrypointBranded | undefined>(name?: string, options?: WorkerStubEntrypointOptions): Fetcher<T>;
2607+
}
2608+
interface WorkerStubEntrypointOptions {
2609+
props?: any;
2610+
}
2611+
interface WorkerLoader {
2612+
get(name: string, getCode: () => WorkerLoaderWorkerCode | Promise<WorkerLoaderWorkerCode>): WorkerStub;
2613+
}
2614+
interface WorkerLoaderModule {
2615+
js?: string;
2616+
cjs?: string;
2617+
text?: string;
2618+
data?: ArrayBuffer;
2619+
json?: any;
2620+
py?: string;
2621+
}
2622+
interface WorkerLoaderWorkerCode {
2623+
compatibilityDate: string;
2624+
compatibilityFlags?: string[];
2625+
allowExperimental?: boolean;
2626+
mainModule: string;
2627+
modules: Record<string, WorkerLoaderModule | string>;
2628+
env?: any;
2629+
globalOutbound?: (Fetcher | null);
2630+
tails?: Fetcher[];
2631+
streamingTails?: Fetcher[];
2632+
}
25892633
type AiImageClassificationInput = {
25902634
image: number[];
25912635
};
@@ -6305,6 +6349,11 @@ interface D1Meta {
63056349
*/
63066350
sql_duration_ms: number;
63076351
};
6352+
/**
6353+
* Number of total attempts to execute the query, due to automatic retries.
6354+
* Note: All other fields in the response like `timings` only apply to the last attempt.
6355+
*/
6356+
total_attempts?: number;
63086357
}
63096358
interface D1Response {
63106359
success: true;
@@ -6322,11 +6371,11 @@ type D1SessionConstraint =
63226371
// Indicates that the first query should go to the primary, and the rest queries
63236372
// using the same D1DatabaseSession will go to any replica that is consistent with
63246373
// the bookmark maintained by the session (returned by the first query).
6325-
"first-primary"
6374+
'first-primary'
63266375
// Indicates that the first query can go anywhere (primary or replica), and the rest queries
63276376
// using the same D1DatabaseSession will go to any replica that is consistent with
63286377
// the bookmark maintained by the session (returned by the first query).
6329-
| "first-unconstrained";
6378+
| 'first-unconstrained';
63306379
type D1SessionBookmark = string;
63316380
declare abstract class D1Database {
63326381
prepare(query: string): D1PreparedStatement;
@@ -6951,8 +7000,47 @@ declare namespace Rpc {
69517000
};
69527001
}
69537002
declare namespace Cloudflare {
7003+
// Type of `env`.
7004+
//
7005+
// The specific project can extend `Env` by redeclaring it in project-specific files. Typescript
7006+
// will merge all declarations.
7007+
//
7008+
// You can use `wrangler types` to generate the `Env` type automatically.
69547009
interface Env {
69557010
}
7011+
// Project-specific parameters used to inform types.
7012+
//
7013+
// This interface is, again, intended to be declared in project-specific files, and then that
7014+
// declaration will be merged with this one.
7015+
//
7016+
// A project should have a declaration like this:
7017+
//
7018+
// interface GlobalProps {
7019+
// // Declares the main module's exports. Used to populate Cloudflare.Exports aka the type
7020+
// // of `ctx.exports`.
7021+
// mainModule: typeof import("my-main-module");
7022+
//
7023+
// // Declares which of the main module's exports are configured with durable storage, and
7024+
// // thus should behave as Durable Object namsepace bindings.
7025+
// durableNamespaces: "MyDurableObject" | "AnotherDurableObject";
7026+
// }
7027+
//
7028+
// You can use `wrangler types` to generate `GlobalProps` automatically.
7029+
interface GlobalProps {
7030+
}
7031+
// Evaluates to the type of a property in GlobalProps, defaulting to `Default` if it is not
7032+
// present.
7033+
type GlobalProp<K extends string, Default> = K extends keyof GlobalProps ? GlobalProps[K] : Default;
7034+
// The type of the program's main module exports, if known. Requires `GlobalProps` to declare the
7035+
// `mainModule` property.
7036+
type MainModule = GlobalProp<"mainModule", {}>;
7037+
// The type of ctx.exports, which contains loopback bindings for all top-level exports.
7038+
type Exports = {
7039+
[K in keyof MainModule]: LoopbackForExport<MainModule[K]>
7040+
// If the export is listed in `durableNamespaces`, then it is also a
7041+
// DurableObjectNamespace.
7042+
& (K extends GlobalProp<"durableNamespaces", never> ? MainModule[K] extends new (...args: any[]) => infer DoInstance ? DoInstance extends Rpc.DurableObjectBranded ? DurableObjectNamespace<DoInstance> : DurableObjectNamespace<undefined> : DurableObjectNamespace<undefined> : {});
7043+
};
69567044
}
69577045
declare module 'cloudflare:node' {
69587046
export interface DefaultHandler {
@@ -6967,7 +7055,7 @@ declare module 'cloudflare:node' {
69677055
port: number;
69687056
}, handlers?: Omit<DefaultHandler, 'fetch'>): DefaultHandler;
69697057
}
6970-
declare module 'cloudflare:workers' {
7058+
declare namespace CloudflareWorkersModule {
69717059
export type RpcStub<T extends Rpc.Stubable> = Rpc.Stub<T>;
69727060
export const RpcStub: {
69737061
new <T extends Rpc.Stubable>(value: T): Rpc.Stub<T>;
@@ -6976,9 +7064,9 @@ declare module 'cloudflare:workers' {
69767064
[Rpc.__RPC_TARGET_BRAND]: never;
69777065
}
69787066
// `protected` fields don't appear in `keyof`s, so can't be accessed over RPC
6979-
export abstract class WorkerEntrypoint<Env = unknown> implements Rpc.WorkerEntrypointBranded {
7067+
export abstract class WorkerEntrypoint<Env = Cloudflare.Env, Props = {}> implements Rpc.WorkerEntrypointBranded {
69807068
[Rpc.__WORKER_ENTRYPOINT_BRAND]: never;
6981-
protected ctx: ExecutionContext;
7069+
protected ctx: ExecutionContext<Props>;
69827070
protected env: Env;
69837071
constructor(ctx: ExecutionContext, env: Env);
69847072
fetch?(request: Request): Response | Promise<Response>;
@@ -6988,9 +7076,9 @@ declare module 'cloudflare:workers' {
69887076
queue?(batch: MessageBatch<unknown>): void | Promise<void>;
69897077
test?(controller: TestController): void | Promise<void>;
69907078
}
6991-
export abstract class DurableObject<Env = unknown> implements Rpc.DurableObjectBranded {
7079+
export abstract class DurableObject<Env = Cloudflare.Env, Props = {}> implements Rpc.DurableObjectBranded {
69927080
[Rpc.__DURABLE_OBJECT_BRAND]: never;
6993-
protected ctx: DurableObjectState;
7081+
protected ctx: DurableObjectState<Props>;
69947082
protected env: Env;
69957083
constructor(ctx: DurableObjectState, env: Env);
69967084
fetch?(request: Request): Response | Promise<Response>;
@@ -7043,6 +7131,9 @@ declare module 'cloudflare:workers' {
70437131
export function waitUntil(promise: Promise<unknown>): void;
70447132
export const env: Cloudflare.Env;
70457133
}
7134+
declare module 'cloudflare:workers' {
7135+
export = CloudflareWorkersModule;
7136+
}
70467137
interface SecretsStoreSecret {
70477138
/**
70487139
* Get a secret from the Secrets Store, returning a string of the secret value

playground/render-apis/package.json

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,20 @@
2323
},
2424
"dependencies": {
2525
"rwsdk": "workspace:*",
26-
"react": "19.2.0-canary-3fb190f7-20250908",
27-
"react-dom": "19.2.0-canary-3fb190f7-20250908",
28-
"react-server-dom-webpack": "19.2.0-canary-3fb190f7-20250908"
26+
"react": "19.2.0-canary-d415fd3e-20250919",
27+
"react-dom": "19.2.0-canary-d415fd3e-20250919",
28+
"react-server-dom-webpack": "19.2.0-canary-d415fd3e-20250919"
2929
},
3030
"devDependencies": {
31-
"@cloudflare/vite-plugin": "1.12.4",
32-
"@cloudflare/workers-types": "4.20250913.0",
31+
"@cloudflare/vite-plugin": "1.13.3",
32+
"@cloudflare/workers-types": "4.20250921.0",
3333
"@types/node": "22.14.0",
3434
"@types/react": "19.1.2",
3535
"@types/react-dom": "19.1.2",
3636
"typescript": "5.8.3",
37-
"vite": "7.1.5",
38-
"wrangler": "4.35.0"
37+
"vite": "7.1.6",
38+
"vitest": "^3.1.1",
39+
"wrangler": "4.38.0"
3940
},
4041
"pnpm": {
4142
"onlyBuiltDependencies": [

playground/useid-test/__tests__/e2e.test.mts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,9 @@ describe("useId Playground", () => {
177177
page.evaluate((element: Element) => element.textContent, el),
178178
),
179179
);
180-
return statuses.every((status: string) => status.includes("Hydrated"));
180+
return statuses.every(
181+
(status: string | null) => status?.includes("Hydrated") ?? false,
182+
);
181183
});
182184

183185
// Get IDs after hydration

0 commit comments

Comments
 (0)