Skip to content

Commit a984cd2

Browse files
laugharnclaude
andauthored
fix(template): use title case for bundle and upsell headings (#372)
The bundle and complementary ("upsell") section headings were sentence case while every other PDP/cart heading (Product Details, Care Instructions, Shipping & Returns, You May Also Like, Specifications) is title case. Make them uniform: - product/cart "Bundle includes" → "Bundle Includes" - product "Available in bundles" → "Available in Bundles" - product "Pairs well with" → "Pairs Well With" - cart upsell "You might also like" → "You Might Also Like" Updates the PDP docs that quote these headings to match. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
1 parent cb21976 commit a984cd2

3 files changed

Lines changed: 9 additions & 9 deletions

File tree

apps/docs/content/docs/anatomy/pages/pdp.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,16 +70,16 @@ A single `BuyButtons` component renders identically on both mobile and desktop.
7070

7171
`bundle-components.tsx` renders Shopify's [bundle relationships](/docs/shopify/pdp#bundles) below the buy buttons:
7272

73-
- **Bundle includes** — a fixed bundle's component products, from `components` (`BundleComponents`).
74-
- **Available in bundles** — bundles containing the current product, collapsed to one link per bundle, from `groupedBy` (`BundleParents`).
73+
- **Bundle Includes** — a fixed bundle's component products, from `components` (`BundleComponents`).
74+
- **Available in Bundles** — bundles containing the current product, collapsed to one link per bundle, from `groupedBy` (`BundleParents`).
7575

7676
These are product-level facts (which products a bundle contains / which bundles a product belongs to), so they render **eagerly from the cached default variant in the static shell** rather than streaming in behind the variant query — no layout shift on load.
7777

7878
A customized bundle parent (`requiresComponents` with no fixed `components`) disables the buy buttons with a "Choose bundle items" label, since the generic storefront can't configure it. The bundle relationship arrays stay server-side; `BuyButtons` receives only a `requiresBundleConfiguration` boolean.
7979

8080
### Complementary products
8181

82-
`complementary-products.tsx` renders the merchant-curated "Pairs well with" set below the bundle relationships — Shopify's [complementary products](/docs/shopify/pdp#complementary-products) from `productRecommendations(intent: COMPLEMENTARY)`. These are distinct from the algorithmic related products below the fold (`intent: RELATED`): complementary products are deliberately chosen add-ons, so they sit beside the buy section like bundle relationships rather than in the footer grid.
82+
`complementary-products.tsx` renders the merchant-curated "Pairs Well With" set below the bundle relationships — Shopify's [complementary products](/docs/shopify/pdp#complementary-products) from `productRecommendations(intent: COMPLEMENTARY)`. These are distinct from the algorithmic related products below the fold (`intent: RELATED`): complementary products are deliberately chosen add-ons, so they sit beside the buy section like bundle relationships rather than in the footer grid.
8383

8484
Like bundle relationships, the section renders **eagerly into the prerendered shell** rather than streaming. Both recommendation surfaces — this set and the [related grid](#related-products) below the fold — come from a single cached (`use cache: remote`) `getProductRecommendationSets()` operation that fetches both intents in one aliased `productRecommendations` request and is tagged with both `complementary-{handle}` and `recommendations-{handle}`. Because both surfaces call it with the same arguments, they dedupe to **one** Shopify request; this section reads the `complementary` slice, baked into the static PPR/ISR document — there's no skeleton fallback and no layout shift on cached hits (a `Suspense` boundary would instead make it a streamed hole). It shows up to four products as thumbnail + title + price rows and renders nothing when none are configured.
8585

apps/docs/content/docs/shopify/pdp.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ Product recommendations on the PDP are powered by Shopify's recommendation API.
7171

7272
## Complementary products
7373

74-
Beyond the automatic recommendations above, the PDP shows a merchant-curated **"Pairs well with"** list near the buy section, powered by the Storefront API's `productRecommendations(intent: COMPLEMENTARY)`.
74+
Beyond the automatic recommendations above, the PDP shows a merchant-curated **"Pairs Well With"** list near the buy section, powered by the Storefront API's `productRecommendations(intent: COMPLEMENTARY)`.
7575

7676
Unlike the `RELATED` recommendations Shopify generates automatically, complementary products are **configured by hand** in the free [Shopify Search & Discovery](https://apps.shopify.com/search-and-discovery) app — open a product's **Product recommendations** settings and add its complementary items. With none configured for a product, the section renders nothing.
7777

apps/template/lib/i18n/messages/en.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
"adding": "Adding...",
6666
"addressPlaceholder": "Address will be added at checkout",
6767
"applyDiscount": "Apply",
68-
"bundleIncludes": "Bundle includes",
68+
"bundleIncludes": "Bundle Includes",
6969
"cartItemsLabel": "Cart items",
7070
"cartTotalIs": "Cart total is",
7171
"checkout": "Checkout",
@@ -116,7 +116,7 @@
116116
"updatingCart": "Updating cart...",
117117
"upsell": {
118118
"description": "Complete your order with these complementary products",
119-
"title": "You might also like"
119+
"title": "You Might Also Like"
120120
},
121121
"viewFullCart": "View full cart",
122122
"warningsTitle": "Your cart was updated"
@@ -229,14 +229,14 @@
229229
"addingQuantity": "Adding {quantity}...",
230230
"addingToCart": "Adding to Cart...",
231231
"addToCart": "Add to Cart",
232-
"availableInBundles": "Available in bundles",
232+
"availableInBundles": "Available in Bundles",
233233
"brand": "Brand",
234234
"breadcrumb": {
235235
"home": "Home",
236236
"toggleMenu": "Toggle menu"
237237
},
238238
"bundleConfigurationRequired": "Choose bundle items",
239-
"bundleIncludes": "Bundle includes",
239+
"bundleIncludes": "Bundle Includes",
240240
"buyNow": "Buy now",
241241
"buyWithShop": "Buy with",
242242
"color": "Color",
@@ -294,7 +294,7 @@
294294
"noImage": "No image",
295295
"officialStore": "Official Store",
296296
"outOfStock": "Out of Stock",
297-
"pairsWith": "Pairs well with",
297+
"pairsWith": "Pairs Well With",
298298
"quantity": "Quantity",
299299
"recommendations": "You May Also Like",
300300
"seeAllSpecs": "See all specs",

0 commit comments

Comments
 (0)