Remix
Open menu

Remix Newsletter #30

Welcome to Remix Newsletter #30!

This month we'll be sharing about our new route.lazy API, important security and performance improvements, and enhanced Cloudflare support. We also give a quick recap of our recent bug bash and remind you about our upcoming Remix Jam event in Toronto.

Let's dive in 💿

A reflective robot stands among pink flowers under a blue sky, with newsletter highlights displayed in the corner.

React Router v7.5.0–v7.5.3

React Router v7.5 brings a series of important updates, including a new API for lazy loading, security fixes, and several performance and bug improvements.

New Features

Route.lazy Object API: v7.5.0 introduces a new object-based route.lazy API, allowing you to lazy load individual route properties (like loader, action, Component, and more) for improved performance and flexibility.

More on this feature, the problems it solves, and how to use it below.

Note: This replaces the previous route.unstable_lazyMiddleware API, which has been removed. Use route.lazy.unstable_middleware instead.

Security Updates

Cache-Poisoning Fixes: v7.5.2 addresses two security vulnerabilities that could result in cache-poisoning attacks by sending specific headers intended for build-time usage in SPA Mode and Pre-rendering. (GHSA-f46r-rw29-r322, GHSA-cpj6-fhp6-mr6j)

Performance Improvements & Bug Fixes

  • Update optional wrangler peer dependency range to support wrangler v4
  • Reinstate dependency optimization in the child compiler to fix depsOptimizer is required in dev mode errors when using vite-plugin-cloudflare and importing Node.js builtins
  • Skips loading HydrateFallback and hydrateFallbackElement properties after hydration when using the object-based route.lazy API, reducing unnecessary downloads
  • Fix single fetch bug where no revalidation request would be made when navigating upwards to a reused parent route
  • Properly revalidates pre-rendered paths when param values change
  • Fixes pre-rendering when a loader returns a redirect
  • Updates single fetch to handle 204 redirects in .data requests, supporting advanced use cases and enabling redirects outside of React Router (e.g., via an express or hono middleware)
  • Fixes bug where bubbled action errors would clear loaderData at the handling ErrorBoundary route
  • Handles redirects from clientLoader.hydrate on initial load

Unstable Features

  • New future.unstable_subResourceIntegrity flag for script integrity
  • Improved Vite environment API support for critical CSS in development
  • Enhanced middleware support and type safety, including new APIs for custom data strategies and middleware execution

Check out the full React Router changelog ↗

Remix v2.16.5

Remix v2 is receiving fewer and fewer updates these days. The upgrade path from Remix v2 to React Router v7 has been successfully completed by many developers and teams, and at this point we are primarily focused on addressing security concerns and any remaining sharp edges that make upgrading difficult.

In Remix v2.16.5 we bumped undici to version 6.21.2 to address a security advisory.

Check out the full Remix changelog ↗

Remix Team Bug Bash

Since releasing React Router v7 back in November, our issue count has skyrocketed.

The good news is that people are using React Router and want it to be better. The bad news is that they've found some bugs and sharp edges we haven't addressed as quickly as we'd like.

To help the team focus on addressing issues from the community and pay down some of our technical debt, we decided last week to take a break from new feature development and focus entirely on bug fixes and documentation.

In just 5 days, we were able to:

  • Merge 33 pull requests in react-router
  • Close 77 issues in react-router
  • Update templates in react-router-templates (33 issues closed)
  • Archived old repositories we're not actively maintaining

There's definitely some cleanup left to do, as well as a number of issues we're still addressing that we didn't wrap up last week. With a fresher slate and some newfound momentum, you can expect to continue seeing improvements in the coming weeks and months, in addition to stabilizing and releasing more unstable APIs (RSC wen?).

Want to get an overview of what the team accomplished? Just look at our pending changesets! Next month's newsletter is gonna be a doozy 😅

28 pending changesets

Faster Lazy Loading in React Router v7.5+

Faster Lazy Loading in React Router v7.5+

React Router v7.5 introduces a new, more granular object-based route.lazy API that improves lazy loading performance and is designed to support the upcoming middleware API. Previously, the route.lazy() function required all route properties to be loaded together, which could delay navigation and middleware execution. The new API allows you to lazy load only the properties you need, such as loader, action, Component.

For example, you can now split your route code like this:

Before and after of route.lazy code

This approach means React Router only waits for the minimum necessary code at each navigation step, resulting in faster page loads and better performance. To learn more about how the new API works, read the full article below.

Read "Faster Lazy Loading in React Router v7.5+" ↗

Remix Jam tickets coming soon

Remix Jam Toronto '25

If you haven't already, mark your calendars for October 10th, 2025 for Remix Jam!

Remix Jam is a 1-day event where we will share about the past, present, and future of Remix. Remix Jam will be hosted by the Remix team & Shopify in the heart of Toronto.

We are going to be announcing ticket sales pretty soon, so keep your eyes out for an email with the details. This event will be fairly intimate, and we anticipate that tickets will go fast.

Learn more about Remix Jam ↗

Improved Cloudflare Support

Cloudflare has announced the 1.0 release of their Vite plugin, bringing first-class support for React Router v7. This integration allows you to run your server code directly in the Cloudflare Workers runtime during development, ensuring your local environment matches production as closely as possible. With the new Environment API in Vite 6, you can develop, preview, and deploy full-stack React Router apps on Cloudflare Workers with confidence.

Our Cloudflare templates are already setup to use the new plugin.

Create a new Remix app with the Cloudflare template

Read the full announcement ↗

Connect at a Remix Meetup

Remix Meetups are run voluntarily by members of the community all around the globe with in-person and online options. These meetups feature local speakers, hackathons, workshops, and more!

Find a meetup near you ↗

Remix Meetups all around the world

No meetups near you? Reply to this email if you are interested in starting your own meetup. We've even created some guides to help you get started.

Starting a New Remix Meetup ↗

If you enjoy getting this email, please let us know! We'd love to hear from you, what you like about Remix and these updates, and any suggestions you have to improve them.

- The Remix Team