Service 02 of 06
Shopify App Development
The logic a theme was never going to hold — custom and public apps, checkout and admin extensions, Functions and Flow.
See App Development pricing ↗Not sure this is the one you need?
Roughly a third of the app briefs we are sent do not need an app.
A metafield, a theme block or a Flow will often do it. One scope call establishes which, before anyone writes a line of code.
Book a scope callWho this is for
Who Shopify App Development is for
Something has to be true at the point of order, not the point of display.
Net pricing for one B2B customer and nobody else. A bundle whose components leave stock individually. A delivery date validated against a courier cut-off. Liquid renders; it does not decide.
You are paying for four apps and two of them overlap.
Subscriptions accumulate one urgent requirement at a time. Replacing three of them with one app you own is routinely cheaper by the second year, and always lighter on the product page.
Checkout is the one page nobody will let you touch.
Since checkout.liquid was retired, checkout changes are extensions and Functions — app-layer work. If a developer has offered to edit your checkout template, they are describing something Shopify removed.
The argument
When a theme stops being able to say no
Every Shopify store eventually meets a requirement the theme cannot hold. Not a design requirement — a logic one. A B2B customer who should see net pricing and nobody else should. A bundle whose components have to leave stock individually. A delivery date that has to be validated against a courier cut-off before the order is allowed through. A subscription that has to reconcile with an ERP that was specified in 2011.
These are not theme problems, and no amount of Liquid will make them theme problems. Liquid renders; it does not decide. The moment a requirement needs something to be true at the point of order rather than at the point of display, the work moves out of the theme and into the app layer — and that is the layer this page is about.
The merchants who arrive here have usually already tried the alternatives, in the order everyone tries them. First an App Store subscription that does eighty per cent of it. Then a second app to cover the rest, which conflicts with the first. Then a piece of theme code from a freelancer that works until the next theme update. By the time someone writes to us there are typically four apps loading on a product page, two of them doing overlapping jobs, and nobody in the business is certain which one owns the price the customer actually sees.
Custom app or public app
This is the single distinction worth getting right before anything else, because it changes the cost, the timeline and the risk profile of everything downstream.
A custom app is built for one store. It installs with a direct link, is never listed on the App Store, and is never reviewed by Shopify. It can use the same APIs, the same extension points and the same Functions as anything on the App Store. It ships in a fraction of the time because there is no listing, no review cycle, no billing integration, and no obligation to be comprehensible to a merchant who has never spoken to you.
A public app is a product. It installs via OAuth for any merchant, needs billing, needs to pass Shopify’s App Store review, and needs to keep working for people you will never meet. Building one is a reasonable commercial decision if distribution is the point — if the app is the business, or if it is a channel into an audience you want. It is an expensive way to solve a problem for one store.
Most of the briefs we are sent describe a custom app and ask for a public one, usually because “app” and “App Store” have become the same word. Establishing which one you actually need is the first thing the scope call does, and it routinely takes a third off the estimate.
Where the extension points are
Shopify’s customisation surface is wider than it was and considerably more structured. The parts that matter:
Checkout UI extensions are how checkout is customised now. Shopify retired
checkout.liquid for the checkout steps in August 2024 and for the Thank you and
Order status pages in August 2025. Extensions on the checkout steps themselves
require Shopify Plus; the Thank you and Order status pages are open to merchants
on other plans. If your store still runs checkout.liquid customisations, they
are on a surface Shopify no longer supports, and moving them is app work.
Shopify Functions replaced Shopify Scripts on the same 2025 date. They run discount logic, shipping and payment method customisation, cart transforms and cart and checkout validation — written in Rust or JavaScript, compiled to WebAssembly, executed by Shopify rather than by a server you rent. That is what makes them viable inside a price calculation: there is no network hop, so there is no latency to add. It also means real constraints on execution time and input size, which is why the technical design step exists before anyone writes code.
Admin UI extensions put your team’s tools inside the Shopify admin, where they already work, rather than in a separate dashboard nobody remembers to open.
Theme app blocks are how an app reaches the storefront without a script tag on every page. A merchandiser places the block, on the template that needs it, in the theme editor. Nothing loads anywhere else.
Flow covers the automations that need no code at all, and a serious share of what gets briefed as app work is a Flow that nobody had written yet.
How we build
The design step is written down and approved before application code is written. It names the extension points, the API scopes, the data model and the Shopify limits that will shape the build — because on this platform the limits are the design. An app that assumed synchronous inventory when the API is eventually consistent does not get fixed later; it gets rewritten.
Scopes are requested minimally and inventoried in writing. If an app asks for
write_customers, the document says which feature needs it. This matters more
than it sounds: scopes are the part of an app a security review will ask about,
and an app that asked for everything on day one cannot answer.
You get an install link in the first week. Not a demo, not a screen recording — the thing itself, in a development store, incomplete. It is the only reliable way to discover that the requirement everyone agreed on in the scope call is not quite the requirement the business has.
After launch, which is when apps actually get expensive
Shopify ships API versions quarterly and supports each one for a year. An app is not a delivered artefact; it is a standing commitment against a platform that moves. Extensions get deprecated. Scopes get split. Behaviours that were undefined become defined, and code that depended on the undefined behaviour stops working on a Tuesday.
We track the release notes that touch your app specifically and tell you before something breaks, not after. That is the part of this service that is worth paying for over a five-year horizon, and it is the part nobody puts in a proposal.
And the app is yours throughout. It lives in your Partner organisation. The source lives in your repository from the first commit. If you decide to take it in-house or hand it to someone else, there is nothing to extract and no conversation to have — which is the only honest test of whether a development partner was ever holding you hostage.
What we do
What Shopify App Development covers
- 01
Custom apps
Built for one store and installed by link. Never listed, never reviewed by Shopify, no other merchant's roadmap attached to it. This is the right shape for most of the work we do.
- 02
Public App Store apps
OAuth install, billing, App Store review, support and versioning. A product, not a project — we build it as one, including the parts that only matter on install number four hundred.
- 03
Checkout UI extensions
The supported way to change checkout since checkout.liquid was retired. Custom fields, upsells, delivery instructions, trust content, and the Thank you and Order status pages.
- 04
Admin UI extensions and app blocks
Interfaces where the merchandising team already works — inside the Shopify admin, and inside the theme editor as app blocks a non-developer can place.
- 05
Shopify Functions
Discounts, shipping and payment customisations, cart transforms and validation, running on Shopify's own infrastructure instead of yours.
- 06
Flow, webhooks and integrations
Automations, webhook handlers and the middleware between Shopify and the ERP, PIM, 3PL or CRM that has to agree with it.
What you get
Everything on this list is a thing you can open.
- A working app in your Partner organisation, not ours
- The source in a repository you own, with the commit history intact
- A deployment pipeline and versioned extension releases
- An API scope inventory — every scope requested, and why
- Webhook handlers, including the three mandatory compliance webhooks
- A runbook — install, uninstall, rotate credentials, roll back a release
- A written handover call, recorded
Technically
What a Vibhora app is actually made of.
- Framework
- Remix on Shopify's app template, Polaris in the admin, App Bridge for embedding
- API
- Admin GraphQL, webhooks with HMAC verification and idempotent handlers
- Extensions
- Checkout UI extensions, Shopify Functions, Flow triggers and actions
- Data
- Session storage you control, a migration history, and no merchant data leaving the region it arrived in
- Pipeline
- Shopify CLI, a development store per branch, and the app review checklist run before submission rather than after rejection
- When we say no
- If a theme section or an app already on the store does the job, we say so rather than quoting the build
Acceptance criteria, every app
- webhooks
- verified, idempotent, replayable
- API cost
- inside the leaky bucket at [XX]x load
- admin TTI
- < 2.0 s embedded
- uptime
- [XX.X] % monthly
- review
- built to Shopify's app requirements
An app that passes review and then falls over under a flash sale has met nobody's standard. Anything in brackets is set per project during scoping and written into the statement of work.
How it runs
The order matters more than the estimate.
- Week [1]
Scope call
One call, your store open on the screen. We establish what the app has to do, what it must never do, and whether an app is even the right answer — about a third of these calls end with a cheaper suggestion.
- Week [1–2]
Technical design
A short written design: extension points, API scopes, data model, and the Shopify limits that will shape it. You approve this before anyone writes application code.
- Week [2–N]
Build
Built against a development store, shipped in reviewable increments. You get an install link the week work starts, not the week it ends.
- Week [N–1]
Merchant testing
Your team uses it on real orders in a development store, against the edge cases your business actually has, before it goes near production.
- Week [N]
Launch
Install on the live store, or submit for App Store review if it is a public app. We handle the review correspondence and the rejections.
- Ongoing
After
Shopify ships API versions quarterly and deprecates on a schedule. We track the ones that touch your app and tell you before they break it.
The bracketed counts are filled from the real engagement range once three projects have been measured. The order is the commitment; publishing an invented timeline is the fastest way to lose the first scoping call.
The honest part
When you don't need an app
Roughly a third of the app briefs we are sent do not need one. A metafield and a theme block will do it. Flow will do it with no code at all. There is an App Store listing that already does it for a monthly fee smaller than a day of our time. An app is a permanent piece of infrastructure — it has to be maintained, it has to survive quarterly API versions, and it becomes yours to own. We would rather tell you that on the scope call than invoice you for finding out.
Image — to be added · 4:3
A real Shopify admin frame showing the lighter answer — a metafield, theme block or Flow automation — with merchant data removed and the decision legible at this crop.
Built with
The full stackTools and platforms
- Shopify
- Shopify Plus
- TypeScript
- JavaScript
- React
- Remix
- Preact
Questions
What people ask before they commission this.
What is the difference between a custom app and a public Shopify app?
A custom app is built for one store, installed with a direct link, and never listed on the Shopify App Store or reviewed by Shopify. A public app is listed, installs via OAuth for any merchant, needs a billing integration, and must pass Shopify's App Store review. If only your store will ever use it, build a custom app — it ships faster, carries no review risk, and has no other merchant's roadmap attached to it.
Do we need Shopify Plus to customise the checkout?
For the checkout steps themselves — information, shipping and payment — yes. Checkout extensibility on those pages is a Shopify Plus feature. Checkout UI extensions on the Thank you and Order status pages are available to merchants on other plans. If you are not on Plus and need to change what happens during checkout, the realistic levers are the cart and the post-purchase pages, not the checkout steps.
What replaced checkout.liquid and Shopify Scripts?
Checkout UI extensions replaced checkout.liquid, and Shopify Functions replaced Shopify Scripts. Shopify retired checkout.liquid for the checkout steps in August 2024 and for the Thank you and Order status pages in August 2025, and Scripts were sunset on the same 2025 date. If your store still carries either, it is running on customisations Shopify no longer supports, and migrating them is app work rather than theme work.
What language are Shopify Functions written in?
Rust or JavaScript, compiled to WebAssembly and executed on Shopify's own infrastructure rather than on a server you pay for. That is why a Function can run inside the discount or shipping calculation without adding network latency to it — and why a Function has hard limits on execution time and input size that shape what it can be asked to do.
Will an app slow our storefront down?
It depends entirely on whether it touches the storefront at all. An app that runs in the admin, in checkout, or as a Function adds nothing to your theme's page weight. An app that injects a script tag into every page does, and that is the pattern we avoid — anything the storefront needs from our apps ships as a theme app block the merchant places deliberately, on the templates that need it, and nowhere else.
Can you take over an app another developer built?
Usually, and it is a large share of what we are asked to do. We start with a paid review of the repository, the API scopes and the API version it is pinned to, then give you a written answer on whether it is worth keeping. Sometimes the honest recommendation is a rewrite, and we will say so with the reasons rather than quietly billing to maintain something structurally unsound.
What does App Store review involve?
Shopify reviews a public app against its listing requirements, its API and performance requirements, and its billing rules, and rejections on the first submission are common rather than exceptional. Build the review into the timeline rather than the launch date. We handle the correspondence and the resubmissions as part of the engagement.
Who owns the code?
You do. The app lives in your Shopify Partner organisation and the source lives in a repository you own, from the first commit rather than at handover. Nothing we build for you is hosted behind our own account, and nothing requires us to stay involved for it to keep running.
Often scoped together
Most of this work arrives with something next to it.
Shopify Theme Development
The surface most extensions render into, and the thing an app should not be doing.
Shopify Headless Development
When the front end, rather than the logic, is what has run out of room.
Website & App Audit
Whether you need an app at all is the first question, and this is the cheapest way to answer it in writing.
Tell us what Shopify will not do.
Describe the behaviour you need in a paragraph. We come back within a business day with whether it is an app, a Function, a Flow or a theme change — and what each of those would actually cost you.