Repository navigation
Release v3.1.0 - #11978
Open
remix-run-bot wants to merge 1 commit into
Open
Release v3.1.0#11978remix-run-bot wants to merge 1 commit into
remix-run-bot wants to merge 1 commit into
Conversation
Contributor
Preview Build AvailableA preview build has been created for this PR. You can install it using: pnpm install "remix-run/remix#preview/pr-11978&path:packages/remix"This preview build will be updated automatically as you push new commits. |
remix-run-bot
force-pushed
the
release-pr/main
branch
11 times, most recently
from
October 14, 2026 18:05
b1977a1 to
ee6da0a
Compare
remix-run-bot
force-pushed
the
release-pr/main
branch
from
October 15, 2026 14:34
ee6da0a to
f09d4b0
Compare
remix-run-bot
force-pushed
the
release-pr/main
branch
9 times, most recently
from
October 16, 2026 05:43
3f699dc to
edc0b46
Compare
- @remix-run/assets: 1.0.0 -> 1.0.1 - @remix-run/cli: 1.0.0 -> 1.0.1 - @remix-run/component: 1.0.0 -> 1.1.0 - @remix-run/compression-middleware: 1.0.0 -> 1.0.1 - @remix-run/render-middleware: 1.0.0 -> 1.0.1 - @remix-run/response: 1.0.0 -> 1.0.1 - @remix-run/spa: 1.0.0 -> 1.0.1 - @remix-run/static-middleware: 1.0.0 -> 1.0.1 - @remix-run/ui: 0.12.1 -> 0.13.0 - remix: 3.0.0 -> 3.1.0
remix-run-bot
force-pushed
the
release-pr/main
branch
from
October 16, 2026 15:43
edc0b46 to
8d47751
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR is managed by the
release-prworkflow. Do not edit it manually. See CONTRIBUTING.md for more.Releases
3.0.0→3.1.01.0.0→1.0.11.0.0→1.0.11.0.0→1.1.01.0.0→1.0.11.0.0→1.0.11.0.0→1.0.11.0.0→1.0.11.0.0→1.0.10.12.1→0.13.0Changelogs
remix v3.1.0
Minor Changes
Mixins created through
remix/componentcan usecreateMixin(setup, { ssr: false })to skip setup and render on the server while keeping browser behavior and hydration. Server rendering remains enabled by default. The option is intended for behavior that does not contribute to the server HTML.Use
frame.reload({ src, method, encType, body })fromremix/componentto reload another source or submit data and render the response without changing browser history.FormDatafollows GET query and POST encoding defaults, with multipart and plain-text encodings available (see Support source changes and form submissions in frame.reload() #11938).remix/componentsupports disabling automatic focus resets during intercepted navigation. Scroll and focus controls accept"after-transition"and"manual"innavigate()/link()options and HTML attributes, while existing boolean values remain supported (see Add focus reset controls and Navigation API option values #11939).Patch Changes
Ensure client entries requested after an HMR update use current cache-busting URLs.
Include
unsafeHTML()guidance inremix/componentraw HTML prop errors (innerHTML,srcDoc, andsrcdoc) and clarify thatouterHTMLis not supported on host elements.Bumped
@remix-run/*dependencies:assets@1.0.1cli@1.0.1component@1.1.0compression-middleware@1.0.1render-middleware@1.0.1response@1.0.1spa@1.0.1static-middleware@1.0.1@remix-run/assets v1.0.1
Patch Changes
Reduce server rendering work by caching
getScriptEntry()metadata between calls. Watched file changes and browser HMR events clear the cache, failed requests can be retried, and each caller receives a separate copy of the metadata.Ensure script entries requested after an HMR update use current cache-busting URLs.
Avoid competing frame refreshes when a browser HMR update requires a full page reload. Server updates now wait for pending browser updates before refreshing server-rendered content.
Reduce rebuild work in watch mode. When a watched script changes, modules that import it are no longer transformed again because their own source did not change, and barrel file import analysis reuses its results for unchanged modules instead of parsing them again.
@remix-run/cli v1.0.1
Patch Changes
New apps now derive
AppContextfrom the router withRouterContext<typeof router>instead of declaring it up front and passing it tocreateRouter<AppContext>(). The explicit type argument turned off middleware inference, so middleware added to the router later (such asformData()) did not show up oncontextin controllers. This also matches the setup shown in the Remix guides.Existing generated apps can apply the same setup in
app/router.ts:Bumped
@remix-run/*dependencies:assets@1.0.1@remix-run/component v1.1.0
Minor Changes
Mixins that only add browser behavior can skip server rendering with
createMixin(setup, { ssr: false }). The server skips their setup and render functions, including when another mixin returns them. The browser still initializes them during hydration and later renders. Server rendering remains enabled by default.Use this option only when the mixin does not contribute to the server HTML. The built-in
onandrefmixins now use it.MixinOptionsis exported for typed options.Add options to frame.reload() to support setting the src and imperative frame submissions.
frame.reload({ src })and skipframe.src = "..."frame.reload({ method, encType, body })without changing browser history<form>, the method defaults to GET, which putsFormDatafields in the source query; POST defaults to URL encoding, with multipart and plain-text encoding available throughencTypeDisable automatic focus resets during intercepted navigation with
data-rmx-reset-focus="manual"on links, forms, or submit buttons, or withresetFocus: 'manual'innavigate()andlink()(see Add focus reset controls and Navigation API option values #11939).Scroll and focus controls accept the Navigation API values
"after-transition"(the default) and"manual". Use the same values forresetScrollandresetFocusoptions anddata-rmx-reset-scrollanddata-rmx-reset-focusattributes. Existing boolean options and"true"/"false"attributes remain supported:truecorresponds to"after-transition"andfalseto"manual".Patch Changes
Fix frame navigation for forms whose submit button is removed immediately after submission, including buttons reused across forms while an earlier submission is still pending (see fix(component): resolve form navigation when submitter is detached before navigate fires #11987). Preserve the original POST data across additional
FormDatasnapshots and keep later canceled submissions on the same or another form from replacing the pending navigation.Fix server rendering so components rendered after a nested component subtree no longer reuse
handle.idvalues from that subtree.Treat client entry
hrefvalues as the same identity across HMR updates when they differ only by a cache-bustingttimestamp query parameter.Include
unsafeHTML()guidance in raw HTML prop errors (innerHTML,srcDoc, andsrcdoc) and clarify thatouterHTMLis not supported on host elements.Preserve explicit and inferred generic component prop types in JSX, including components typed with partial handles (see Keep generic component props typed in JSX #11942).
Fix unintended input blur when frame updates remove or replace sibling content, such as when a search returns no results or its query is cleared (see Add focus reset controls and Navigation API option values #11939).
Improve server rendering throughput and reduce temporary allocations by skipping unused mixin and attribute work, and closing responses directly when no frame content remains. Blocking frames still resolve before the first HTML chunk.
Reduce server rendering work by writing ordinary HTML into a shared chunk list, awaiting blocking frames directly instead of scanning the rendered tree, skipping DOM event mixin setup, avoiding
deletewhen mergingclassprops, and inserting head resources and hydration data in a single pass before assembling the final document.Reduce server rendering memory use by assembling each HTML response with a single join and keeping client entry hydration props serialized. Request abort listeners are removed when rendering finishes, fails, or is canceled, so long-lived request signals no longer keep finished renders reachable.
Streamed
<Frame>content no longer loses items when the browser receives its template in multiple network chunks during initial page loadingRestore scroll position when navigating back or forward to a page that previously used
resetScroll: falseordata-rmx-reset-scroll="false"(see Restore scroll and reset focus on traverse navigations #11989).@remix-run/compression-middleware v1.0.1
Patch Changes
@remix-run/*dependencies:response@1.0.1@remix-run/render-middleware v1.0.1
Patch Changes
@remix-run/*dependencies:assets@1.0.1component@1.1.0response@1.0.1@remix-run/response v1.0.1
Patch Changes
@remix-run/spa v1.0.1
Patch Changes
@remix-run/*dependencies:component@1.1.0render-middleware@1.0.1@remix-run/static-middleware v1.0.1
Patch Changes
@remix-run/*dependencies:response@1.0.1@remix-run/ui v0.13.0
Minor Changes
BREAKING CHANGE: Prop types for the previously removed styled
Accordion,Select, andComboboxcomponents have also been removed:AccordionProps,AccordionItemProps,AccordionTriggerProps,AccordionContentProps,SelectProps,SelectOptionProps,ComboboxProps, andComboboxOptionProps. Accordion's unusedheadingLevelprop and corresponding context fields, along with theAccordionHeadingLeveltype, have also been removed.BREAKING CHANGE: The toggle mixin is now exported as
toggleinstead ofcontrol. Sincetoggleconsists of a single mixin, it can now be called directly astoggle()rather than grouped undertoggle.control().The options type has also been renamed from
ToggleControlOptionstoToggleOptions:Patch Changes
Server rendering skips setup and render for animation mixins, keyboard and outside-click helpers, typeahead behavior, and popover anchor and focus helpers. Mixins that provide initial attributes, styles, or ARIA props still run on the server.
Bumped
@remix-run/*dependencies:component@1.1.0