Skip to content

chore(remix): Update Remix monorepo to ^2.16.5 #5733

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 28, 2025
Merged

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Apr 27, 2025

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@remix-run/react (source) ^2.0.0 -> ^2.16.5 age adoption passing confidence
@remix-run/server-runtime (source) ^2.0.0 -> ^2.16.5 age adoption passing confidence

Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.


Release Notes

remix-run/remix (@​remix-run/react)

v2.16.5

Compare Source

Patch Changes

v2.16.4

Compare Source

Patch Changes

v2.16.3

Compare Source

Patch Changes

v2.16.2

Compare Source

Patch Changes
  • Fix shouldRevalidate behavior for clientLoader-only routes in ssr:true apps (#​10527)
  • Updated dependencies:

v2.16.1

Compare Source

Patch Changes
  • Fix Vite import analysis of @remix-run/react failing when the package is not marked as external (#​10528)
  • Updated dependencies:

v2.16.0

Compare Source

Patch Changes
  • Don't apply Single Fetch revalidation de-optimization when in SPA mode since there is no server HTTP request (#​10479)

  • When using Lazy Route Discovery (future.v3_lazyRouteDiscovery), Remix will now detect manifest version mismatches after a new deploy and trigger a document reload to sync up any active client sessions with the newly deployed version (#​10498)

    • On navigations to undiscovered routes, this mismatch will trigger a document reload of the destination path
    • On fetcher calls to undiscovered routes, this mismatch will trigger a document reload of the current path
    • While performing Eager Route Discovery on rendered <Link> components, mismatches will result in a no-op
  • Updated dependencies:

v2.15.3

Compare Source

Patch Changes
  • Properly handle interrupted manifest requests in lazy route discovery (#​10447)
  • Properly handle status codes that cannot have a body in single fetch responses (204, etc.) (#​10410)
  • Updated dependencies:

v2.15.2

Compare Source

Patch Changes
  • Throw unwrapped single fetch redirect to align with pre-single fetch behavior (#​10317)
  • Updated dependencies:

v2.15.1

Compare Source

Patch Changes

v2.15.0

Compare Source

Patch Changes

v2.14.0

Compare Source

Patch Changes

v2.13.1

Compare Source

Patch Changes

v2.13.0

Compare Source

Minor Changes
  • Stabilize React Router APIs in Remix (#​9980)
    • Adopt stabilized React Router APIs internally
      • Single Fetch: unstable_dataStrategy -> dataStrategy
      • Lazy Route Discovery: unstable_patchRoutesOnNavigation -> patchRoutesOnNavigation
    • Stabilize public-facing APIs
      • Single Fetch: unstable_data() -> data()
      • unstable_viewTransition -> viewTransition (Link, Form, navigate, submit)
      • unstable_flushSync> -> <Link viewTransition> (Link, Form, navigate, submit, useFetcher)
  • Stabilize future flags (#​10072)
    • future.unstable_singleFetch -> future.v3_singleFetch
    • future.unstable_lazyRouteDiscovery -> future.v3_lazyRouteDiscovery
Patch Changes
  • Fix bug with clientLoader.hydrate in a layout route when hydrating with bubbled errors (#​10063)
  • Updated dependencies:

v2.12.1

Compare Source

Patch Changes

v2.12.0

Compare Source

Patch Changes
  • Lazy Route Discovery: Sort /__manifest query parameters for better caching (#​9888)

  • Single Fetch: fix revalidation behavior bugs (#​9938)

    • With Single Fetch, existing routes revalidate by default
    • This means requests do not need special query params for granular route revalidations out of the box - i.e., GET /a/b/c.data
    • There are two conditions that will trigger granular revalidation:
      • If a route opts out of revalidation via shouldRevalidate, it will be excluded from the single fetch call
      • If a route defines a clientLoader then it will be excluded from the single fetch call and if you call serverLoader() from your clientLoader, that will make a separarte HTTP call for just that route loader - i.e., GET /a/b/c.data?_routes=routes/a for a clientLoader in routes/a.tsx
    • When one or more routes are excluded from the single fetch call, the remaining routes that have loaders are included as query params:
      • For example, if A was excluded, and the root route and routes/b had a loader but routes/c did not, the single fetch request would be GET /a/b/c.data?_routes=root,routes/a
  • Remove hydration URL check that was originally added for React 17 hydration issues and we no longer support React 17 (#​9890)

    • Reverts the logic originally added in Remix v1.18.0 via #​6409
    • This was added to resolve an issue that could arise when doing quick back/forward history navigations while JS was loading which would cause a mismatch between the server matches and client matches: #​1757
    • This specific hydration issue would then cause this React v17 only looping issue: #​1678
    • The URL comparison that we added in 1.18.0 turned out to be subject to false positives of it's own which could also put the user in looping scenarios
    • Remix v2 upgraded it's minimal React version to v18 which eliminated the v17 hydration error loop
    • React v18 handles this hydration error like any other error and does not result in a loop
    • So we can remove our check and thus avoid the false-positive scenarios in which it may also trigger a loop
  • Single Fetch: Improved typesafety (#​9893)

    If you were already using previously released unstable single-fetch types:

    • Remove "@&#8203;remix-run/react/future/single-fetch.d.ts" override from tsconfig.json > compilerOptions > types
    • Remove defineLoader, defineAction, defineClientLoader, defineClientAction helpers from your route modules
    • Replace UIMatch_SingleFetch type helper with UIMatch
    • Replace MetaArgs_SingleFetch type helper with MetaArgs

    Then you are ready for the new typesafety setup:

    // vite.config.ts
    
    declare module "@&#8203;remix-run/server-runtime" {
      interface Future {
        unstable_singleFetch: true; // 👈 enable _types_ for single-fetch
      }
    }
    
    export default defineConfig({
      plugins: [
        remix({
          future: {
            unstable_singleFetch: true, // 👈 enable single-fetch
          },
        }),
      ],
    });

    For more information, see Guides > Single Fetch in our docs.

  • Clarify wording in default HydrateFallback console warning (#​9899)

  • Updated dependencies:

v2.11.2

Compare Source

Patch Changes
  • Fog of War: Simplify implementation now that React Router handles slug/splat edge cases and tracks previously discovered routes (see remix-run/react-router#11883) (#​9860)
    • This changes the return signature of the internal __manifest endpoint since we no longer need the notFoundPaths field
  • Fog of War: Update to use renamed unstable_patchRoutesOnNavigation function in RR (see remix-run/react-router#11888) (#​9860)
  • Single Fetch: Update turbo-stream to v2.3.0 (#​9856)
    • Stabilize object key order for serialized payloads
    • Remove memory limitations payloads sizes
  • Updated dependencies:

v2.11.1

Compare Source

Patch Changes

v2.11.0

Compare Source

Minor Changes
  • Single Fetch: Add a new unstable_data() API as a replacement for json/defer when custom status/headers are needed (#​9769)

  • Add a new replace(url, init?) alternative to redirect(url, init?) that performs a history.replaceState instead of a history.pushState on client-side navigation redirects (#​9764)

  • Rename future.unstable_fogOfWar to future.unstable_lazyRouteDiscovery for clarity (#​9763)

  • Single Fetch: Remove responseStub in favor of headers (#​9769)

    • Background

      • The original Single Fetch approach was based on an assumption that an eventual middleware implementation would require something like ResponseStub so users could mutate status/headers in middleware before/after handlers as well as during handlers
      • We wanted to align how headers got merged between document and data requests
      • So we made document requests also use ResponseStub and removed the usage of headers in Single Fetch
      • The realization/alignment between Michael and Ryan on the recent roadmap planning made us realize that the original assumption was incorrect
      • middleware won't need a stub - users can just mutate the Response they get from await next() directly
      • With that gone, and still wanting to align how headers get merged, it makes more sense to stick with the current headers API and apply that to Single Fetch and avoid introducing a totally new thing in RepsonseStub (that always felt a bit awkward to work with anyway)
    • With this change:

      • You are encouraged to stop returning Response instances in favor of returning raw data from loaders and actions:
        • ~~return json({ data: whatever });~~
        • return { data: whatever };
      • In most cases, you can remove your json() and defer() calls in favor of returning raw data if they weren't setting custom status/headers
        • We will be removing both json and defer in the next major version, but both should still work in Single Fetch in v2 to allow for incremental adoption of the new behavior
      • If you need custom status/headers:
        • We've added a new unstable_data({...}, responseInit) utility that will let you send back status/headers alongside your raw data without having to encode it into a Response
      • The headers() function will let you control header merging for both document and data requests
Patch Changes
  • Single Fetch: Ensure calls don't include any trailing slash from the pathname (i.e., /path/.data) (#​9792)
  • Single Fetch: Add undefined to the useRouteLoaderData type override (#​9796)
  • Change initial hydration route mismatch from a URL check to a matches check to be resistant to URL inconsistencies (#​9695)
  • Updated dependencies:

v2.10.3

Compare Source

Patch Changes
  • Log any errors encountered loading a route module prior to reloading the page (#​8932)
  • Single Fetch (unstable): Proxy request.signal through dataStrategy for loader calls to fix cancellation (#​9738)
  • Single Fetch (unstable): Adopt React Router's stabilized future.v7_skipActionErrorRevalidation under the hood (#​9706)
    • This also stabilizes the shouldRevalidate parameter from unstable_actionStatus to actionStatus
  • Updated dependencies:

v2.10.2

Compare Source

Patch Changes

v2.10.1

Compare Source

Patch Changes
  • Fog of War (unstable): Don't discover links/forms with reloadDocument (#​9686)
  • Fog of War (unstable): Support route discovery from <Form> components (#​9665)
  • Updated dependencies:

v2.10.0

Compare Source

Minor Changes
Patch Changes
  • Don't prefetch server loader data when clientLoader exists (#​9580)
  • Avoid hydration loops when Layout ErrorBoundary renders also throw (#​9566)
  • Fix a bug where hydration wouldn't work right when using child routes and hydrate fallbacks with a basename (#​9584)
  • Update to [email protected] for single fetch (#​9562)
  • Updated dependencies:

v2.9.2

Compare Source

Patch Changes
  • Add undefined to useActionData type override (#​9322)
  • Allow a nonce to be set on single fetch stream transfer inline scripts (#​9364)
  • Typesafety for single-fetch: defineLoader, defineClientLoader, defineAction, defineClientAction (#​9372, #​9404)
  • Updated dependencies:

v2.9.1

Compare Source

Patch Changes

v2.9.0

Compare Source

Minor Changes
  • New future.unstable_singleFetch flag (#​8773)

    • Naked objects returned from loaders/actions are no longer automatically converted to JSON responses. They'll be streamed as-is via turbo-stream so Date's will become Date through useLoaderData()
    • You can return naked objects with Promise's without needing to use defer() - including nested Promise's
      • If you need to return a custom status code or custom response headers, you can still use the defer utility
    • <RemixServer abortDelay> is no longer used. Instead, you should export const streamTimeout from entry.server.tsx and the remix server runtime will use that as the delay to abort the streamed response
      • If you export your own streamTimeout, you should decouple that from aborting the react renderToPipeableStream. You should always ensure that react is aborted afer the stream is aborted so that abort rejections can be flushed down
    • Actions no longer automatically revalidate on 4xx/5xx responses (via RR future.unstable_skipActionErrorRevalidation flag) - you can return a 2xx to opt-into revalidation or use shouldRevalidate
  • Opt-in types for single-fetch (#​9272)

    • To opt-in to type inference for single-fetch, add ./node_modules/@&#8203;remix-run/react/future/single-fetch.d.ts to include in your tsconfig.json
Patch Changes

v2.8.1

Compare Source

Patch Changes
  • Strengthen the internal LayoutComponent type to accept limited children (#​8910)
  • Updated dependencies:

v2.8.0

Compare Source

Patch Changes
  • Fix the default root ErrorBoundary component so it leverages the user-provided Layout component (#​8859)
  • Fix the default root HydrateFallback component so it leverages any user-provided Layout component (#​8892)
  • Ensure @remix-run/react re-exports everything from react-router-dom for SPA mode (#​8929)
  • Updated dependencies:

v2.7.2

Compare Source

Patch Changes

v2.7.1

Compare Source

Patch Changes

v2.7.0

Compare Source

Minor Changes
  • Allow an optional Layout export from the root route (#​8709)
  • Vite: Add a new basename option to the Vite plugin, allowing users to set the internal React Router basename in order to to serve their applications underneath a subpath (#​8145)
Patch Changes

v2.6.0

Compare Source

Patch Changes

v2.5.1

Compare Source

Patch Changes
  • Only use active matches in <Meta>/<Links> in SPA mode (#​8538)
  • Remove leftover unstable_ prefix from Blocker/BlockerFunction types (#​8530)
  • Updated dependencies:

v2.5.0

Compare Source

Minor Changes
  • Add unstable support for "SPA Mode" (#​8457)

    You can opt into SPA Mode by setting unstable_ssr: false in your Remix Vite plugin config:

    // vite.config.ts
    import { unstable_vitePlugin as remix } from "@&#8203;remix-run/dev";
    import { defineConfig } from "vite";
    
    export default defineConfig({
      plugins: [remix({ unstable_ssr: false })],
    });

    Development in SPA Mode is just like a normal Remix app, and still uses the Remix dev server for HMR/HDR:

    remix vite:dev

    Building in SPA Mode will generate an index.html file in your client assets directory:

    remix vite:build

    To run your SPA, you serve your client assets directory via an HTTP server:

    npx http-server build/client

    For more information, please refer to the SPA Mode docs.

Patch Changes
  • Vite: Fix type conflict with import.meta.hot from the existing Remix compiler (#​8459)
  • Updated dependencies:

v2.4.1

Compare Source

Patch Changes
  • Propagate server loader errors through serverLoader in hydrating clientLoader's (#​8304)
  • Re-export Response helpers (defer/json/redirect/redirectDocument) through @remix-run/react for use in clientLoader/clientAction (#​8351)
  • Updated dependencies:

v2.4.0

Compare Source

Minor Changes
  • Add support for clientLoader/clientAction/HydrateFallback route exports (RFC). (#​8173)

    Remix now supports loaders/actions that run on the client (in addition to, or instead of the loader/action that runs on the server). While we still recommend server loaders/actions for the majority of your data needs in a Remix app - these provide some levers you can pull for more advanced use-cases such as:

    • Leveraging a data source local to the browser (i.e., localStorage)
    • Managing a client-side cache of server data (like IndexedDB)
    • Bypassing the Remix server in a BFF setup and hitting your API directly from the browser
    • Migrating a React Router SPA to a Remix application

    By default, clientLoader will not run on hydration, and will only run on subsequent client side navigations.

    If you wish to run your client loader on hydration, you can set clientLoader.hydrate=true to force Remix to execute it on initial page load. Keep in mind that Remix will still SSR your route component so you should ensure that there is no new required data being added by your clientLoader.

    If your clientLoader needs to run on hydration and adds data you require to render the route component, you can export a HydrateFallback component that will render during SSR, and then your route component will not render until the clientLoader has executed on hydration.

    clientAction is simpler than clientLoader because it has no hydration use-cases. clientAction will only run on client-side navigations.

    For more information, please refer to the clientLoader and clientAction documentation.

  • Add a new future.v3_relativeSplatPath flag to implement a breaking bug fix to relative routing when inside a splat route. For more information, please see the React Router 6.21.0 Release Notes and the useResolvedPath docs. (#​8216)

Patch Changes

v2.3.1

Compare Source

Patch Changes

v2.3.0

Compare Source

Minor Changes
  • Remove the unstable_ prefix from the useBlocker hook as it's been in use for enough time that we are confident in the API. We do not plan to remove the prefix from unstable_usePrompt due to differences in how browsers handle window.confirm that prevent React Router from guaranteeing consistent/correct behavior. (#​7882)
Patch Changes

v2.2.0

Compare Source

Minor Changes
  • Unstable Vite support for Node-based Remix apps (#​7590)
    • remix build 👉 vite build && vite build --ssr
    • remix dev 👉 vite dev
    • Other runtimes (e.g. Deno, Cloudflare) not yet supported.
    • See "Future > Vite" in the Remix Docs for details
  • Add a new future.v3_fetcherPersist flag to change the persistence behavior of fetchers. Instead of being immediately cleaned up when unmounted in the UI, fetchers will persist until they return to an idle state (RFC) (#​7704)
Patch Changes
  • Fix warning that could be logged when using route files with no default export (#​7745)
    • It seems our compiler compiles these files to export an empty object as the default which we can then end up passing to React.createElement, triggering the console warning, but generally no UI issues
    • By properly detecting these, we can correctly pass Component: undefined off to the React Router layer
    • This is technically an potential issue in the compiler but it's an easy patch in the @remix-run/react layer and hopefully disappears in a Vite world
  • Fix critical CSS hydration errors for Vite dev (#​7812)
  • Updated dependencies:

v2.1.0

Compare Source

Minor Changes
Patch Changes
  • Avoid mutating meta object when tagName is specified (#​7594)
  • Fix FOUC on subsequent client-side navigations to route.lazy routes (#​7576)
  • Emulate types for JSON.parse(JSON.stringify(x)) in SerializeFrom (#​7605)
    • Notably, type fields that are only assignable to undefined after serialization are now omitted since JSON.stringify |> JSON.parse will omit them -- see test cases for examples
    • Also fixes type errors when upgrading to v2 from 1.19
  • Export the proper Remix useMatches wrapper to fix UIMatch typings (#​7551)
  • Updated dependencies:

v2.0.1

Compare Source

Patch Changes
  • Add second generic to UIMatch for handle field (#​7464)
  • Fix resource routes being loaded through route.lazy (#​7498)
  • Throw a semantically correct 405 ErrorResponse instead of just an Error when submitting to a route without an action (#​7423)
  • Updated dependencies:
remix-run/remix (@​remix-run/server-runtime)

v2.16.5

Compare Source

No significant changes to this package were made in this release. See the repo CHANGELOG.md for an overview of all changes in v2.16.5.

v2.16.4

Compare Source

Patch Changes

v2.16.3

Compare Source

No significant changes to this package were made in this release. See the repo CHANGELOG.md for an overview of all changes in v2.16.3.

v2.16.2

Compare Source

Patch Changes
  • Load ancestor pathless/index routes in lazy route discovery for upwards non-eager-discovery routing (#​10535)

v2.16.1

Compare Source

No significant changes to this package were made in this release. See the repo CHANGELOG.md for an overview of all changes in v2.16.1.

v2.16.0

Compare Source

Patch Changes
  • When using Lazy Route Discovery (future.v3_lazyRouteDiscovery), Remix will now detect manifest version mismatches after a new deploy and trigger a document reload to sync up any active client sessions with the newly deployed version (#​10498)

    • On navigations to undiscovered routes, this mismatch will trigger a document reload of the destination path
    • On fetcher calls to undiscovered routes, this mismatch will trigger a document reload of the current path
    • While performing Eager Route Discovery on rendered <Link> components, mismatches will result in a no-op

v2.15.3

Compare Source

Patch Changes
  • Avoid duplication of Set-Cookie headers could be duplicated if also returned from headers (#​10424)
  • Properly handle status codes that cannot have a body in single fetch responses (204, etc.) (#​10410)

v2.15.2

Compare Source

No significant changes to this package were made in this release. See the repo CHANGELOG.md for an overview of all changes in v2.15.2.

v2.15.1

Compare Source

No significant changes to this package were made in this release. See the repo CHANGELOG.md for an overview of all changes in v2.15.1.

v2.15.0

Compare Source

No significant changes to this package were made in this release. See the repo CHANGELOG.md for an overview of all changes in v2.15.0.

v2.14.0

Compare Source

Minor Changes
  • Deprecate SerializeFrom in favor of generics because it will be removed in React Router v7 (#​10173)
Patch Changes
  • Update externally-accessed resource routes warning to cover null usage as well (#​10145)

v2.13.1

Compare Source

No significant changes to this package were made in this release. See the repo CHANGELOG.md for an overview of all changes in v2.13.1.

v2.13.0

Compare Source

Minor Changes
  • Stabilize React Router APIs in Remix (#​9980)
    • Adopt stabilized React Router APIs internally
      • Single Fetch: unstable_dataStrategy -> dataStrategy
      • Lazy Route Discovery: unstable_patchRoutesOnNavigation -> patchRoutesOnNavigation
    • Stabilize public-facing APIs
      • Single Fetch: unstable_data() -> data()
      • unstable_viewTransition -> viewTransition (Link, Form, navigate, submit)
      • unstable_flushSync> -> <Link viewTransition> (Link, Form, navigate, submit, useFetcher)
  • Stabilize future flags (#​10072)
    • future.unstable_singleFetch -> future.v3_singleFetch
    • future.unstable_lazyRouteDiscovery -> future.v3_lazyRouteDiscovery

v2.12.1

Compare Source

Patch Changes
  • Fix single-fetch types when loader, action, clientLoader, or clientAction return a mixture of bare objects, json(...), defer(...), and unstable_data(...). (#​9999)
  • Single Fetch: Re-export interface Future through @remix-run/node/@remix-run/cloudflare/@remix-run/deno packages so that pnpm doesn't complain about @remix-run/server-runtime not being a dependency (#​9982)

v2.12.0

Compare Source

Patch Changes
  • Single Fetch: Do not try to encode a turbo-stream body into 304 responses (#​9941)

  • Single Fetch: fix revalidation behavior bugs (#​9938)

    • With Single Fetch, existing routes revalidate by default
    • This means requests do not need special query params for granular route revalidations out of the box - i.e., GET /a/b/c.data
    • There are two conditions that will trigger granular revalidation:
      • If a route opts out of revalidation via shouldRevalidate, it will be excluded from the single fetch call
      • If a route defines a clientLoader then it will be excluded from the single fetch call and if you call serverLoader() from your clientLoader, that will make a separarte HTTP call for just that route loader - i.e., GET /a/b/c.data?_routes=routes/a for a clientLoader in routes/a.tsx
    • When one or more routes are excluded from the single fetch call, the remaining routes that have loaders are included as query params:
      • For example, if A was excluded, and the root route and routes/b had a loader but routes/c did not, the single fetch request would be GET /a/b/c.data?_routes=root,routes/a
  • Remove hydration URL check that was originally added for React 17 hydration issues and we no longer support React 17 (#​9890)

    • Reverts the logic originally added in Remix v1.18.0 via #​6409
    • This was added to resolve an issue that could arise when doing quick back/forward history navigations while JS was loading which would cause a mismatch between the server matches and client matches: #​1757
    • This specific hydration issue would then cause this React v17 only looping issue: #​1678
    • The URL comparison that we added in 1.18.0 turned out to be subject to false positives of it's own which could also put the user in looping scenarios
    • Remix v2 upgraded it's minimal React version to v18 which eliminated the v17 hydration error loop
    • React v18 handles this hydration error like any other error and does not result in a loop
    • So we can remove our check and thus avoid the false-positive scenarios in which it may also trigger a loop
  • Single Fetch: Improved typesafety (#​9893)

    If you were already using previously released unstable single-fetch types:

    • Remove "@&#8203;remix-run/react/future/single-fetch.d.ts" override from tsconfig.json > compilerOptions > types
    • Remove defineLoader, defineAction, defineClientLoader, defineClientAction helpers from your route modules
    • Replace UIMatch_SingleFetch type helper with UIMatch
    • Replace MetaArgs_SingleFetch type helper with MetaArgs

    Then you are ready for the new typesafety setup:

    // vite.config.ts
    
    declare module "@&#8203;remix-run/server-runtime" {
      interface Future {
        unstable_singleFetch: true; // 👈 enable _types_ for single-fetch
      }
    }
    
    export default defineConfig({
      plugins: [
        remix({
          future: {
            unstable_singleFetch: true, // 👈 enable single-fetch
          },
        }),
      ],
    });

    For more information, see Guides > Single Fetch in our docs.

  • Single Fetch: Change content type on .data requests to text/x-script to allow Cloudflare compression (#​9889)

  • Support 304 responses on document requests (#​9955)

v2.11.2

Compare Source

Patch Changes
  • Single Fetch: Fix redirects when a basename is present (#​9848)
  • Fog of War: Simplify implementation now that React Router handles slug/splat edge cases and tracks previously discovered routes (see remix-run/react-router#11883) (#​9860)
    • This changes the return signature of the internal __manifest endpoint since we no longer need the notFoundPaths field
  • Fog of War: Update to use renamed unstable_patchRoutesOnNavigation function in RR (see remix-run/react-router#11888) (#​9860)
  • Single Fetch: Update turbo-stream to v2.3.0 (#​9856)
    • Stabilize object key order for serialized payloads
    • Remove memory limitations payloads sizes

v2.11.1

Compare Source

Patch Changes

v2.11.0

Compare Source

Minor Changes
  • Single Fetch: Add a new unstable_data() API as a replacement for json/defer when custom status/headers are needed (#​9769)

  • Add a new replace(url, init?) alternative to redirect(url, init?) that performs a history.replaceState instead of a history.pushState on client-side navigation redirects (#​9764)

  • Rename future.unstable_fogOfWar to future.unstable_lazyRouteDiscovery for clarity (#​9763)

  • Single Fetch: Remove responseStub in favor of headers (#​9769)

    • Background

      • The original Single Fetch approach was based on an assumption that an eventual middleware implementation would require something like ResponseStub so users could mutate status/headers in middleware before/after handlers as well as during handlers
      • We wanted to align how headers got merged between document and data requests
      • So we made document requests also use ResponseStub and removed the usage of headers in Single Fetch
      • The realization/alignment between Michael and Ryan on the recent roadmap planning made us realize that the original assumption was incorrect
      • middleware won't need a stub - users can just mutate the Response they get from await next() directly
      • With that gone, and still wanting to align how headers get merged, it makes more sense to stick with the current headers API and apply that to Single Fetch and avoid introducing a totally new thing in RepsonseStub (that always felt a bit awkward to work with anyway)
    • With this change:

      • You are encouraged to stop returning Response instances in favor of returning raw data from loaders and actions:
        • ~~return json({ data: whatever });~~
        • return { data: whatever };
      • In most cases, you can remove your json() and defer() calls in favor of returning raw data if they weren't setting custom status/headers
        • We will be removing both json and defer in the next major version, but both should still work in Single Fetch in v2 to allow for incremental adoption of the new behavior
      • If you need custom status/headers:
        • We've added a new unstable_data({...}, responseInit) utility that will let you send back status/headers alongside your raw data without having to encode it into a Response
      • The headers() function will let you control header merging for both document and data requests
Patch Changes
  • Change initial hydration route mismatch from a URL check to a matches check to be resistant to URL inconsistencies (#​9695)

v2.10.3

Compare Source

No significant changes to this package were made in this release. [See the repo CHANGELOG.md](https://redirect.github.com


Configuration

📅 Schedule: Branch creation - "before 7am on the first day of the week" in timezone GMT, Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot added the dependencies Pull requests that update a dependency file label Apr 27, 2025
@renovate renovate bot enabled auto-merge (squash) April 27, 2025 01:25
Copy link

changeset-bot bot commented Apr 27, 2025

⚠️ No Changeset found

Latest commit: a69c24c

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Copy link

vercel bot commented Apr 27, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
clerk-js-sandbox ✅ Ready (Inspect) Visit Preview 💬 Add feedback Apr 28, 2025 5:48am

Copy link
Contributor Author

renovate bot commented Apr 28, 2025

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

@renovate renovate bot merged commit 8f51a45 into main Apr 28, 2025
31 checks passed
@renovate renovate bot deleted the renovate/remix-monorepo branch April 28, 2025 06:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies Pull requests that update a dependency file remix
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants