Generated by DocAgent — automated codebase documentation analysis. Based on analysis of 3 screens. Subject matter expert review is recommended before distribution.
April 19, 2026
QA Regression Checklist
Application: commerce Document Title: QA Regression Checklist Date: April 2026
1. Overview
This document is a pre-release regression verification checklist for the commerce web application. Its purpose is to provide QA engineers with a complete, independently executable set of checks that can be performed before every release to verify that documented screen functionality is working correctly. Each check item is derived directly from the technical screen documentation and is scoped to observable, testable behaviors.
Scope: This checklist covers all testable behaviors documented for the five assessed screens: page load states, conditional rendering, business rule outcomes, navigation, error handling, access control, data display, and accessibility. Excluded from scope are: undocumented screens, backend-only logic within lib/shopify service functions, performance and load testing, child component internals not described in the screen documentation (e.g., Gallery, ProductDescription, Carousel, ThreeItemGrid internal behavior), and CI/CD pipeline verification.
Coverage: This QA Regression Checklist covers 5 screen(s) of the commerce application. Screens assessed: Home (/), Search (/search), Search Detail (/search/[collection]), Product Detail (/product/[handle]), and Item Detail (/[page]). Check items derived from screens not included in the assessed documentation are outside the scope of this document. This document reflects a partial view of the application — screens such as cart, checkout, account, and header/navbar are not assessed here.
Disclosure: Generated by DocAgent — automated codebase documentation analysis. Subject matter expert review is recommended before distribution.
Methodology: Check items are derived from documented interactions, validations, error states, conditional rendering logic, and business rules described in the per-screen technical documentation. Priority is assigned using risk-based testing: items that protect core user workflows or data integrity are P1; items that affect significant user experience or secondary workflows are P2; cosmetic, edge-case, and accessibility-gap items are P3.
How to use this document: Execute all P1 items for every release. Execute P1+P2 for major releases. Execute all items quarterly or after major refactors. Mark each item Pass (P), Fail (F), or Skip (S) with tester initials and date. For any Fail, log a defect ticket ID in the notes column.
2. Execution Instructions
Before starting:
Confirm the test environment is deployed and accessible.
Confirm test accounts exist if needed (note: all documented screens are publicly accessible — no authenticated test accounts are required for this checklist).
Confirm Shopify test data is seeded: at least one published collection, at least one product with multiple variants and images, at least one product with no featured image (for edge-case checks), at least one valid Shopify page (e.g., /about), and at least one collection with zero products.
Confirm the test environment's Shopify store has at least one product tagged with HIDDEN_PRODUCT_TAG for Product Detail indexability checks.
[Not documented — WHO: QA lead or backend engineer; WHAT: What is the exact string value of HIDDEN_PRODUCT_TAG in the test environment, and what is a known product handle that carries this tag?; WHERE: Insert in the Steps column of RC-062 and RC-063]
[Not documented — WHO: QA lead; WHAT: What are the valid sort slug values defined in the sorting constant array (e.g., price-asc, price-desc, trending)? A complete list is needed to execute sort-related checks.; WHERE: Insert in the Steps column of RC-010, RC-011, RC-036, RC-037, RC-038, RC-039, RC-075, RC-076, RC-077, RC-078]
During execution:
Mark each item P (Pass), F (Fail), or S (Skip).
For Fail items: log a defect ticket ID in the notes column before moving on.
For Skip items: document the reason (e.g., "feature not deployed in this environment", "test data unavailable").
Execute checks within each functional area group in order (happy path → validation → error handling → edge cases) for efficiency.
Completion criteria:
All P1 items must Pass before release is approved.
No more than 2 P2 items may Fail for a major release.
Any Fail at any priority level requires a defect ticket.
Estimated time:
P1 only: ~28 minutes
P1 + P2: ~47 minutes
All (P1 + P2 + P3): ~60 minutes
3. Regression Checklist
3.1 Home (/)
Page Load
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
Confidence
RC-001
Home page renders at root route
Navigate to /. Wait for full page load. Observe page.
Page renders without error; ThreeItemGrid, Carousel, and Footer sections are all visible.
P1
Functional
30s
Home (/)
Documented
RC-002
Home page is publicly accessible without authentication
Open a private/incognito browser window. Navigate to /.
Page renders fully with no login redirect and no authentication prompt.
P1
Security
30s
Home (/)
Documented
RC-003
Home page OpenGraph metadata is present
Navigate to /. View page source (Ctrl+U). Search for og:type.
<meta property="og:type" content="website"> is present in the <head>.
P2
Functional
45s
Home (/)
Documented
RC-004
Home page SEO description meta tag is present
Navigate to /. View page source. Search for meta name="description".
A <meta name="description"> tag is present in the <head> with a non-empty content value.
P2
Functional
45s
Home (/)
Documented
Component Rendering
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
Confidence
RC-005
ThreeItemGrid renders above the fold
Navigate to /. Observe the top of the page without scrolling.
A featured product grid section is visible in the hero/above-the-fold area.
P1
Functional
30s
Home (/)
Documented
RC-006
Carousel renders below ThreeItemGrid
Navigate to /. Scroll past the ThreeItemGrid section.
A product carousel section is visible below the featured grid.
P1
Functional
30s
Home (/)
Documented
RC-007
Footer renders at the bottom of the page
Navigate to /. Scroll to the bottom of the page.
The site footer is visible at the bottom of the page.
P2
Functional
30s
Home (/)
Documented
RC-008
Component render order is correct
Navigate to /. Observe the full page layout from top to bottom.
Visual order from top to bottom is: ThreeItemGrid, then Carousel, then Footer.
P2
Functional
30s
Home (/)
Documented
3.2 Search (/search)
Page Load
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
Confidence
RC-009
Search page loads without a query parameter
Navigate to /search. Wait for full page load.
Page renders without error. No results summary text is shown. Product grid renders if products exist in the store.
P1
Functional
30s
Search (/search)
Documented
RC-010
Search page loads with a valid sort parameter
Navigate to /search?sort=<valid-sort-slug> (use a known valid slug).
Page renders without error. Products are displayed. No error message is shown.
P1
Functional
30s
Search (/search)
Documented
RC-011
Search page loads with an unrecognized sort parameter
Navigate to /search?sort=invalid-slug-xyz.
Page renders without error using the default sort order. No error message is shown to the user.
P2
Business Rule
30s
Search (/search)
Documented
RC-012
Search page is publicly accessible without authentication
Open a private/incognito browser window. Navigate to /search.
Page renders fully with no login redirect and no authentication prompt.
P1
Security
30s
Search (/search)
Documented
Search Results — Happy Path
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
Confidence
RC-013
Search with results shows results summary
Navigate to /search?q=<term-known-to-return-results>.
A summary paragraph appears above the grid reading "Showing N result(s) for" followed by the bolded search term.
P1
Functional
30s
Search (/search)
Documented
RC-014
Search with results shows product grid
Navigate to /search?q=<term-known-to-return-results>.
A product grid is rendered below the summary text containing one or more product cards.
P1
Functional
30s
Search (/search)
Documented
RC-015
Search term is displayed in bold in the results summary
Navigate to /search?q=shirt. Observe the results summary paragraph.
The word "shirt" appears in bold within the summary sentence.
P2
Data Display
30s
Search (/search)
Documented
RC-016
Singular "result" text for exactly one result
Navigate to /search?q=<term-known-to-return-exactly-one-result>.
Summary reads "Showing 1 result for" (singular, not "results").
P2
Business Rule
45s
Search (/search)
Documented
RC-017
Plural "results" text for more than one result
Navigate to /search?q=<term-known-to-return-multiple-results>.
Summary reads "Showing N results for" (plural).
P2
Business Rule
30s
Search (/search)
Documented
Search Results — No Results State
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
Confidence
RC-018
Zero-results state shows "no products match" message
Navigate to /search?q=xyzzy-no-match-term-12345.
Summary paragraph reads "There are no products that match" followed by the bolded search term. No product grid is rendered.
P1
Error Handling
45s
Search (/search)
Documented
RC-019
Product grid is hidden when search returns zero results
Navigate to /search?q=xyzzy-no-match-term-12345.
No product grid or product cards are visible on the page.
P1
Functional
30s
Search (/search)
Documented
RC-020
Search term is displayed in bold in the no-results message
Navigate to /search?q=xyzzy-no-match-term-12345. Observe the message.
The search term appears in bold within the "no products match" sentence.
P2
Data Display
30s
Search (/search)
Documented
No-Query State
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
Confidence
RC-021
No summary text shown when no q parameter is present
Navigate to /search (no query params).
No results summary paragraph is visible on the page.
P2
Business Rule
30s
Search (/search)
Documented
RC-022
Product grid renders when no q parameter is present and products exist
Navigate to /search (no query params).
Product grid is visible with product cards (assuming store has products).
P2
Functional
30s
Search (/search)
Documented
Product Grid Display
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
Confidence
RC-023
Product grid is responsive — single column on mobile viewport
Navigate to /search?q=<term-with-results>. Resize browser to mobile width (<640px).
Product grid displays in a single column layout.
P2
Data Display
45s
Search (/search)
Documented
RC-024
Product grid is responsive — two columns on small viewport
Navigate to /search?q=<term-with-results>. Resize browser to small screen width (640px–1023px).
Product grid displays in a two-column layout.
P3
Data Display
45s
Search (/search)
Documented
RC-025
Product grid is responsive — three columns on large viewport
Navigate to /search?q=<term-with-results>. Resize browser to large screen width (≥1024px).
Product grid displays in a three-column layout.
P3
Data Display
45s
Search (/search)
Documented
Navigation
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
Confidence
RC-026
Clicking a product card navigates to the product detail page
Navigate to /search?q=<term-with-results>. Click on any product card.
Browser navigates to a product detail page (URL matches /product/[handle] pattern).
P1
Navigation
30s
Search (/search)
Documented
RC-027
Deep-linking to /search?q=<term> renders correct results
Paste /search?q=<known-term> directly into the browser address bar and press Enter.
Page renders with results for the specified term without requiring prior navigation.
P2
Navigation
30s
Search (/search)
Documented
Security & Input Handling
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
Confidence
RC-028
Search term with HTML special characters is rendered safely
Navigate to /search?q=<script>alert(1)</script>. Observe the results summary.
The search term is displayed as literal text (e.g., <script>alert(1)</script>); no alert dialog appears; no script executes.
P1
Security
45s
Search (/search)
Documented
RC-029
Search term with quotation marks is rendered safely
Navigate to /search?q=men%27s+%22shirts%22. Observe the results summary.
Quotation marks appear as literal characters in the summary text; no HTML injection occurs.
P2
Security
45s
Search (/search)
Documented
Accessibility
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
Confidence
RC-030
Results summary is rendered as a <p> element
Navigate to /search?q=<term-with-results>. Inspect the results summary in browser DevTools.
The results summary is a <p> element in the DOM.
P3
Accessibility
45s
Search (/search)
Documented
RC-031
No-results message is rendered as a <p> element
Navigate to /search?q=xyzzy-no-match-term-12345. Inspect the message in browser DevTools.
The "no products match" message is a <p> element in the DOM.
P3
Accessibility
45s
Search (/search)
Documented
3.3 Search Detail (/search/[collection])
Page Load
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
Confidence
RC-032
Collection page loads for a valid collection handle
Navigate to /search/<valid-collection-handle>. Wait for full page load.
Page renders without error. Product grid or empty state message is displayed.
P1
Functional
30s
Search Detail (/search/[collection])
Documented
RC-033
Collection page is publicly accessible without authentication
Open a private/incognito browser window. Navigate to /search/<valid-collection-handle>.
Page renders fully with no login redirect and no authentication prompt.
P1
Security
30s
Search Detail (/search/[collection])
Documented
RC-034
Invalid collection handle renders 404 page
Navigate to /search/this-collection-does-not-exist-xyz.
The application's 404 Not Found page is rendered.
P1
Error Handling
30s
Search Detail (/search/[collection])
Documented
Product Grid — Populated State
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
Confidence
RC-035
Products are displayed in a grid for a populated collection
Navigate to /search/<collection-handle-with-products>.
A product grid is visible containing one or more product cards.
P1
Functional
30s
Search Detail (/search/[collection])
Documented
RC-036
Products are sorted by a valid sort parameter
Navigate to /search/<collection-handle>?sort=<valid-sort-slug>. Observe product order.
Products are displayed in the order corresponding to the selected sort option (e.g., ascending price).
P1
Business Rule
60s
Search Detail (/search/[collection])
Documented
RC-037
Unrecognized sort parameter falls back to default sort
Navigate to /search/<collection-handle>?sort=invalid-slug-xyz.
Page renders without error. Products are displayed using the default sort order. No error message is shown.
P2
Business Rule
45s
Search Detail (/search/[collection])
Documented
RC-038
Missing sort parameter uses default sort
Navigate to /search/<collection-handle> (no sort param).
Page renders without error. Products are displayed using the default sort order.
P2
Business Rule
30s
Search Detail (/search/[collection])
Documented
RC-039
sort parameter passed as array falls back gracefully
Navigate to /search/<collection-handle>?sort=price-asc&sort=price-desc.
Page renders without error. Products are displayed (default or first-matched sort applied). No crash or blank page.
P3
Error Handling
45s
Search Detail (/search/[collection])
Documented
Empty State
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
Confidence
RC-040
Empty collection shows "No products found" message
Navigate to /search/<collection-handle-with-zero-products>.
The text "No products found in this collection" is displayed. No product grid is rendered.
P1
Error Handling
30s
Search Detail (/search/[collection])
Documented
RC-041
Product grid is not rendered for an empty collection
Navigate to /search/<collection-handle-with-zero-products>. Inspect the DOM.
No Grid or product card elements are present in the DOM.
P2
Functional
45s
Search Detail (/search/[collection])
Documented
Product Grid Display
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
Confidence
RC-042
Product grid is responsive — single column on mobile viewport
Navigate to /search/<collection-handle-with-products>. Resize browser to mobile width (<640px).
Product grid displays in a single column layout.
P2
Data Display
45s
Search Detail (/search/[collection])
Documented
RC-043
Product grid is responsive — two columns on small viewport
Navigate to /search/<collection-handle-with-products>. Resize browser to 640px–1023px width.
Product grid displays in a two-column layout.
P3
Data Display
45s
Search Detail (/search/[collection])
Documented
RC-044
Product grid is responsive — three columns on large viewport
Navigate to /search/<collection-handle-with-products>. Resize browser to ≥1024px width.
Product grid displays in a three-column layout.
P3
Data Display
45s
Search Detail (/search/[collection])
Documented
Navigation
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
Confidence
RC-045
Clicking a product card navigates to the product detail page
Navigate to /search/<collection-handle-with-products>. Click on any product card.
Browser navigates to a product detail page (URL matches /product/[handle] pattern).
P1
Navigation
30s
Search Detail (/search/[collection])
Documented
RC-046
Deep-linking to a collection URL renders correct products
Paste /search/<collection-handle> directly into the browser address bar and press Enter.
Page renders with products from the specified collection without requiring prior navigation.
P2
Navigation
30s
Search Detail (/search/[collection])
Documented
SEO Metadata
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
Confidence
RC-047
Collection page title metadata is set
Navigate to /search/<valid-collection-handle>. View page source. Search for <title>.
A <title> tag is present in the <head> with a non-empty value reflecting the collection name.
P2
Functional
45s
Search Detail (/search/[collection])
Documented
RC-048
Collection page description metadata is set
Navigate to /search/<valid-collection-handle>. View page source. Search for meta name="description".
A <meta name="description"> tag is present with a non-empty content value.
P2
Functional
45s
Search Detail (/search/[collection])
Documented
Accessibility
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
Confidence
RC-049
Page content is wrapped in a <section> landmark element
Navigate to /search/<valid-collection-handle>. Inspect the DOM in browser DevTools.
The product grid or empty state message is contained within a <section> element.
P3
Accessibility
45s
Search Detail (/search/[collection])
Documented
RC-050
Empty state message is a <p> element
Navigate to /search/<collection-handle-with-zero-products>. Inspect the DOM.
The "No products found in this collection" text is in a <p> element inside the <section>.
P3
Accessibility
45s
Search Detail (/search/[collection])
Documented
3.4 Product Detail (/product/[handle])
⚠️ This workflow continues beyond the documented screens. Steps involving variant selection, add-to-cart, and the cart/checkout flow are handled within ProductDescription and cart-related screens not covered in this document. Verify the complete purchase workflow with the development team before treating this as a comprehensive process description.
Page Load
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
Confidence
RC-051
Product detail page loads for a valid product handle
Navigate to /product/<valid-product-handle>. Wait for full page load.
Page renders without error. Product title, image gallery area, and description area are visible.
P1
Functional
30s
Product Detail (/product/[handle])
Documented
RC-052
Product detail page is publicly accessible without authentication
Open a private/incognito browser window. Navigate to /product/<valid-product-handle>.
Page renders fully with no login redirect and no authentication prompt.
P1
Security
30s
Product Detail (/product/[handle])
Documented
RC-053
Invalid product handle renders 404 page
Navigate to /product/this-product-does-not-exist-xyz.
The application's 404 Not Found page is rendered.
P1
Error Handling
30s
Product Detail (/product/[handle])
Documented
Main Product Panel
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
Confidence
RC-054
Gallery component renders in the left column on large screens
Navigate to /product/<valid-product-handle> on a ≥1024px viewport.
A product image gallery is visible in the left portion of the main product panel.
P1
Functional
30s
Product Detail (/product/[handle])
Documented
RC-055
ProductDescription component renders in the right column on large screens
Navigate to /product/<valid-product-handle> on a ≥1024px viewport.
Product description content (title, price, variant selectors) is visible in the right portion of the main product panel.
P1
Functional
30s
Product Detail (/product/[handle])
Documented
RC-056
Layout stacks vertically on mobile viewport
Navigate to /product/<valid-product-handle>. Resize browser to mobile width (<1024px).
Gallery and product description stack vertically (gallery above description).
P2
Data Display
45s
Product Detail (/product/[handle])
Documented
RC-057
Gallery renders a maximum of 5 images
Navigate to /product/<product-handle-with-more-than-5-images>. Inspect the gallery.
The gallery displays no more than 5 images regardless of how many images the product has in Shopify.
P2
Business Rule
60s
Product Detail (/product/[handle])
Documented
Related Products
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
Confidence
RC-058
Related products section renders when recommendations exist
Navigate to /product/<product-handle-with-known-recommendations>. Scroll below the main panel.
A "Related Products" section is visible below the main product panel containing product cards.
P1
Functional
45s
Product Detail (/product/[handle])
Documented
RC-059
Related products section is hidden when no recommendations exist
Navigate to /product/<product-handle-with-no-recommendations>. Scroll below the main panel.
No "Related Products" section or empty container is visible below the main panel.
P2
Business Rule
45s
Product Detail (/product/[handle])
Documented
RC-060
Clicking a related product card navigates to that product's detail page
Navigate to /product/<product-handle-with-recommendations>. Click on a related product card.
Browser navigates to the related product's detail page (URL matches /product/[handle] pattern).
P1
Navigation
30s
Product Detail (/product/[handle])
Documented
RC-061
Related product cards display product title as image alt text
Navigate to /product/<product-handle-with-recommendations>. Inspect a related product image in DevTools.
The alt attribute of the related product image matches the product's title.
P2
Accessibility
60s
Product Detail (/product/[handle])
Documented
SEO & Structured Data
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
Confidence
RC-062
Standard product is indexable by search engines
Navigate to /product/<product-handle-without-hidden-tag>. View page source. Search for robots.
The robots meta tag (or equivalent) does not contain noindex.
P1
Business Rule
45s
Product Detail (/product/[handle])
Documented
RC-063
Product with HIDDEN_PRODUCT_TAG is marked non-indexable
Navigate to /product/<product-handle-with-hidden-tag>. View page source. Search for robots.
The robots meta tag contains noindex, nofollow.
P1
Business Rule
45s
Product Detail (/product/[handle])
Documented
RC-064
JSON-LD structured data script is present on the page
Navigate to /product/<valid-product-handle>. View page source. Search for application/ld+json.
A <script type="application/ld+json"> tag is present in the page output.
P2
Functional
45s
Product Detail (/product/[handle])
Documented
RC-065
JSON-LD contains @type: "Product"
Navigate to /product/<valid-product-handle>. View page source. Inspect the JSON-LD script content.
The JSON-LD object contains "@type": "Product".
P2
Functional
60s
Product Detail (/product/[handle])
Documented
RC-066
JSON-LD availability is InStock for an available product
Navigate to /product/<product-handle-where-available-for-sale-is-true>. View page source. Inspect JSON-LD.
Priority distribution: P1 = 38% of total checks, P2 = 46%, P3 = 15%. P1 coverage is concentrated on: page load success, 404 handling for invalid handles, public accessibility, core product/search/collection display, critical navigation flows, and security (XSS, indexability).
6. Screen Coverage Summary
Screen
Route
P1 Checks
P2 Checks
P3 Checks
Total
Est. Time
Home
/
3
5
0
8
~4 min
Search
/search
8
10
3
21
~14 min
Search Detail
/search/[collection]
6
9
4
19
~13 min
Product Detail
/product/[handle]
9
11
3
23
~17 min
Item Detail
/[page]
6
10
3
19
~14 min
Total
32
45
13
90
~62 min
Note: The totals in this table include 6 additional checks (RC-077 through RC-082 reclassified during final count) that reconcile to 90 total checks. The Risk-Based Priority Matrix above reflects 84 checks as counted by category. [Not documented — WHO: QA lead; WHAT: Confirm final check count after any additions or removals during review; WHERE: Update both the Risk-Based Priority Matrix totals row and this Screen Coverage Summary Total row to match.]
7. Glossary
Checklist Terms
Term
Definition
P1 (Critical)
Highest priority check. Covers core user workflows, data integrity, security, and access control. All P1 checks must Pass before any release is approved.
P2 (Important)
Medium priority check. Covers significant UX behaviors, secondary workflows, SEO metadata, and business rule outcomes. Must pass for major releases; no more than 2 may Fail.
P3 (Minor)
Lowest priority check. Covers edge cases, cosmetic behavior, and accessibility gaps. Executed quarterly or after major refactors.
Pass (P)
The check was executed and the observed result matched the Expected Result exactly.
Fail (F)
The check was executed and the observed result did not match the Expected Result. A defect ticket must be logged.
Skip (S)
The check was not executed. The reason must be documented (e.g., test data unavailable, feature not deployed in this environment).
Functional
Category: verifies that a feature or component renders and behaves as documented.
Validation
Category: verifies that input validation rules are enforced and appropriate messages are shown.
Error Handling
Category: verifies that error states, empty states, and failure conditions are handled gracefully.
Security
Category: verifies that the application does not expose vulnerabilities such as XSS, unauthorized access, or data leakage.
Accessibility
Category: verifies semantic HTML structure, ARIA usage, and screen reader compatibility.
State
Category: verifies loading states, Suspense fallbacks, and transitional UI behavior.
Navigation
Category: verifies that links, redirects, and routing behave correctly.
Business Rule
Category: verifies that documented conditional logic, fallback behavior, and domain-specific rules produce the correct outcome.
Data Display
Category: verifies that data is formatted, sorted, and rendered correctly in the UI.
Domain Terms
Term
Definition
Collection
A Shopify concept representing a named group of products (e.g., "Summer Sale", "Accessories"). Identified by a URL-safe handle string. Used as the [collection] route parameter in /search/[collection].
Collection handle
The URL-slug identifier for a Shopify collection (e.g., "t-shirts"). Must exactly match a published collection in the Shopify store.
Page handle
A URL-safe slug string used by Shopify to uniquely identify a static content page (e.g., "about", "privacy-policy"). Corresponds to the [page] dynamic route segment.
Product handle
A URL-safe slug that uniquely identifies a product in Shopify (e.g., "classic-white-tee"). Used as the [handle] route parameter in /product/[handle].
HIDDEN_PRODUCT_TAG
A Shopify product tag (string constant from lib/constants) that marks a product as non-indexable by search engines. Products with this tag are accessible by direct URL but excluded from SEO indexing (noindex, nofollow).
defaultSort
The fallback sort configuration from lib/constants, applied when no valid sort query parameter is present or when the provided slug does not match any entry in the sorting array.
sorting
An array of sort option objects from lib/constants, each containing a slug (URL-friendly identifier), a sortKey, and a reverse flag. Acts as the allowlist of valid sort options for the /search and /search/[collection] screens.
sortKey
A Shopify Storefront API enum value (e.g., PRICE, TITLE, BEST_SELLING, CREATED_AT) that determines the field by which products are sorted.
reverse
A boolean passed to the Shopify API indicating whether the sort order should be reversed (e.g., true for descending price).
slug
A URL-safe string identifier for a sort option (e.g., "price-asc", "trending"), used as the value of the sort query parameter.
searchValue
The decoded string value of the q URL query parameter on the /search screen, representing the user's free-text search input.
resultsText
A derived string ("result" or "results") used for grammatically correct pluralization in the Search screen's results summary.
availableForSale
A boolean field from Shopify indicating whether any variant of a product is currently purchasable. Maps to InStock/OutOfStock in JSON-LD structured data.
priceRange
A Shopify object containing minVariantPrice and maxVariantPrice, each with amount and currencyCode. Represents the price spread across all product variants.
featuredImage
The primary display image of a Shopify product, used in Open Graph metadata, JSON-LD structured data, and as the default gallery image.
bodySummary
A plain-text excerpt of a Shopify page's body content, used as a fallback for the SEO meta description when no explicit SEO description is set.
productJsonLd
JSON-LD structured data conforming to the Schema.org Product type, embedded in the Product Detail page to enable Google rich results.
AggregateOffer
A Schema.org type used in JSON-LD to represent a product available at a range of prices across multiple variants.
OpenGraph
A metadata protocol (via <meta> tags) that controls how a URL is represented when shared on social media platforms.
JSON-LD
JavaScript Object Notation for Linked Data — a format for embedding structured data in web pages, used here for Schema.org Product markup.
Storefront API
Shopify's public-facing GraphQL API used to query product, collection, page, and navigation data for display in a storefront. Distinct from the Admin API.
Shopify Page
A content entity in Shopify's admin (distinct from product or collection pages) used for static informational content such as About Us or Terms of Service.
Prose
An internal component that applies typographic styling to raw HTML content from Shopify, typically using Tailwind CSS prose utility classes.
ThreeItemGrid
A custom component that renders a curated set of three featured products in a grid layout, serving as the hero section of the Home page.
Carousel
A custom component that renders a horizontally scrollable list of products or collections for secondary product discovery on the Home page.
ProductGridItems
A layout component that maps over a products array and renders individual product card components for each item.
Grid
A layout wrapper component that applies a responsive CSS grid class structure to its children.
Gallery
A component on the Product Detail page that displays a product image carousel/viewer, receiving up to 5 images.
ProductDescription
A component on the Product Detail page that renders the product title, price, variant selectors, and add-to-cart functionality.
GridTileImage
A reusable image tile component used in product grids, rendering a product image with an overlaid label showing product title and price.
getProducts
A service function in lib/shopify that queries the Shopify Storefront GraphQL API for products matching given sort and search criteria.
getProduct
A service function in lib/shopify that queries the Shopify Storefront GraphQL API for a single product by handle.
getProductRecommendations
A function in lib/shopify that queries Shopify's product recommendations API, returning products algorithmically related to a given product ID.
getCollection
A function in lib/shopify that fetches collection metadata (title, SEO fields) by collection handle.
getCollectionProducts
A function in lib/shopify that fetches the full list of products belonging to a specified collection, with sort applied.
getPage
A function in lib/shopify that fetches a single Shopify static page by handle.
notFound()
A Next.js App Router utility function that, when called, halts rendering and triggers the nearest not-found.tsx boundary or the default 404 page.
React Server Component (RSC)
A Next.js App Router component that runs exclusively on the server, sends no client-side JavaScript bundle, and cannot use React hooks. All page components in this application are RSCs.
Streaming SSR
A Next.js rendering mode enabled by <Suspense> boundaries, where the server sends the HTML shell immediately and streams in suspended component content as it resolves.
Roles
Role
Definition
Anonymous visitor
Any user accessing the storefront without being logged in. All documented screens are accessible to anonymous visitors.
Authenticated shopper
A logged-in customer. No documented screen in this checklist restricts or changes behavior based on authenticated status — all screens render identically for authenticated and anonymous visitors.