A shipping method named "Standard" or "Express" tells the shopper nothing about when the box will actually arrive. Without a concrete date or day range, shoppers can't decide between shipping tiers, can't plan around the delivery, and default to the cheapest option by pure uncertainty. Showing "Arrives by Thursday, April 23" next to each tier turns an abstract choice into a comprehensible one and lifts upgrade rates on expedited shipping. It also reduces "where is my order?" support tickets downstream.
Low because the defect slows decision-making and nudges shoppers toward the cheapest tier rather than blocking purchase.
Compute an estimated arrival date from the shipping method's estimatedDays and render it inline in src/components/ShippingOptions.tsx. Show the estimate on the shipping selector, the review page, the confirmation page, and the confirmation email — four surfaces, all reading from the same computed value.
const estimatedDate = new Date(Date.now() + method.estimatedDays * 86_400_000)
<p>Estimated arrival: {estimatedDate.toLocaleDateString()}</p>
ID: ecommerce-cart-ux.order-confirmation.delivery-estimate
Severity: low
What to look for: Count the locations where delivery/processing time is displayed: (a) shipping method selection during checkout, (b) order review/summary page, (c) confirmation page, (d) confirmation email. For each location, check if the estimate is dynamically calculated from shipping method data or hardcoded. Quote the estimate text found (e.g., "Ships in 2-3 business days", "Arrives by [date]").
Pass criteria: Estimated delivery or processing time is displayed in at least 2 of 4 locations (checkout shipping step, review page, confirmation page, confirmation email). The estimate must reference a timeframe (days, date range, or specific date), not just a shipping method name. Report: "Delivery estimate shown in X of 4 locations. Estimate text: [quote]."
Fail criteria: No delivery estimate is shown anywhere in the checkout or confirmation flow, or estimate only appears in the confirmation email after purchase.
Skip (N/A) when: Products are instant/digital delivery only (no physical shipping), or the project has no checkout flow.
Detail on fail: Example: "Shipping method selector at src/components/ShippingOptions.tsx shows method names ('Standard', 'Express') but no time estimates. 0 of 4 locations show delivery timeframe. Customer doesn't know when to expect delivery."
Cross-reference: For the confirmation page content, see the confirmation-page check above. For shipping cost display, see the pre-payment-review check in Checkout Flow.
Remediation: Add delivery estimates to your shipping method component at src/components/ShippingOptions.tsx:
// src/components/ShippingOptions.tsx
function ShippingMethod({ method, onSelect }) {
const today = new Date()
const days = parseInt(method.estimatedDays.split('-')[0])
const estimatedDate = new Date(today.getTime() + days * 24 * 60 * 60 * 1000)
return (
<button onClick={() => onSelect(method)}>
<p>{method.name}</p>
<p>Estimated arrival: {estimatedDate.toLocaleDateString()}</p>
</button>
)
}