Shopify app vs custom section: do you actually need an app?
Apps and custom sections solve different problems. Here is how to tell which one you are looking at before you install anything.
Key takeaways
- Apps are the right tool when you need a backend: stored data, subscriptions, review collection, emails, integrations or anything that runs after the page has loaded.
- A custom section is the right tool when the job is how the storefront looks and is laid out — it lives in your theme, has no monthly fee and loads nothing you did not write.
- Uninstalling an app does not always remove what it added to your theme, so audit your code after removing one.
- Many stores do best with both: an app for the data, a custom section for the presentation around it.
Somewhere in every Shopify store's life there is a moment where you want something the theme does not do: a comparison table, a countdown, a lookbook, a size guide, a row of trust badges. The App Store has an answer for almost all of them. So does a custom section. They are not interchangeable, and picking the wrong one costs you either money every month or a feature that cannot do what you need. This article is a fair comparison, including the cases where an app is clearly the better choice.
What an app and a custom section actually are
A Shopify app is software that runs on someone else's servers and connects to your store through Shopify's APIs. It can read and write your products, orders and customers, run logic when things happen, send emails, store its own data, and show things on your storefront. On Online Store 2.0 themes, the storefront part usually arrives as a theme app extension: app blocks and app embeds you switch on in the theme editor. The app's code stays outside your theme files.
A custom section is a single .liquid file in your theme's sections folder. It holds the markup, the styles, any small script it needs, and a {% schema %} that tells the theme editor which settings, blocks and presets it has. Once it is in your theme, you add it to pages like any built-in section. It runs on Shopify's own rendering, with the data Liquid already gives you. If you have never added one, how to add a custom section to Shopify walks through it.
Where apps genuinely win
It is easy to read a comparison like this and conclude apps are bloat. Many are not. Some jobs simply cannot be done in a theme file, because Liquid renders a page and stops. It has no database of its own, cannot run on a schedule, and cannot receive a webhook. These are app jobs:
- Subscriptions and recurring billing. Selling plans, renewals, skipped deliveries and customer portals need a backend and payment logic.
- Collecting reviews. Asking customers for a review after delivery, storing photos, moderating and syndicating them is data work. Displaying them can be a section; gathering them is an app.
- Email, SMS and marketing automation. Anything that sends a message when something happens.
- Loyalty points, referrals and gift programmes. Balances have to be stored and updated per customer.
- Integrations. Syncing with an ERP, a 3PL, a marketplace, an accounting tool or a translation service.
- Personalisation from your own data. Recommendations based on browsing history or purchase behaviour, built from data the app collects.
- Checkout and discount logic. Custom discount rules and checkout behaviour live in Shopify Functions and checkout extensions, which are delivered by apps.
If your feature is on that list, a good app is usually cheaper than building and maintaining the same backend yourself, and the monthly fee pays for something real: hosting, updates, support and the work of keeping up with Shopify's platform changes.
Where a custom section wins
A large share of storefront apps, though, do something different: they draw a layout. A tabbed product description, an image with hotspots, a before-and-after slider, a feature grid, a logo strip, an announcement bar with a timer, a FAQ accordion. Everything these need — products, collections, metafields, images, text — is already available to Liquid. Here a section has real advantages:
- No monthly fee. You pay once to have it built (or build it yourself), and then it is part of your theme.
- No third-party scripts. The section loads only what is inside it. There is no external script requesting data from another server before your layout appears.
- You own the code. It sits in your theme. If a vendor shuts down or changes its pricing, nothing on your storefront disappears.
- It matches your theme. It can use your theme's fonts, colours and spacing instead of an app's own styling that you then fight with CSS overrides.
- It is fully editable in the theme editor. A well-built section turns every heading, image, colour and link into a setting, so you never open the code to change copy. See how to make a Shopify section editable.
Performance and the code apps leave behind
Every script on a page has a cost: it has to be downloaded, parsed and run, and some of them block or delay what the shopper sees. Theme app extensions have improved this a lot, because Shopify controls how app blocks and embeds load and an embed can be switched off in the theme editor. Still, an app that renders its widget in the browser has to fetch its data after the page arrives, which can mean a visible gap or a layout shift while it fills in.
A Liquid section is rendered on Shopify's servers along with the rest of the page, so its content is in the HTML the browser first receives. That is not automatically fast — a section with an unoptimised 3 MB image is still slow — but you control every byte. Speeding up Shopify sections covers the details.
What happens when you uninstall
Apps built on theme app extensions are removed cleanly: their blocks and embeds go when the app goes. Older apps, and some current ones, worked by editing your theme files directly — adding snippets, {% render %} tags, script tags or CSS to theme.liquid and templates. Uninstalling the app does not necessarily undo those edits. The result is leftover code that still runs, sometimes still requesting a script that no longer exists.
Cost over time
The comparison is not "free versus paid". A section costs something up front — your time, a developer, a marketplace purchase or a tool that writes it — and very little afterwards. An app usually costs little or nothing up front and a fee every month for as long as you use it.
For a feature that needs a backend, the monthly fee is buying ongoing work, so comparing it with a one-off section is not fair. For a feature that only arranges content on a page, the monthly fee is mostly paying for the convenience of installing it — and that adds up over the years a store runs. Look at the apps you already pay for and ask, for each one: does it store, send or sync anything, or does it only display things Liquid could display?
There is also a maintenance cost to a section. If you change themes, a custom section usually moves across with little work, but it may need styling adjustments. If Shopify changes something, a section you own is yours to update. For most layout sections that is rare, but it is not zero.
A decision table
| What you want | Better fit | Why |
|---|---|---|
| Subscriptions, renewals, customer portal | App | Needs billing logic and stored data |
| Collect and moderate product reviews | App | Needs emails, storage and moderation |
| Display reviews in a custom layout | Both | App for the data, section for the design, if the app exposes it to Liquid |
| FAQ accordion, tabs, feature grid | Section | Pure layout using your own content |
| Countdown or announcement bar | Section | A small script and a few settings |
| Size guide, comparison table, lookbook | Section | Content you write, shown your way |
| Loyalty points or referrals | App | Balances per customer |
| Product recommendations from purchase history | App | Built from data the app collects |
| Related products from a collection or metafield | Section | Liquid can read collections and metafields |
| Sync with an ERP, 3PL or accounting tool | App | Integration work outside the storefront |
When to use both
The best setups often split the job. Let a review app collect reviews and write ratings to metafields, then show them with a section designed for your product page. Let a subscription app handle selling plans, and design the product page around it with sections. Keep the app for the part only an app can do, and keep the presentation in your theme where you control it.
Sections also work alongside app blocks. A section with a @app block type in its schema lets you drop app blocks inside your own layout, so a third-party widget can sit inside a design you built. Shopify section blocks explains how blocks work.
Getting a custom section without a developer
If you decided a section is the right fit, you have three routes: write the Liquid yourself, hire someone, or use a tool. Klorr is the tool route: you describe the section in plain English and it writes the complete file — markup, CSS, JavaScript and a {% schema %} with settings, blocks and presets — and checks it against a quality bar before you see it. You can attach a screenshot of a design you like, paste an existing section to fix it, and set how much of it is editable in the theme editor, up to Maximum. Try the Shopify Liquid code generator, or browse ready-made sections on the Klorr marketplace.
Either way, start with the question in this article: does this feature need a backend? Answer that honestly and the choice mostly makes itself.
Questions, answered
Do I need a Shopify app or can I use a custom section?
If the feature needs to store data, send messages, run on a schedule or connect to another service, you need an app. If it only changes how content on your storefront looks or is laid out, a custom section can usually do it with no monthly fee.
Does uninstalling a Shopify app remove its code?
Apps built on theme app extensions are removed cleanly with their blocks and embeds. Apps that edited your theme files directly may leave snippets, scripts or render tags behind. Check your theme code on a duplicate after uninstalling.
Are custom sections faster than apps?
Often, because a Liquid section is rendered on the server and loads no third-party scripts. It still depends on how the section is built: heavy images or scripts slow a section down just as they would an app.
Can I put an app block inside a custom section?
Yes. If the section's schema includes a block of type @app, you can add app blocks from installed apps inside it in the theme editor. That lets an app's widget sit inside a layout you control.
Can a custom section replace a review app?
A section can display reviews in any layout, but collecting reviews, emailing customers and moderating them needs an app. A common setup is an app for collection and a custom section for display.