๐งฑ Standalone Cart API
Every useCart
method has a standalone equivalent exposed on the client
returned by createShopifyClient
.
Ideal for API routes, server actions, or custom logic without React context.
๐ Create Your Shopify Clientโ
To use any standalone method, instantiate your client once:
- TypeScript
- JavaScript
import { createShopifyClient } from "@nextshopkit/sdk/server";
const client = createShopifyClient({
shop: process.env.NEXT_PUBLIC_SHOPIFY_STORE_DOMAIN!,
token: process.env.NEXT_PUBLIC_SHOPIFY_ACCESS_TOKEN!,
apiVersion: "2025-01",
enableMemoryCache: true,
defaultCacheTtl: 300,
enableVercelCache: true,
defaultRevalidate: 60,
});
import { createShopifyClient } from "@nextshopkit/sdk/server";
const client = createShopifyClient({
shop: process.env.NEXT_PUBLIC_SHOPIFY_STORE_DOMAIN,
token: process.env.NEXT_PUBLIC_SHOPIFY_ACCESS_TOKEN,
apiVersion: "2025-01",
enableMemoryCache: true,
defaultCacheTtl: 300,
enableVercelCache: true,
defaultRevalidate: 60,
});
๐งฐ Available Methodsโ
Each method is accessible directly via the client:
Method | Description |
---|---|
client.createCart() | Create a new cart |
client.getCart(cartId) | Fetch cart by ID |
client.addToCart(cartId, lines) | Add product(s) to cart |
client.removeFromCart(cartId, lineId) | Remove a line item |
client.updateCartItem(cartId, lineId, qty) | Change line quantity |
client.applyDiscount(cartId, code) | Apply discount |
client.removeDiscount(cartId) | Remove discount |
client.emptyCart(cartId) | Remove all items |
client.mergeCarts(source, destination) | Merge two carts |
client.updateBuyerIdentity(cartId, data) | Set user info |
client.updateCartAttributes(cartId, attrs) | Add custom fields |
๐ Examplesโ
๐ Create Cartโ
- TypeScript
- JavaScript
const cart = await client.createCart();
const cart = await client.createCart();
๐ฆ Add Productโ
- TypeScript
- JavaScript
await client.addToCart(cart.id, [
{ merchandiseId: "gid://shopify/ProductVariant/123", quantity: 2 },
]);
await client.addToCart(cart.id, [
{ merchandiseId: "gid://shopify/ProductVariant/123", quantity: 2 },
]);
โ Remove Productโ
- TypeScript
- JavaScript
await client.removeFromCart(cart.id, "gid://shopify/CartLine/456");
await client.removeFromCart(cart.id, "gid://shopify/CartLine/456");
๐ Update Quantityโ
- TypeScript
- JavaScript
await client.updateCartItem(cart.id, "gid://shopify/CartLine/456", 5);
await client.updateCartItem(cart.id, "gid://shopify/CartLine/456", 5);
๐๏ธ Apply Discountโ
- TypeScript
- JavaScript
await client.applyDiscount(cart.id, "SUMMER10");
await client.applyDiscount(cart.id, "SUMMER10");
๐งผ Empty Cartโ
- TypeScript
- JavaScript
await client.emptyCart(cart.id);
await client.emptyCart(cart.id);
๐ Merge Cartsโ
- TypeScript
- JavaScript
await client.mergeCarts("source-id", "destination-id");
await client.mergeCarts("source-id", "destination-id");
๐ค Set Buyer Infoโ
- TypeScript
- JavaScript
await client.updateBuyerIdentity(cart.id, {
email: "user@example.com",
countryCode: "FR",
});
await client.updateBuyerIdentity(cart.id, {
email: "user@example.com",
countryCode: "FR",
});
๐ท๏ธ Add Cart Attributesโ
- TypeScript
- JavaScript
await client.updateCartAttributes(cart.id, [{ key: "gift", value: "๐" }]);
await client.updateCartAttributes(cart.id, [{ key: "gift", value: "๐" }]);
โ Next: Types Reference โ
Description
Use standalone cart functions without CartProvider โ full control via client.* methods.