Most Shopify builds break revenue in places nobody checks.
Shopify Development Guide: Themes, Apps, Functions & Headless
A practical map of where to build what on Shopify and Shopify Plus — when to use a theme section, when to write a Shopify Function, when to ship an app, and when headless is worth it.
Updated May 7, 2026
We typically work with Shopify and Shopify Plus stores doing $500k+ in annual revenue.

Shopify Development Guide: Themes, Apps, Functions & Headless
Shopify gives you four places to write code. Picking the wrong one is the single most expensive mistake we see on audits. Here's how we decide.
Themes (Liquid + Online Store 2.0)
- Use for: storefront UI, content, merchandising, anything tied to a page.
- Strengths: Fast to ship, native performance, marketing can edit sections without devs.
- Limits: Can't modify checkout (that's Functions/UI extensions), can't persist custom data structures (that's metafields/metaobjects).
Shopify Functions (Plus & non-Plus)
- Use for: discount logic, shipping/payment customization, cart and checkout validation, fulfillment routing.
- Strengths: Run inside Shopify's infrastructure, milliseconds, no app server to maintain.
- Limits: Function-specific APIs, sandboxed runtime (Wasm). Not for arbitrary backend logic.
Apps (Remix + Shopify CLI)
- Use for: admin UI, integrations with external systems, async jobs, anything that needs a database or background worker.
- Strengths: Full backend, OAuth, webhooks, billing. Can be private (your store only) or public.
- Limits: Performance overhead — keep storefront-rendered app blocks lean.
Headless (Hydrogen / Next.js + Storefront API)
- Use for: brands with content velocity needs, multi-region/multi-store complexity, sub-1.5s LCP requirements.
- Strengths: Total UI freedom, edge caching, better DX for senior frontend teams.
- Limits: You re-implement what theme gives you for free. Not a fit for most brands under $5M.
Quick decision tree
- "I need to change a PDP" → theme section.
- "I need a discount no app supports" → Shopify Function.
- "I need to sync inventory with my ERP" → app (private) or middleware.
- "I need 100% control over storefront UI" → headless (only if you can staff it).
We build across all four layers for Shopify and Shopify Plus brands. Get a quote.
By early 2026, the Shopify development landscape has fully transitioned away from legacy Ruby-based scripting toward a logic-at-the-edge model. With the final deprecation of Shopify Scripts on August 28, 2025, Shopify Functions have become the universal standard for back-end commerce logic. These WebAssembly (Wasm) modules now handle complex logistics like fulfillment routing and high-volume discount engine modifications, operating at a scale that previously required dedicated middleware. Following a record-breaking 2025 BFCM where Shopify processed over $12 billion in GMV, the emphasis for developers has moved from "building features" to "optimizing latency," particularly as Checkout Extensibility reaches 100% adoption among Plus merchants.
The introduction of the Model Context Protocol (MCP) and agentic commerce features has further expanded the definition of Shopify development. High-growth brands are increasingly utilizing Hydrogen—Shopify’s React-based framework—hosted on Oxygen to build sub-second storefronts that integrate directly with these AI models. Headless is no longer a purely aesthetic choice; it is a performance strategy for brands managing multi-store international footprints. As we move through Q1 2026, the convergence of Metaobjects for structured data and Shopify Functions for logic means that the "Liquid-first" approach is reserved for content orchestration, while the core business engine lives in the Shopify-hosted edge environment.
Frequently asked questions
Are Shopify Scripts still supported in 2026?
Shopify Scripts were officially deprecated on August 28, 2025. All custom cart and checkout logic must now be migrated to Shopify Functions. Unlike Scripts, which were Ruby-based and limited to Shopify Plus, Functions are written in languages like Rust or JavaScript (compiled to Wasm) and offer significantly better performance and reliability during high-traffic events like BFCM.
What is the difference between Hydrogen and Oxygen?
Hydrogen is Shopify's preferred framework for headless commerce, built on Remix and optimized for the Storefront API. Oxygen is Shopify's global hosting platform for Hydrogen storefronts. Together, they eliminate the need for third-party hosting (like Vercel) and provide a tighter integration with Shopify’s data layer, reducing the 'headless tax' or the overhead of managing separate infrastructure.
When should I use a Shopify Function instead of a full App?
Shopify Functions are ideal for logic that needs to run within the core checkout flow, such as custom discounts, shipping rates, or validation rules. Apps should be used when you need a persistent database, a custom user interface in the Shopify Admin, or long-running background tasks. If your logic only needs to modify the cart or checkout behavior without extra data storage, a Function is the more performant choice.
What role do Metaobjects play in modern Shopify development?
Metaobjects allow developers to define custom data structures (like 'Designer Profiles' or 'Technical Specs') directly in Shopify. They are more powerful than Metafields because they can be managed as distinct entities with multiple fields and can be linked to products, collections, or customers. They are the standard for managing complex content without needing an external Headless CMS.
Further reading
Keep reading
Related resources

Custom Shopify Solutions for Established Brands
Five places where off-the-shelf Shopify stops scaling — and the custom solutions we build for established DTC brands on Shopify and Shopify Plus.

The Shopify Store Setup Playbook for Serious DTC
A pre-launch checklist for established brands: catalog, theme, payments, shipping, tax, analytics, and the integrations you actually need on day one.

Building a Personalized Product Recommender in Shopify Liquid
A Liquid-based product recommender that doesn't need an app, doesn't slow the PDP, and uses real signals — order history, current cart, and product metafields.
