unstale

npm / remix

remix

What changed in remix 2 to 3, from its official release notes, upgrade guides and advisories. Sources checked 2026-11-01.

12 breaking12 new APIs and options3 performance2 behavior and defaults4 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.2.9 on npm

remix 330 changes

Breaking changes 10

  • With the future form-data APIs, each upload streams from the request body and must be read inside uploadHandler; it can be read only once, upload.size is unavailable until read, and upload.slice() is unsupported.

    3.1.0release notes

  • Visually styled components and style mixins have been removed, including the breadcrumbs, button, checkbox, input, and radio modules.

    3.0.0release notes

  • Applications using the Remix JSX runtime must change jsxImportSource from remix/ui to remix/component.

    3.0.0release notes

  • Most component runtime, JSX runtime, server rendering, testing, styles, and mixin imports move from remix/ui to remix/component.

    3.0.0release notes

  • Headless primitive imports move to flat subpaths, such as @remix-run/ui/accordion.

    3.0.0release notes

  • Animation imports move to @remix-run/ui/animation.

    3.0.0release notes

  • Component HMR entrypoints move from remix/ui-hmr to remix/component-hmr.

    3.0.0release notes

  • The component HMR Node hook entrypoint moves to remix/component-hmr/node.

    3.0.0release notes

  • The remix package no longer exports UI components, primitives, or animation utilities; headless primitives and animation utilities remain in @remix-run/ui, which applications must install separately.

    3.0.0release notes

  • Rename the asset loader to componentHmr when using the component HMR asset entrypoint.

    3.0.0release notes

New APIs and options 12

  • createMixin(setup, { ssr: false }) skips setup and rendering on the server while keeping browser behavior and hydration; server rendering remains enabled by default.

    3.1.0release notes

  • Prefetch frame HTML and assets with intent or viewport link modes; both support named frames and source overrides, respect Save-Data, and skip slow-2g/2g connections.

    3.1.0release notes

  • Set the attribute to manual on links, forms, and submit buttons to opt out of automatic focus resets during intercepted navigation.

    3.1.0release notes

  • Reload another source or submit data and render the response without changing browser history; FormData follows GET query and POST encoding defaults, with multipart and plain-text encodings available.

    3.1.0release notes

  • Set resetFocus: 'manual' to opt out of automatic focus resets during intercepted navigation.

    3.1.0release notes

  • Set resetFocus: 'manual' to opt out of automatic focus resets during intercepted navigation.

    3.1.0release notes

  • A new option controls the size of each multipart upload part.

    3.1.0release notes

  • An imperative API from remix/component can prefetch frame HTML and assets.

    3.1.0release notes

  • Adds a future entrypoint that streams multipart parts and file uploads instead of buffering them in memory; future APIs are not stable.

    3.1.0release notes

  • Adds a future entrypoint that streams multipart parts and file uploads instead of buffering them in memory; future APIs are not stable.

    3.1.0release notes

  • Adds a future entrypoint that streams multipart parts and file uploads instead of buffering them in memory; future APIs are not stable.

    3.1.0release notes

  • Controls now accept the Navigation API values "after-transition" and "manual"; existing boolean values remain supported.

    3.1.0release notes

Performance 3

  • Apps that render client entries benefit from caching; a warm lookup takes about 3 µs instead of 210 µs.

    3.1.0release notes

  • Server rendering with remix/component is about twice as fast as in 3.0 and uses less memory, with no code changes.

    3.1.0release notes

  • remix/file-storage/s3 streams files to S3 with multipart uploads, so large files no longer need to fit in memory.

    3.1.0release notes

Behavior and default changes 2

  • When asset imports are restricted with allowPackages, add @remix-run/ui for primitive and animation imports.

    3.0.0release notes

  • Remix 3 reaches its first stable release.

    3.0.0release notes

Fixes and other changes 3

  • Client entries requested after an HMR update now use current cache-busting URLs.

    3.1.0release notes

  • remix/component raw HTML prop errors now include unsafeHTML() guidance for innerHTML, srcDoc, and srcdoc, and clarify that outerHTML is unsupported on host elements.

    3.1.0release notes

  • Entrypoints now preserve default exports from their underlying packages, including the callable assertion helper from remix/assert and SuperHeaders from remix/headers.

    3.1.0release notes

remix 23 changes

Breaking changes 2

  • CSRF checks now include PUT, PATCH, and DELETE on document requests.

    2.17.5release notes

  • The manifest path is disabled when future.v3_lazyRouteConfig is not enabled.

    2.17.5release notes

Fixes and other changes 1

  • The URL limit is synced with the browser limit.

    2.17.5release notes