Project
- Written scope before any code
- A named engineer for the duration
- Weekly written progress, not status calls
- Best for a build with a clear finish line
Not a marketplace profile and not a rotating pool. The same engineers who build and maintain five published Shopify apps, available on contract, retainer or by project.
Most Shopify hiring goes wrong before the interview. The job is scoped as "a Shopify developer" when what is actually needed is a theme specialist, an app engineer, or someone who can do both — and those are different people. This page is about telling them apart before you commit.
"Shopify developer" covers at least four distinct skill sets. Hiring the wrong one is the most common and most expensive mistake in this market — the work looks similar from the outside and is not similar at all.
| Your situation | Who you need |
|---|---|
| The storefront needs to look and behave differently | A Shopify theme developer. Liquid, Online Store 2.0 sections, the theme editor. Someone who thinks in merchandising as much as code. |
| You need functionality Shopify does not have | A **Shopify app developer** — see Shopify app development. OAuth, webhooks, the Admin API, billing, App Store review. A different discipline from theme work, with a different failure mode. |
| Shopify has to talk to your ERP, PIM or warehouse | A full-stack developer with Shopify experience. The hard part is rarely Shopify — it is the system on the other side and the sync between them. |
| The storefront is slow and nobody knows why | A performance-focused theme developer. This is usually a two-week engagement, not a hire — why storefronts load late. |
| You need all of it, occasionally | A retained team rather than an individual. Most brands under $10m do not have enough continuous work to keep one specialist busy, let alone three. |
| You have a developer and they are overloaded | Augmentation. Someone who works inside your repo, your process and your standards rather than running a parallel project. |
Three ways to work with us
Most Shopify work does not need a full-time hire, and most agencies will not tell you that. Pick the shape that matches the work rather than the one that matches a contract.
Project
Retainer
Augmentation
Rates depend on the engagement and are quoted after the technical call — not before it, because a number produced by guessing is either padded or wrong.
Every engineer here works across client projects and our own published apps. That is deliberate — running your own software on the App Store teaches things client work never does, starting with what breaks at 2am.
Every point below is something we have been asked to promise by a client who had been burned by an agency that did not.
From first message to first commit
No sales process. The first conversation is technical, because it has to be — we cannot scope work we do not understand.
The stack, grouped by where it does its work
Not a badge wall. Four layers — the Shopify platform, the extension surfaces, the application behind it, and the data underneath — because a Shopify developer works in all four and the interesting problems live where they meet.
Liquid, Storefront API, Admin GraphQL, webhooks
The storefront is Liquid, CSS and JavaScript. Everything behind it is the Admin GraphQL API and webhooks. We work against the current API version rather than a pinned one — deprecations land on a date, not on an upgrade.
Theme, checkout and post-purchase
Theme app extensions for the storefront, checkout UI extensions and post-purchase extensions where the platform allows them. Never script tags — Shopify stops running those on 1 March 2027.
extensions/checkout-ui/src/Checkout.tsxNode, Remix, TypeScript, React
Shopify's own app frameworks with Polaris and App Bridge, so an embedded app behaves like part of the admin. Next.js and Tailwind for storefronts and custom applications around the store.
const { admin } = await authenticate.admin(request);Postgres, MongoDB, Prisma, Redis, RabbitMQ
Relational where the shape is stable, document where it evolves. Redis for caching and rate limits, RabbitMQ for the work a webhook must not do inline.
await queue.publish('inventory.sync', { shop, sku });Still deciding?
Send us the store URL and what you are trying to do. If the honest answer is that you do not need to hire anyone, we will tell you that instead.
Tell us what you need
A paragraph is enough. Store URL, what you need built or fixed, and any deadline. A developer reads it and replies within one business day.
