Shopify App: October 2025 Updates
Intro
I've been a little quiet blogging recently, I've been busy working on Transfers and Replenishment Limits for my app.
But there has been a lot of updates in the Shopify app world released recently, so time to catch up on the latest changes!
App Bridge
Shopify App Bridge has changed a lot over recent years. For those not familiar it is a JavaScript library that helps you build apps that integrate with Shopify Admin and the Shopify APIs.
A little timeline of the changes:
- 2018: App Bridge was first released as a npm package. 🤯
- 2022: App Bridge 3 was released, the last major version on npm.
- 2024: App Bridge 4 was released; this was a move off npm to a unversioned CDN script tag.
- 2025: App Bridge and Polaris are now both moving to a unversioned CDN script tags, unifying the development experience further.
NPM
If you're on an older app bridge version or doing npm i @shopify/app-bridge
then you will need to update your code to move off this and instead use the script tag.
Your app will need to include the following in the head of your HTML, and it should be the first script tag to load.
<head>
<meta name="shopify-api-key" content="%SHOPIFY_API_KEY%" />
<script src="https://cdn.shopify.com/shopifycloud/app-bridge.js"></script>
</head>
Now when your app loads Shopify will take care of loading the latest version of App Bridge for you and setting up a shopify global variable for you to use. Shopify have got some helpful migration guides available too.
UI components
If you were using the script tag, you might have used the UI components that were available on the global shopify
variable. For example, ui-modal
, ui-nav-menu
, ui-save-bar
and ui-title-bar
or the React wrappers around these components.
These were separate to Polaris components and lead to a bit of a confusing experience, with these being added via the script tag and Polaris being added via npm.
Shopify has been doing work to unify the experience of using Polaris and App Bridge together. You can now use the new Shopify Web Components which are more consistent with Polaris components. These are available via the same script tag as App Bridge, so you do not need to change anything there.
These new components are prefixed with s-
and have a slight difference in usage, which you can read more here for the App Bridge components: App Bridge Web Components
Unversioned
Now this is a controversial move, but Shopify have decided to move to an unversioned script tag for both App Bridge and Polaris. This means they will update and serve the latest version of these libraries to you automatically.
This is a big change from the previous approach of using versioned npm packages.
Now the benefits of this are you always get the latest features and bug fixes without having to do anything; however, it does mean you have less control over when you get these updates.
However, seeing the long long tail of apps on older version of App Bridge, I'm looking at you the 500ish downloads of a 7-year-old version of the app bridge package in the last 6 months! I can see why managing it this way makes sense for Shopify, even if it feels a little riskier for app developers.
Polaris
Polaris which is Shopify design system has also moved to an unversioned script tag and seen a lot of changes in October 2025.
Previously Polaris was only available as React components via npm package. This was really helpful as React was very popular in the web and JavaScript world at the time.
However it meant you had to use React to use Polaris, which was not ideal for everyone especially if your app backend wasn't in JavaScript.
Now Polaris is available via a script tag, which loads in the new Shopify Web Components! These are framework agnostic, so you can use them in any web app regardless of the backend or frontend framework you are using.
I know web components can be a bit of a scary topic for some, especially given the historic of support in Javascript frameworks. But it is now widely supported across all modern browsers and frameworks have got much better support for them.
Again, I can see why Shopify has made this change:
- More consistent experience for merchants when using apps, remember when Shopify changed the primary button from green to black? Now all apps using Polaris will get this change automatically rather than a slow move over by apps.
- Easier to use Polaris in any app regardless of the backend or frontend framework, as these are web standards you can use the tooling you want and optimise your app with your expertise without learning React.
- Better caching and admin loading performance, as Shopify can do smarter caching of this across apps rather than each app loading the same or similar libraries.
- Better performance for apps, as there will be less Javascript and bundle to run compared to React.
- Consistent experience because these can be run anywhere it means Admin components, UI extensions across of all of Shopify can use the same components and reducing the maintenance burden for Shopify and you as app devs!
Migration
If you were using Polaris via npm, you will need to update your code to move off this and instead use the script tag and new web components.
Your app will need to include the following in the head of your HTML, and it should be after the App Bridge script tag.
<head>
<meta name="shopify-api-key" content="%SHOPIFY_API_KEY%" />
<script src="https://cdn.shopify.com/shopifycloud/app-bridge.js"></script>
<script src="https://cdn.shopify.com/shopifycloud/polaris.js"></script>
</head>
I spoke to Shopify about doing this migration and they recommended using the Shopify Dev MCP (Model Context Protocol) server to help AI tools to better understand the documentation and help you migrate. I will be giving this a try later this month and share how I get on!
This also is a good opportunity to review your app design and see if you can improve the user experience with the latest Polaris components and design patterns.
It also gives you the opportunity to review your app framework, for example if you were using React before you could consider moving to something like Preact or Astro for better performance, developer and merchant experience.
Here is a link to the updated Polaris and App Bridge documentation.
Remix
I'm just going to touch on this one quickly, the previous Shopify CLI created apps using Remix.
This has now been changed to React Router, however, don't fear this as it is a bad naming change rather than a huge underlying change.
Remix was built on top of React Router, and then they basically merged to have the same features. I won't go into the history of why, but you can read more here: Remix and React Router.
Just wanted to highlight this if you are creating a new app via the Shopify CLI and see this change.
UI Extensions
UI Extensions have also seen some updates recently too! Previously you could build in React or Vanilla JS.
React gave us a familiar way to build extensions but lead to large bundle sizes when Shopify needed to load these in the Checkout, POS, Admin etc. Vanilla JS was a bit more bare bones and lead to a lot of boilerplate code to get things working.
Also, each team had a slightly different set of components and APIs to use, which made it a bit inconsistent to build with.
Because of the unifying of Polaris to web components, you can now use the unified Polaris web components in your UI extensions!
This should mean you don't have to repeat very similar but slightly different code across different extensions, which I cannot wait for. POS UI extensions were always more different than the others so very happy to see this be unified.
And because of this change Shopify have also moved to Preact as the main framework for building UI extensions. Preact if you haven't heard of it is a smaller and faster alternative to React but is compatible with React.
I think this is a great choice as it gives a good developer experience, but also much better performance for merchants. This also means if you want to, you can use Preact Signals which is a great performance optimisation for state management over hooks.
I was already using Preact for the Admin side of my app, because of the performance and bundle size benefits. So, I'm very excited to be able to use it across the app and UI extensions. Each of the UI extensions have their own guide to migrate:
Admin UI Extensions don't have migration guide yet, but it will be similar to the other extension types linked about. You can read about the new setup here: Admin UI Extensions
Lastly to note there is a new 64 KB file size limit for UI extensions, so just be aware of this when building your extensions, as you won't be able to exceed this limit.
Summary
In summary, there has been a lot of changes in the Shopify app world recently, I know it can feel a bit overwhelming and keeping up with everything can be a challenge.
Firstly, don't panic, your existing apps will continue to work as normal, and you can migrate at your own pace.
Secondly, take the time to read through the documentation and understand the changes and how they impact your app. I would plan out the migration across your apps and extensions and take the opportunity to review your app design and framework choices to improve the experience for both you and merchants.
Finally, if you do come across any issues or rough edges, make sure to report and share it in the Shopify Dev forum, as the Shopify teams have got really active there which has been great personally.
I'm planning on tackling this towards the end of the month and November, so I'll share how I get on and any tips and tricks I find along the way.