diff --git a/src/components/seo/ProductGridCard.tsx b/src/components/seo/ProductGridCard.tsx
index 970ee32fb..42c702f55 100644
--- a/src/components/seo/ProductGridCard.tsx
+++ b/src/components/seo/ProductGridCard.tsx
@@ -20,8 +20,21 @@ export function ProductGridCard({ product }: { product: LandingProduct }) {
const isMerchantOffer =
product.href.startsWith("http://") || product.href.startsWith("https://");
const detailUrl =
- product.productUrl ||
- `/search?q=${encodeURIComponent(product.name)}`;
+ product.productUrl || `/search?q=${encodeURIComponent(product.name)}`;
+
+ function handleMerchantClick(e: React.MouseEvent) {
+ e.preventDefault();
+ e.stopPropagation();
+ window.open(product.href, "_blank", "noopener,noreferrer");
+ }
+
+ function handleMerchantKeyDown(e: React.KeyboardEvent) {
+ if (e.key === "Enter" || e.key === " ") {
+ e.preventDefault();
+ e.stopPropagation();
+ window.open(product.href, "_blank", "noopener,noreferrer");
+ }
+ }
return (
{isMerchantOffer ? (
- e.stopPropagation()}
- className="inline-flex items-center rounded-full bg-amber-700 px-3 py-1.5 text-sm font-semibold text-white shadow-sm transition-colors hover:bg-amber-800"
+
Buy at {product.merchant}
-
+
) : (
View details
diff --git a/src/components/seo/SeoLandingPage.tsx b/src/components/seo/SeoLandingPage.tsx
index f71522eeb..97194fba2 100644
--- a/src/components/seo/SeoLandingPage.tsx
+++ b/src/components/seo/SeoLandingPage.tsx
@@ -79,13 +79,10 @@ function buildRefreshedLabel(config: SeoLandingPageConfig, products: LandingProd
return `Updated ${formatted}`;
}
- // No live products with a timestamp — use the build/date of render.
- return `Updated ${new Date().toLocaleDateString("en-US", {
- month: "long",
- day: "numeric",
- year: "numeric",
- timeZone: "UTC",
- })}`;
+ // No live products with a timestamp — use a stable, deterministic label.
+ // Relying on new Date() here produces different text on the server and client,
+ // which triggers React hydration mismatches (Minified React error #418/#422).
+ return "Live prices updated regularly";
}