Of the 26 backends Svelte Commerce connects to, Vendure ties with Litekart for the highest coverage: 39 of 43 services wired to a real endpoint. That is not an accident of effort — it is what a well-designed GraphQL Shop API buys you.
Why Vendure scores so well
Vendure's Shop API is a single, coherent, typed surface. Catalogue, cart (its Order in the active state), customer, address, payment method and order history are all reachable through one schema with consistent conventions. There is no split between "the REST API for products" and "the other API for cart" that plagues some platforms — a distinction that costs WooCommerce real coverage, where cart lives only in the Store API namespace while products live in wc/v3.
Setup
Three steps. Install the connector:
$ npm uninstall @misiki/litekart-connector
$ npm i @misiki/vendure-connectorPoint the config at the override module — not the raw connector, for the reason below:
// kitcommerce.config.ts
export * as services from './src/lib/core/connectors/vendure'And set the Shop API endpoint:
# .env
PUBLIC_VENDURE_API_URL=https://your-shop.example/shop-apiThat variable is already handled — src/lib/core/connectors/init.ts branches on it at boot and calls storeService.setBaseUrl(), which writes the static shared by every service. Both hooks run it: the server hook for SSR, the client hook because in production the browser has to reach the public API URL too.
Why an override module
This is the part worth understanding before you debug it at 2am.
The Vendure connector, like most of the non-Litekart connectors, was written against the same service interface as the Litekart reference — and a few of those services still call Litekart REST endpoints for things Vendure has no equivalent of: store metadata at /api/stores/public-details and CMS pages at /api/pages/*. With no Litekart API behind them, those requests fail. The store lookup failure in particular is fatal, because both the hooks and the root layout require store details before anything renders.
The override at src/lib/core/connectors/vendure.ts re-exports the whole connector and replaces just those services with static implementations. Store identity — name, logo, currency, menus, theme variables — then resolves from static config:
src/lib/core/connectors/default-store.json (defaults)
merged under
kitcommerce.config.ts default export (your overrides)Until you set that default export, the site shows the default store name, "Test". That is the single most common "why does it say Test" support question.
What you get
Cart, checkout and auth are all wired and working. The four services short of full coverage are the CMS-shaped ones that Vendure does not claim to provide — which is the correct outcome, not a gap to paper over.
The full guide, including troubleshooting and per-service behaviour, is in docs/VENDURE.md.