Back to Blog
ShopifyReact RouterRemixWeb Components

Shopify Ditches Remix, Embracing React Router & Web Components

Shopify has updated its official app development recommendations — React Router v7 is now the preferred framework for new apps, and Polaris is moving to Web Components. Here's what that means for developers building on Shopify today.

7 min read

If you've been building Shopify apps with Remix, you've probably seen the signs for a while. The documentation has been quietly updated, the scaffolding tooling has shifted, and there's been a lot of community chatter. Now it's official: Shopify recommends React Router v7 for new app development — and Polaris is moving away from a React-specific library toward framework-agnostic Web Components.

But here's the thing: this isn't as dramatic as it sounds. If you understand the history here, the transition makes complete sense.

React Router and Remix Were Always the Same Thing

Remix was created by the same team that built React Router — Ryan Florence and Michael Jackson. When Shopify acquired them in 2022, Remix became the foundation for all Shopify app scaffolding. Then in 2024, the teams made the merger official: Remix v3 became React Router v7. It wasn't a hostile takeover or a pivot — it was a strategic consolidation that makes the ecosystem cleaner.

Every single feature you relied on in Remix exists verbatim in React Router v7. Loaders, actions, server-side rendering, nested routing, error boundaries, and progressive enhancement — all of it is there, just under the React Router umbrella.

React Router v7 is not a replacement for Remix — it IS Remix, merged back into the library it was always built on. The migration is largely a find-and-replace of package names.

Migrating from Remix to React Router v7

The official migration is a 9-step process, but in practice most apps can complete it in under an hour. The Remix team has published an automated codemod that handles the majority of the import renaming:

bash
npx codemod remix/2/react-router/upgrade

If you prefer to do it manually, the key changes are:

  • Replace @remix-run/react, @remix-run/node, and @remix-run/server-runtime with react-router
  • Rename RemixServer → ServerRouter and RemixBrowser → HydratedRouter in your entry files
  • Move Vite plugin config from vite.config.ts into a new react-router.config.ts file
  • Add an app/routes.ts file to declare your routes (or use flat-file convention)
  • Update package.json scripts: remix vite:dev → react-router dev
  • Add .react-router/ to your .gitignore

The most error-prone step is the import replacement. Running the codemod first eliminates nearly all of it.

What This Means for Shopify App Scaffolding

When you run shopify app create today, the generated template uses React Router v7 out of the box. If you have existing Remix-based apps, Shopify will continue to support them — the platform doesn't care what framework your app uses as long as it implements the App Bridge and OAuth flows correctly. But for new projects, React Router v7 is where the first-party investment and documentation will be.

The practical developer experience is nearly identical. If you've been writing Remix, you'll feel at home with React Router v7 within the first hour. The mental models are the same; the file conventions are the same; the SSR and data loading patterns are the same.

Polaris Web Components: A Bigger Shift

The more interesting — and arguably more significant — change is what's happening with Polaris. Shopify's design system is transitioning from Polaris React (a React component library) to Polaris Web Components built on native Custom Elements.

Why does this matter? Because Web Components are framework-agnostic. You can use them from React, Vue, Svelte, Angular, or plain HTML/JavaScript. They load from a CDN, so your app bundle stops carrying all of Polaris as a dependency.

  • No framework lock-in — the same components work regardless of your stack
  • CDN-delivered means faster cold starts and better caching across apps
  • Smaller JavaScript bundles for your app itself
  • Consistent rendering semantics enforced by the browser's Custom Elements spec
  • Shopify Admin extensions already use these components natively

If you're building Admin extensions, you've actually been using these Web Components for a while — the UIX (UI Extensions) surface has always rendered native Shopify web components rather than React ones. The React Polaris library is still available and not being removed overnight, but the long-term direction is clearly Web Components.

What You Should Do Today

  • New apps: Start with React Router v7. Use the official Shopify app template which already scaffolds it correctly.
  • Existing Remix apps: There's no urgency to migrate, but plan it for your next major version. Run the codemod on a branch to assess effort.
  • Polaris: Continue using @shopify/polaris for now. Monitor the web-components migration guide — it will follow the same phased approach Shopify has used for other deprecations.
  • Stay on the Shopify Developer Changelog: The pace of change has accelerated significantly in 2026.

The React Router v7 migration is genuinely low-risk compared to most framework migrations. The automated codemod handles most of the work, and the runtime behavior is identical. Budget half a day per app and don't overthink it.

Written by

Sultan Ahmad

Shopify Engineering, Artiple Web

← More articles