Shopify Theme vs Custom App: What Should Agencies Choose?
A client brings a requirement, and someone on the team has to decide: is this a theme change, or does it need a custom app? Getting that call wrong in either direction costs real time and money — over- building a simple request into an app, or trying to force something into Liquid that was never going to hold up. This guide walks through how to make that call deliberately.
The Real Question to Ask First
Before comparing cost or timeline, the question that actually decides this is: does the logic need to exist independently of the storefront theme? If the requirement is entirely about how something looks or behaves on the storefront — layout, content blocks, on-page interactivity — it almost always belongs in the theme. If the requirement needs to run without a browser open, talk to a system outside Shopify, or be reused identically across more than one store, it's pointing toward a custom app. Most of the wrong calls we see come from skipping this question and jumping straight to “how do we build this,” instead of “where should this logic actually live.”
When Theme Customization Wins
Theme-level work — custom sections, templates, and Liquid logic — is almost always faster and cheaper to ship, because it's building inside a system Shopify already provides rather than standing up a separate one. It's the right call whenever the requirement is fundamentally about presentation, content, or storefront behavior that Shopify's theme architecture already supports.
Example scenarios that belong in the theme:
- A merchandising request like a custom product bundle builder that only needs to change what's displayed and added to cart — no new data storage, no logic that has to run outside a page load.
- A redesigned homepage with new modular sections the merchant can rearrange themselves in the theme editor.
- Conditional content — different banners, upsells, or layout by collection, tag, or customer segment — driven by metafields and Liquid conditionals.
- A size chart, shipping estimator, or product comparison table that only needs data already available on the product or theme settings.
Our Shopify customization work covers most of this category — extending an existing theme without a rebuild.
When a Custom App Is the Right Call
A custom app makes sense once the requirement needs something a theme structurally can't provide: logic that runs independent of a storefront page load, its own data storage, authenticated access to Shopify's Admin API, or reuse across more than one store without duplicating code. It costs more and takes longer because it's a separate piece of software — but for the right requirement, there's no theme-level workaround that holds up.
Example scenarios that need an app:
- A loyalty or rewards program that needs to track points across sessions, devices, and purchases — data that has to live somewhere durable, not just in the browser.
- Anything syncing with an external system — an ERP, a PIM, a custom pricing engine — which needs standalone logic to call APIs, handle webhooks, and run on a schedule independent of any storefront visit. See our API integration checklist for what that scoping looks like.
- Custom checkout logic on Shopify Plus that goes beyond what checkout UI extensions or Shopify Functions support natively.
- A tool meant to be installed across multiple merchant stores — an embedded admin app distributed once and reused, rather than rebuilt per store.
Cost & Timeline Tradeoffs
Theme changes are generally quicker to scope and build because the surface area is contained to the storefront and the Shopify admin's existing theme editor. A custom app adds real overhead on both ends: more time upfront to design the data model and API surface, and more time on an ongoing basis for hosting, monitoring, and keeping pace with Shopify API version updates after launch. Neither path is inherently the “expensive” one — the mistake is applying app-level effort to a theme-level problem, or trying to stretch a theme past what it can structurally support. Our guide on estimating a Shopify project goes deeper on how these cost drivers stack up during scoping.
A Quick Decision Framework
When a new requirement lands, run it through these questions in order. The first one that's clearly “yes” usually settles it:
- Does it need to run, or store data, independent of a storefront page load? If yes — app.
- Does it need to talk to a system outside Shopify on an ongoing basis? If yes — app.
- Does it need to be reused identically across multiple stores? If yes — app.
- If none of the above apply — it's almost certainly a theme customization, and should be scoped and quoted as one.
If a requirement is still ambiguous after that, it's worth a second opinion before it goes into a client-facing quote — a wrong call here is expensive to unwind mid-project.
Not sure which path a specific requirement needs?
FAQ
Have a Shopify Project Your Team Can't Handle Right Now?
Send us the details — designs, a client brief, or an existing store that needs work — and we'll review it and get back to you with a technical scope.