Do you actually need an app? Custom versus public distribution, extension-only apps that need no backend, and the checkout.liquid migration whose deadline has passed.
Building an app for your Shopify store is not always the right answer — but in some cases it is the only one. This article covers when an app is actually needed, the app types, the options that require no backend, and the mandatory migration created by the end of checkout.liquid support.
First: do you actually need an app
Work through these in order; most needs are resolved in the first two steps:
- Can theme settings solve it? Most appearance, section layout and content changes live in the theme editor.
- Does an app already exist? If a solution in the app store meets your need, building is almost never cheaper.
- Is the need a business rule specific to you? Requirements that talk to your own ERP, run bespoke pricing or discount logic, or create a flow nobody sells, call for custom development.
If you answered yes to the third, app development is on the table. We cover the general decision framework in off-the-shelf or custom software.
App types: custom or public
| Custom (custom distribution) | Public (app store) | |
|---|---|---|
| Who can install | A single store | Anyone |
| Shopify approval | Not required | Goes through review |
| Use case | Bespoke functionality for your own store | Productising and selling it |
| Hosting | Shopify hosts it in some cases | You host it |
Note: the private app type was deprecated in January 2022, and existing private apps were automatically converted to custom apps in January 2023. If you are building for a single store, the correct option is a custom app.
The no-backend option: extension-only apps
What most store owners do not know is that app development no longer always requires standing up a server. In extension-only apps, Shopify hosts everything including your JavaScript bundle and static assets, and you deploy with a single command. There is no web server to provision, no infrastructure to maintain, and no separately hosted frontend.
This model is sufficient for simple, self-contained apps. If you need webhooks, background jobs or other server-side functionality, you will still host your own backend for those.
Where your app can appear in Shopify
| Surface | What it does |
|---|---|
| App Home | Your app's main page in the admin — settings, data, workflows |
| Admin UI extension | Custom cards and modals on product, order and customer pages |
| Checkout UI extension | Custom blocks at defined points in the checkout flow |
| Shopify Functions | Inject code into core logic such as discounts, shipping and payments |
| Post-purchase | Offer additional products after checkout |
| Customer accounts | Add functionality to customer account screens |
| Flow | Add triggers and actions to Shopify Flow automations |
| POS | Custom functionality in the point-of-sale app |
The list shows that "an app" covers far more ground than a single admin panel. Your need usually maps onto one of these surfaces, and writing a small extension exactly there is both cheaper and faster than standing up a full application.
Urgent: checkout.liquid support has ended
For stores that customised checkout with checkout.liquid or script tags, the timeline matters:
| Scope | Sunset |
|---|---|
| Information, shipping and payment steps | Unsupported |
| Thank you and Order status pages (Plus) | 28 August 2025 |
| Thank you and Order status pages (non-Plus) | 26 August 2026 |
That date has passed for non-Plus stores. If you still have a customisation running the old way, it is no longer working on the Thank you and Order status pages — order tracking, surveys, cross-sell or analytics scripts may have gone silently dead.
There are three routes forward: use a public app built with extensions, build (or commission) an extension-based custom app, or temporarily simplify checkout. A report in the Shopify admin lists your current checkout customisations; start your migration plan there.
The recommended approach is to plan the in-checkout and Thank you / Order status migrations together: you avoid maintaining two technology stacks, apply styling once, and work to a single date.
Constraints to build against
- Performance. An app must not reduce the storefront Lighthouse score by more than ten points. Measurement is weighted 43% collection page, 40% product page, 17% home page.
- Core Web Vitals. Built for Shopify status requires CLS of 0.1 or less and INP of 200 ms or less.
- Theme extension size. Theme app extensions have a 100 KB Liquid size limit; custom-distribution apps and those with Built for Shopify status can request an exception.
- Interface consistency. The Polaris design system makes the app feel like a native part of the admin.
These constraints are not arbitrary: an app that fails the performance requirements lowers your store's speed and therefore its conversion. We explain how the measurement works in our page speed article.
When not to build
- When theme settings or an existing app cover the need.
- When the requirement is not yet clearly defined — vague requirements are the most expensive cause of development cost.
- When it is a one-off data task; an export and import is usually enough.
- When nobody will own maintenance. An app is live software that needs updating as Shopify API versions change.
Conclusion
App development on Shopify offers a much wider middle ground than "write everything from scratch" versus "settle for an off-the-shelf app". Your need usually maps to a single extension, and a small extension written at exactly the right point is both faster to build and easier to maintain.
If you have any checkout customisation, put the checkout.liquid migration at the top of the list — the sunset date has passed and the failure mode is silent.
At Commerslab we build Shopify custom apps and extensions and run checkout migrations. See our Shopify app development service or get in touch to discuss your requirement.
Shopify's API versions, sunset timelines and platform requirements can change; check the customisation report in your admin and the current developer documentation before planning a migration.