Skip to content

Releases: remix-run/remix

v1.0.0-rc.4

22 Nov 18:55
Compare
Choose a tag to compare
v1.0.0-rc.4 Pre-release
Pre-release

Nothing to see here. Stay tuned!

Full Changelog: v1.0.0-rc.3...v1.0.0-rc.4

v1.0.0-rc.3

22 Nov 18:28
Compare
Choose a tag to compare
v1.0.0-rc.3 Pre-release
Pre-release

Bug fixes 🐛

  • Fixed a bug in <Form> where requests were sent to the wrong action (#411).
  • Fixed a bug with await handlers in server runtime (#413).
  • Fixed a few bugs with local development (#417, #431)

Breaking changes 💔

  • react-router-dom is no longer a peer dependency, so you can remove it from your package.json (#424). This isn't technically a breaking change today, but it could break your app in the future without making this switch! All React Router modules should be imported directly from remix:
// before
import { Outlet } from "react-router-dom";
// after
import { Outlet } from "remix";

Full Changelog: v1.0.0-rc.2...v1.0.0-rc.3

v1.0.0-rc.2

20 Nov 00:07
Compare
Choose a tag to compare
v1.0.0-rc.2 Pre-release
Pre-release

The best way to find a bug in software is to ship it. On a related note, we shipped rc.1 and found a bug 😅

This is a quick patch release, so if you're upgrading from a v0 release, check out the relevant notes here: https://github.com/remix-run/remix/releases/tag/v1.0.0-rc.1

Full Changelog: v1.0.0-rc.1...v1.0.0-rc.2

v1.0.0-rc.1

19 Nov 21:54
Compare
Choose a tag to compare
v1.0.0-rc.1 Pre-release
Pre-release

Alright friends, we're almost there! Welcome to the first release candidate for Remix v1.0. Buckle up and get ready, let's dive in to what's new!

Features ✨

  • Added <ScrollRestoration /> component that emulates the browser's scroll restoration behavior on client-side navigations (#399). This component is included in the starter template by default, but existing apps can render it in your root.(js|tsx) directly before <Scripts />.

Bug fixes 🐛

  • <Form> will now include values held by named submit buttons (or <input type="submit" />) (#398)

Breaking changes 💔

  • Removed all deprecated hooks (#395)
  • Rename MetaDescriptor type to HtmlMetaDescriptor (#378)

Other odds and ends 🤷‍♂️

  • Created fancy new starter templates for create-remix 💅
  • Updated esbuild to the latest and greatest (#402)
  • Made the CLI shutdown process a bit more graceful (#400)

Full Changelog: v0.21.0...v1.0.0-rc.1

v0.21.0

16 Nov 23:46
Compare
Choose a tag to compare

💅 Features

  • We're on React Router v6! Go change your package.json dependency to "react-router-dom": "^v6.0.0". If you've got "history" in there, you can delete it (it's now just a direct dependency of React Router, your app doesn't need to know about it).
  • You can now get form data directly from the request object! (note that this doesn't yet support multipart/form-data requests, but that is in development right now).
    export function action({ request }) {
      // old
      let body = new URLSearchParams(await request.text());
    
      // new
      let body = await request.formData();
    }
  • Add support for Resource Routes! You can now omit the default export from any route file and the response will be any resource returned from its loader. You can use this to build:
    • RSS feeds
    • dynamically generated images
    • mobile app API routes (so you can reuse the backend logic for both UIs)
    • and lots more!

✨ Improvements

  • You can now add attributes to the <script> tags rendered by <Scripts /> by passing them as props. This allows you to add a Content Security Policy and drop a nonce on the inline scripts that Remix renders so the browser doesn't block them (we'll have a guide soon, but you can read more about CSP on MDN.)
  • Added sourcemaps for server builds.

🐛 Bugfixes

  • Fixed a bug where ?index was included in action requests for index routes.

🗒️ Docs

Full Changelog: v0.20.1...v0.21.0

v0.20.1

29 Oct 22:28
Compare
Choose a tag to compare

Fixed a tiny bug in @remix/create-remix to prevent CLI errors. All good here! 😎

v0.20.0

29 Oct 22:00
Compare
Choose a tag to compare

Gather 'round folks, this release brings along lots of tasty features and stomps out a few gnarly bugs. Here's a high-level overview of important changes:

  • CLI changes
    • remix dev is now remix watch
    • remix run is now remix dev
    • Added remix routes
    • Added remix build --sourcemap
  • <Form forceRefresh /> is now <Form reloadDocument />
  • Added a new handleDataRequest API for manipulating request data
  • Now using [email protected]

Now, let's get into to the weeds a bit 🤓

🕞 tl;dr Upgrading

  • Update your package.json or pm2 configs
    • remix dev -> remix watch
    • remix run -> remix dev
  • <Form forceRefresh /> -> <Form reloadDocument />
  • Ensure you've got [email protected] in your package.json dependencies.

💔 Breaking Changes

  • Several users felt that the remix dev command did not behave as expected. The CLI command remix dev has been changed to remix watch, and remix run has been changed to remix dev to hopefully make the CLI a bit more intuitive. Please note that remix dev requires that @remix-run/serve is installed as a dependency, just as remix run did before (#315).
  • The forceRefresh prop on <Form> has been renamed to reloadDocument. We feel like this more clearly communicates the behavior of the form's submission.

✨ Improvements

  • Now shipping with the latest beta of react-router-dom! 🚀

  • We updated all docs and templates to suggest npx create-remix instead of npm init remix, which is generally more consistent and less error prone for creating new sites with reasonable defaults.

  • TypeScript should now correctly infer types from imported .json modules (#314)

  • Added support for multiple meta tags that use the same key to a route's meta function (#322). We now allow you to pass an array of values to a key in the object returned by meta:

    export let meta: MetaFunction = () => {
      return {
        "article:author": ["Chance the Dev", "Ryan Florence"],
      };
    };
  • We added a new CLI command remix routes that allows you to visualize your app's route structure from the command line in either JSX or JSON format (#326).

  • We introduced handleDataRequest for modifying the response of data requests in routes (#329):

    // example route file
    import type { HandleDataRequestFunction } from "remix";
    
    // this is an optional export!
    export let handleDataRequest: HandleDataRequestFunction = (
      response,
      { request, params, context }
    ) => {
      // do whatever you'd like before returning the response!
      response.headers.set("x-custom", "yay!");
      return response;
    };
  • remix build no longer puts source maps in your browser build by default. This was a security issue because people could see your server side code from the browser! If you want to have source maps in your production builds, you can use the --sourcemap flag 🗺️ (#350).

  • We made a handful of improvements to the new Remix application templates.

🐛 Bugfixes

  • The ~/ path alias for the app directory now works when importing markdown files (#317).
  • We squashed a bug in which form submissions were trimming values with duplicate keys (checkboxes, radio inputs, etc.) (#344).
  • We annihalated a bug in which redirects are not followed when thrown from an action for client-side form submissions (#349).
  • We exterminated a particularly nasty bug in the @remix/architect server that was sending requests to invalid URLs (#333).
  • We wiped out several bugs for sites shipping to Cloudflare Workers (#318).
  • We crushed a bug causing back/forward navigation mayhem (#351)
  • We demolished a bug where <Link prefetch> was prefetching way too much stuff.
  • We fumigated a bug where imports from React Router weren't working in Remix (like <Outlet>).
  • I'm running out of creative synonyms for "fix", so thankfully I'm also out of bug fixes to describe 😅

🗒️ Docs

  • Lots of docs updates and improvements, perhaps too many to capture succinctly in release notes! Be sure to check out https://docs.remix.run for the latest and greatest.

v0.19.3

14 Oct 14:19
Compare
Choose a tag to compare

Couple bug fixes:

  • Build no longer fails on layout routes with actions
  • Can use npm 7+

v0.19.2

10 Oct 04:08
Compare
Choose a tag to compare

Changed layout route convention from _layout to two underscores: __layout. This is a breaking change but it's only been around for 24 hours.

v0.19.1

09 Oct 15:05
Compare
Choose a tag to compare
  • Type fixes
    • EntryContext
    • Route
    • LinksFunction
  • Bugfixes
    • Routes without loaders were being called on client side transitions