๐ CartProvider
Setup
The CartProvider
wraps your app and provides cart state to all child components via React Context.
๐ฆ Installationโ
- TypeScript
- JavaScript
import { CartProvider } from "@nextshopkit/sdk/client";
import { createShopifyClient } from "@nextshopkit/sdk";
const client = createShopifyClient({
shop: process.env.NEXT_PUBLIC_SHOPIFY_STORE_DOMAIN!,
token: process.env.NEXT_PUBLIC_SHOPIFY_ACCESS_TOKEN!,
apiVersion: "2025-04",
});
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="en">
<body>
<CartProvider client={client}>{children}</CartProvider>
</body>
</html>
);
}
import { CartProvider } from "@nextshopkit/sdk/client";
import { createShopifyClient } from "@nextshopkit/sdk";
const client = createShopifyClient({
shop: process.env.NEXT_PUBLIC_SHOPIFY_STORE_DOMAIN,
token: process.env.NEXT_PUBLIC_SHOPIFY_ACCESS_TOKEN,
apiVersion: "2025-04",
});
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
<CartProvider client={client}>{children}</CartProvider>
</body>
</html>
);
}
โ๏ธ Configuration Optionsโ
The CartProvider
accepts optional configuration:
<CartProvider
client={client}
config={{
persistCartId: true, // Save cart ID to localStorage (default: true)
storageKey: "nextshopkit-cart-id", // Custom localStorage key
autoCreateCart: true, // Auto-create cart on mount (default: true)
}}
>
{children}
</CartProvider>
๐ Environment Variablesโ
For client-side cart operations, you'll need public environment variables:
NEXT_PUBLIC_SHOPIFY_ACCESS_TOKEN=your-storefront-access-token
NEXT_PUBLIC_SHOPIFY_STORE_DOMAIN=your-store.myshopify.com
Security Note
Only use NEXT_PUBLIC_
prefixed variables for client-side cart operations. Never expose admin tokens or sensitive credentials.
๐งช Next Stepsโ
Once the provider is set up, you can use the useCart()
hook in any child component:
import { useCart } from "@nextshopkit/sdk/client";
function AddToCartButton({ productId }: { productId: string }) {
const { addProducts, loading } = useCart();
return (
<button
onClick={() => addProducts([{ merchandiseId: productId, quantity: 1 }])}
disabled={loading}
>
Add to Cart
</button>
);
}
โก๏ธ Learn more about using the cart hook โ
Description
Set up the CartProvider component to manage cart state across your React application with @nextshopkit/sdk.