Shopify Apps, Custom Code, or Something In Between
One of the most common questions we hear from merchants is some version of this: "Should I install an app for this, or should I have someone build it custom?" The implied follow-up is usually "and which one is better."
The answer we give is usually some version of "both, and sometimes something in the middle."
Apps and custom code solve different problems. There's also a third option that most merchants don't know exists. The best Shopify stores use all three, in different places, for different things. The actual useful question isn't which to pick but how to tell which one fits which job.
We've been building apps and custom features for Shopify stores since 2014. We publish more than 15 apps on the App Store, and we also build custom apps and features for merchants who need something specific. So we've seen this trade-off from both sides, and the pattern is pretty consistent.
When an app is the right call
Apps make sense when the functionality needs ongoing maintenance. Anything integrated with external services, anything that depends on Shopify APIs that change regularly, anything that needs updates as the platform evolves. This covers more territory than people usually think.
The obvious category is anything touching checkout or the buy flow. Shopify updates checkout frequently, and custom code hooked into those areas tends to break with platform updates. The same goes for integrations with external services: email marketing, reviews, shipping carriers, payment processors, analytics platforms. These all require ongoing work as the external service evolves, and an app handles that work on the app publisher's side instead of yours.
Apps also make sense when the feature needs a settings panel, user permissions, or data storage. If that's what you're building, you're building an app anyway. Might as well use one that already exists.
And apps win for functionality that's genuinely hard to build. Subscriptions, bundles, multi-currency pricing, inventory management across locations. Building these from scratch is a significant engineering effort, and an existing app has usually already solved the edge cases you haven't run into yet. A good app publisher is also constantly releasing updates, adding features, and fixing bugs. Custom code just sits there. It works on day 500 exactly as well as it did on day one, which sounds fine until you notice the platform has moved on without it.
When custom code is the right call
Custom code wins for things that are visual, specific, or short-lived. A small layout tweak, a one-off campaign feature, a workflow adjustment unique to your store. Situations where installing a whole app would be overkill.
Visual and layout changes are the clearest case. Custom CSS or a Custom Liquid section is almost always lighter than installing an app for a design tweak. Changing how product prices display, moving a button, adding a custom section to the homepage — these are custom code jobs. Same goes for simple one-off logic. If you need a countdown timer just for Black Friday, or a single announcement bar for a specific campaign, a few lines of Liquid beat a full app.
Then there are the workflows unique to your business. Every store has some process that doesn't map cleanly to a standard app's configuration. Maybe it's how you tag orders, maybe it's a specific fulfillment step, maybe it's how you handle a category of customer differently. When the requirement is specific to your store, custom code is usually cleaner than trying to bend an app into doing something it wasn't designed for.
One more case worth mentioning: custom code is sometimes the right way to remove load from an existing app. If you have an app that's doing one small thing on every page when it only needs to work on one, a few lines of custom Liquid that handle that one thing can let you uninstall the app entirely. That's work that saves you money and speeds up the store at the same time.
The real cost of custom code is maintenance. It doesn't update itself. Future theme updates need to be applied manually or your edits get overwritten, and switching themes down the line means porting your changes. That's a cost that shows up gradually, not on day one.
How we actually decide
When a merchant asks us to build something, the first thing we check is whether an app already exists that does it well. If yes, that's almost always the answer. We'll recommend an existing app even when it's not one of ours, because the right answer matters more than which company gets installed. If an app exists but doesn't quite fit, it's worth asking whether it can be extended instead of replaced. A lot of apps have customization options, APIs, or hooks that let you build on top of them. That's often cheaper than a full custom build.
If nothing fits, then custom starts making sense. But before quoting custom work, we check one more thing: whether Shopify already handles it natively. This comes up constantly. Merchants ask for custom development to solve something Shopify does out of the box but they haven't set up yet. We'll point that out first, because free and native beats custom every time.
The one place we don't deliberate much is visual and layout changes. That's always custom Liquid or CSS. Installing an app for a design tweak adds scripts and complexity for something that should be twenty lines of theme code.
A middle option most people don't know about
There's a third option that rarely gets mentioned because almost nobody offers it: a custom app, built for your store specifically, but maintained the way a public app is.
The situation comes up all the time. A merchant finds an app that covers most of what they need, but there's a specific behavior that only makes sense for their store. Maybe it's how discounts interact with wholesale customers. Maybe it's a fulfillment rule that depends on data the standard app doesn't read. The existing app gets you 80% there. The usual advice at that point is to live with the 80% or have a developer drop some custom code into your theme.
We go a different route. We build a dedicated app for the store, hosted on our infrastructure. Shopify API changes, security updates, compatibility with new themes, performance work — we handle all of that the same way we handle it for our public apps. The difference is that this one was built to fit one specific store's workflow.
That's our custom apps service. The merchant gets exactly the functionality they need, and they don't inherit the maintenance problem that comes with custom theme code.
Most development shops don't work this way. They'll build custom code and hand it off, which means the next time Shopify changes something fundamental, you're calling them back to figure out what broke. If we build it, we maintain it.
The most common mistake
It's not installing too many apps or writing too much custom code. It's losing track of what's in the store already.
Merchants install an app to try it, decide they don't want it, and either uninstall it or forget it's there. Even after uninstallation, some apps leave snippets in the theme code that keep loading on every page. Over time, this accumulates into real performance overhead, and merchants wonder why their store feels slow when they "don't even have that many apps installed."
Before deciding between apps and custom code for something new, audit what you currently have. Open your theme, look at your script tags, identify what's loading and whether it's actually needed. The forgotten stuff is where the bloat lives. Removing it usually does more for your store's performance than whatever new optimization you were considering.
If you're not sure where to start, we do store audits that include an app and code review. We'll tell you what's loading, what's necessary, and what can be removed. And if you need something built — whether it's a light custom tweak or a full custom-maintained app for your store — we do that too. Same team, same perspective, whether the right answer is an app recommendation, a bit of custom code, or a dedicated app built and maintained for you.
What most successful stores actually look like
A well-run Shopify store typically has somewhere between 5 and 15 apps, plus a small layer of custom tweaks in the theme for the things that make the store feel specifically like yours. That's the pattern we see across thousands of stores we've worked with.
Stores running 30+ apps usually have bloat and slow pages. Stores with zero apps and everything custom-coded usually have maintenance debt that catches up with them when Shopify changes something fundamental. Both extremes cost more than they save.
The middle, where most successful stores live, isn't a formula. It's the result of someone paying attention over time and actually reviewing the stack every once in a while instead of just adding to it.