Remix
Open menu

Remix Newsletter #23

Welcome to the Remix Newsletter! If you read our last newsletter, you know by now that we've released our first React Router v7 prerelease.

This newsletter will be a little shorter and focus on the latest updates to Remix and React Router.

Remix and React Router Updates

Our primary focus for Remix and React Router is now on stabilizing APIs and future flags, finishing documentation, and backporting features from React Router v7 to ensure a smooth upgrade path for everyone.

Remix v2.12.0, v2.12.1, v2.13.0, v2.13.1

As mentioned, the majority of our focus has been on stabilizing APIs and future flags. The following unstable features have now been marked as stable. These future flags represent the default behavior of React Router v7, so enabling them will not only improve your Remix app, they'll go a long way toward making your eventual update to React Router v7 easy.

  • unstable_datadata (for use with Single Fetch)
  • unstable_flushSyncflushSync (useSubmit, fetcher.load, fetcher.submit)
  • unstable_viewTransitionviewTransition (<Link>, <Form>, useNavigate, useSubmit)
  • future.unstable_lazyRouteDiscoveryfuture.v3_lazyRouteDiscovery
  • future.unstable_singleFetchfuture.v3_singleFetch

Additionally, we added another future flag: future.unstable_optimizeDeps, an opt-in automatic dependency optimization for dev mode. This flag has improved the development experience for many users already, and has made adopting the Vite plugin much easier. We plan to keep this flag as unstable in React Router v7 and improve upon it more then, so adopt it if it's useful to you, however it is not needed to prepare for the v7 upgrade.

We also fixed a number of bugs and made several improvements to the future flagged features.

Read the full Remix changelog ↗

React Router v6.26.2, v6.27.0

We also stabilized all remaining unstable features in React Router v6. Most of these features are lower-level APIs we created for Remix, and stabilizing them allowed us to stabilize the Remix features.

  • unstable_dataStrategydataStrategy (createBrowserRouter and friends)
  • unstable_patchRoutesOnNavigationpatchRoutesOnNavigation (createBrowserRouter and friends)
  • unstable_flushSyncflushSync (useSubmit, fetcher.load, fetcher.submit)
  • unstable_viewTransitionviewTransition (<Link>, <Form>, useNavigate, useSubmit)

We also made a number of bug fixes and improvements to the future flagged features.

Read the full React Router changelog ↗

React Router v7 Prerelease

As mentioned in our last newsletter, we released the first prerelease of React React v7.

In fact, we have released two prereleases now, as we've already discovered and squashed a handful of bugs. In case you haven't checked it out yet, React Router v7's primary new feature is the Vite plugin that allows you to use React Router as your framework. You can still use React Router v7 as a simple routing library if you prefer. The Vite plugin gives you access to a number of great features:

  • Code splitting
  • Data loading
  • Actions
  • Server rendering
  • Static pre-rendering
  • Pending states
  • Optimistic UI

Additionally, the React Router v7 Vite plugin comes with a few new features not available in Remix:

  • Route pre-rendering
  • Improved route config (routes.ts)
  • Improved and automatic type safety

Watch our last livestream for a demo of the pre-release ↗

File Uploads with Remix

David Adams recently wrote an article about how to use some of the packages from Michael Jackson's remix-the-web project to handle file uploads in Remix.

These new APIs are a glimpse into the future of what the Remix team will be working on, and since the packages are built on web standards, they're perfectly safe and compatible with Remix today.

David's article covers handling multipart form data, streaming file uploads, and storing files using the file-storage package. It walks through:

  • Parsing the form data
  • Using various adapters to store files:
    • locally
    • In memory
    • In AWS S3
    • In Cloudflare R2
    • Via SFTP
  • Various other tips and gotchas

Read "File uploads with Remix" ↗

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 successfully start a Remix Meetup.

Starting a New Remix Meetup ↗

- The Remix Team

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.