๐  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.