From 81358b0815248fb3ed7650a0d4eae1ccaa1bd986 Mon Sep 17 00:00:00 2001 From: "Najjar\\NajjarV02" Date: Mon, 19 Oct 2026 14:18:46 +0400 Subject: [PATCH] fix(checkout): skip loadStripe when no publishable key is set loadStripe(undefined) threw "Expected publishable key to be of type string" on every page that imports CheckoutOverlay. Production sets the key, so live behaviour is unchanged. Co-Authored-By: Claude Opus 5.5 --- src/components/CheckoutOverlay.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/CheckoutOverlay.tsx b/src/components/CheckoutOverlay.tsx index e2ffbdb..e4bdb3b 100644 --- a/src/components/CheckoutOverlay.tsx +++ b/src/components/CheckoutOverlay.tsx @@ -9,7 +9,10 @@ import { PaymentStep } from './checkout/PaymentStep'; import { ReviewStep } from './checkout/ReviewStep'; import { ConfirmationStep } from './checkout/ConfirmationStep'; -const stripePromise = loadStripe(process.env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY!); +// Without a publishable key (local builds), loadStripe throws on every page that +// imports this module. Elements accepts null and the payment step stays empty. +const publishableKey = process.env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY; +const stripePromise = publishableKey ? loadStripe(publishableKey) : null; const STEPS: { id: CheckoutStep; label: string }[] = [ { id: 'shipping', label: 'Shipping' }, -- 2.47.3