App versus Custom code

Hi,
I want to know when you prefer using the Shopify app versus building the same functionality with Liquid, JS, or Shopify APIs?

most of the time using custome code is better specially usng ai

Depends on what it is. If it’s a section or block, custom code is much better. Like a “free shipping bar”. There are apps, but it’s really not much work to do it with Sidekick or even Cursor. Keep it internal within the theme.

On the other hand, something like a loyalty program, internal is just not going to be good enough. You’d have to create metafields, you can’t do much on the customer account pages, it’s just better and easier to get an app.

And then there’s the diy apps. Sidekick app creator for simple admin stuff like bulk meta description editor or shipping profile manager.

Finally things you can put in a Cursor-created desktop app but hook into Shopify with API (dev dashboard). Something like a charge-back defense packet builder, or a qr code generator and tracker. Things that don’t need to be on admin. I’d even say a meta description/alt text generator app on desktop so you could get a Gemini API key for AI generation, since Sidekick app doesn’t have that capability.

Hi @olivianewuser123,

It usually depends on how complex the functionality is and how much ongoing maintenance you want. For something that requires product customization or advanced product options, using an app can be more practical than building everything from scratch with Liquid or JavaScript.

For example, Inkybay – Product Personalizer can handle product options such as color/image swatches, dropdowns, radio buttons, checkboxes, text fields, and file uploads. It also supports quantity discounts and custom product personalization with live preview through the Design Lab. This saves you from developing and maintaining the underlying functionality yourself.

I’d generally consider custom Liquid/JS or Shopify APIs when the requirement is very specific and the existing apps don’t provide the behavior you need. If an app already covers the requirement, though, it can be a simpler option since updates, maintenance, and support are handled for you.

If it is front end only functionality, then can you try building your own.

If it has a bit of backend, see if you can do it with Shopify Flow.

If you can’t use Shopify Flow and it is quite backend heavy, prob app is a better choice.

Hey @olivianewuser123, one angle not covered above: anything hardcoded into theme.liquid/sections lives inside that theme, so it’s gone the moment you switch themes or a major update resets things. An app, even a small private one hitting the Admin/Storefront API, isn’t tied to the theme and survives a redesign. So if it’s a quick visual tweak, custom code is fine, but for logic you want to keep long-term, lean app or a Shopify Function even when custom code could technically do it today.

Hello there @olivianewuser123
Usually I try and rely on the native Shopify features or use Liquid for store functionality when it is mainly a matter of how the store looks/theme behavior. JS is well-suited for client side behaviour but when the process requires more in-depth access to data, automation, or integration with another system, the Shopify APIs are better.

While the soap is maintained differently. When you can get the function reliably natively out of Shopify, I prefer that to custom code anyhow. Custom development is most effective when the need is specific enough that the native options won’t realistically cut it.

I usually build it myself when the behavior is simple, tied to the theme, and I’d be annoyed if I had to keep paying for it forever.

I go with an app when it needs its own admin, data storage, permissions, or anything that has to keep working cleanly after theme changes, because that’s where custom code becomes an ongoing job.

A good test is, if I can describe the whole thing in one sentence and it only touches the storefront, I’ll usually build it. If it needs records, rules, reporting, or staff to manage it later, I’d rather use an app or Flow.