webdev
professional advice
Shopify apps vs theme code
Apr 1, 2025
The Shopify ecosystem, for the foreseeable future
Over the past three years, we’ve seen Shopify push both developers and merchants towards apps. Shopify has shifted merchants towards new customer accounts, removed the Script Editor app, and opened up more API endpoints, with the hope of apps becoming the heart of the Shopify development ecosystem. Shopify is right when they promote apps as a way for more merchants to access functionality that they previously would have needed to hire a developer for.
But they also don’t shout from the rooftops about their commission on the app store or the fact that they save significant storage and bandwidth costs by requiring developers to host the apps themselves.
While it makes sense that functionality can be provided to more merchants via apps, if that isn’t your goal, then you may find the app development process tedious. In our case at midibl, we had a client who wanted a ‘bundle & save’ modal to pop up whenever a product was added to the cart. We could have developed this functionality into an app and potentially published it to the app store, but a few reasons stopped us from doing that:
The app would require upkeep and hosting fees, adding unnecessary costs for our client.
It would be much quicker to add this functionality to the already existing theme JS instead of setting up a dev environment and going through Shopify’s somewhat cumbersome app dev procedures.
It would render faster for the user, since the logic is processed at page load instead of being fetched asynchronously.
By developing this functionality into a Shopify Theme Section, we render it at page load. This means the product info and internal links are present as soon as the page loads. A win for our client’s SEO goals.
Ruby vs JS
We’re not saying all functionality should be built into the theme, just the really niche or single-use-case scenarios. Most other times, an app is needed. A common example: reordering shipping options. This objective can only be achieved through the Checkout Extensibility API. There’s no way around it.
Your only choice here is picking which language to use to write the app. Shopify supports any language that can be bundled into Webpack. But be careful—just because they let you pick the language doesn’t mean they want you to use it.
Shopify is still focused on Ruby for its efficiency. If you choose to develop an app using JS, be mindful of Shopify’s memory limits.