Concept

Headless ecommerce, without the lock-in.

Going headless swaps a theme you rent for a frontend you own. The trap is trading platform lock-in for integration lock-in — which is what a connector layer exists to prevent.

What headless actually means

A headless storefront is a separate application from the commerce backend. The backend keeps products, inventory, orders and payments, and exposes them over an API. The storefront renders the shopping experience and calls that API. Nothing about the shopper-facing pages is dictated by the platform's templating system.

You own the frontend

Layout, performance budget, framework and release cadence stop being the platform's decisions.

The backend keeps working

Admin, fulfilment, tax and payment integrations stay exactly where your team already runs them.

The cost is integration

Someone has to write and maintain the API layer. That is the part most projects underestimate.

The lock-in most headless projects walk into

A storefront that imports its platform's SDK throughout is portable in theory only. Every component that names a backend is a component that has to be rewritten to change one. The fix is boring: put the whole commerce surface behind one interface and let the platform-specific code live in a swappable package.

// every page, on every backend
import { CartService, ProductService } from '$lib/core/services'

// kitcommerce.config.ts — the only file that names a platform
export * as services from '@misiki/vendure-connector'

When headless is the wrong call

An honest answer is more useful than a pitch.

  • You have no frontend capacity. A hosted theme you can edit beats a custom app nobody maintains.
  • Your storefront is genuinely standard and the platform theme already fits.
  • You need launch-week speed above all and the platform's checkout is good enough.

Headless pays when the storefront is a differentiator, when performance matters commercially, or when you expect to outlive your current backend.

Start with your backend.

Clone it, point it at your API, and describe the store you want.