fix(pricing): close Phase D audit items D-1/4/5/7 (Phase D PR-3) - #91
Conversation
Final PR of the Phase D pricing redesign pass. Closes the remaining §N+2 D-* findings from the marketing audit. D-5 (real bug — hydration gap) ------------------------------ The hero's "View pricing" CTA points at #pricing-table. That id was on a <section> inside PricingTiers, which is rendered behind a DeferredSection IntersectionObserver — so the id was absent from the initial SSR HTML and the anchor click had nothing to scroll to until the user had already scrolled near the section. Fixed by adding a stable <div id="pricing-table" scroll-mt-24 /> sibling immediately before the DeferredSection in PricingPageContent. The inner <section> drops its id to avoid duplicate-id violations and carries a comment explaining where the anchor lives. D-7 (no commercial change) -------------------------- User chose to surface the existing "cancel anytime" framing as the de-facto trial rather than invent a commercial trial that doesn't exist (the FAQ explicitly says "No"). Two moves: 1. The per-tier trustNote string moved from a small 11px line below the price to a visible bordered chip with a check icon, placed between the price block and the CTA. Emerald check on the featured (Growth) tier, slate on the others. 2. The Enterprise tier's trustNote was rephrased from "Annual agreements · invoice billing · custom SLA" to "Sandbox walkthrough · security review pack · custom SLA" — surfacing the evaluation path that already exists in the FAQ (sandbox tenant + guided walkthrough for procurement) instead of leading with billing mechanics. D-1, D-4, D-2, D-3 — verifications / annotations only ----------------------------------------------------- - D-1 verified against live (`curl https://www.formaos.com.au/pricing`): $297 / $797 / $1,800 all in SSR HTML. Audit claim was stale. - D-4 was already closed across #89 (hero version-badge strip) and #90 (comparison-table footer status). Annotation only. - D-2 / D-3 already shipped in #87 (meta-length pass). Annotation only. - D-6 (the "anchored to risk" CTA sentence) is preserved untouched through #89, #90, and this PR. The audit doc §N+2 entries are annotated with each item's resolution and the PR that closed it. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Pull request overview
Closes the remaining §N+2 audit items from the Phase D pricing redesign. The substantive change is a hydration fix for the #pricing-table in-page anchor: the id used to live on a <section> inside a DeferredSection, so it was absent from SSR HTML and the hero's "View pricing" CTA had nothing to scroll to. The rest is a UX promotion of the per-tier trustNote into a visible bordered chip with a check icon (and a copy tweak for the Enterprise tier), plus audit-doc annotations.
Changes:
- Add a stable
<div id="pricing-table" class="scroll-mt-24" />inPricingPageContent.tsxand drop the id from the inner<section>inPricingTiers.tsx(D-5 fix; avoids duplicate ids). - Promote per-tier
trustNoteto a bordered chip withCheckCircle2icon (emerald on Growth, slate elsewhere); rephrase EnterprisetrustNoteto lead with the sandbox/security-review evaluation path (D-7, no commercial change). - Annotate the marketing audit doc with resolutions for D-1, D-2, D-3, D-4, D-5, D-6, D-7.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| lib/marketing/pricing.ts | Updates Enterprise trustNote from billing-mechanics copy to evaluation-path copy. |
| docs/audit/2026-05-13-marketing-audit.md | Annotates D-1..D-7 with their resolution status across PRs #87/#89/#90/this PR. |
| app/(marketing)/pricing/PricingPageContent.tsx | Adds the SSR-stable #pricing-table anchor div before the DeferredSection. |
| app/(marketing)/pricing/components/PricingTiers.tsx | Removes the duplicate id from the inner <section> and replaces the small trustNote line with a chip containing a CheckCircle2 icon. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| <div className="mt-3 inline-flex max-w-full items-center gap-2 self-start rounded-full border border-white/[0.08] bg-white/[0.04] px-3 py-1 text-[11px] text-slate-300"> | ||
| <CheckCircle2 | ||
| className={`h-3 w-3 shrink-0 ${ | ||
| tier.featured ? 'text-emerald-300' : 'text-slate-400' | ||
| }`} | ||
| aria-hidden="true" | ||
| /> | ||
| <span className="truncate">{tier.trustNote}</span> |
| <div id="pricing-table" className="scroll-mt-24" /> | ||
| <DeferredSection minHeight={600}> |
♿ Accessibility Test Results✅ PASSED - No critical accessibility issues found Tests Performed:
Artifacts: Download the accessibility reports from the "Artifacts" section for detailed results. |
Summary
Final PR of the Phase D pricing redesign pass. Closes the §N+2 audit items.
D-5 — real hydration bug, fixed
The hero's "View pricing" CTA targets
#pricing-table. That id sat on a<section>insidePricingTiers, which is wrapped in<DeferredSection>(IntersectionObserver mounts on scroll proximity). So the id was missing from the initial SSR HTML — clicking "View pricing" from above-the-fold had nothing to scroll to until the section was already on-screen.Fix: stable
<div id="pricing-table" className="scroll-mt-24" />sibling immediately before the<DeferredSection>inPricingPageContent.tsx. The inner<section>drops the id to avoid duplicate-id violations and carries a comment explaining where the anchor lives.D-7 — no commercial change
User chose option 1: surface the existing "cancel anytime" framing rather than invent a trial that doesn't exist.
trustNotepromoted from a small 11px line below the price to a visible bordered chip (check icon + text) between the price block and the CTA. Emerald check on Growth (featured), slate on the others.trustNoterephrased to lead with the existing sandbox walkthrough + security review pack evaluation path (sourced from the FAQ answer) instead of billing mechanics.D-1, D-4, D-2, D-3 — verifications / annotations only
curl https://www.formaos.com.au/pricingreturns$297,$797,$1,800all in SSR HTML. Audit claim was stale.The audit doc §N+2 entries are annotated with each item's resolution.
Test plan
/pricing, click hero "View pricing" CTA, confirm the page scrolls to the tier grid (D-5 fix)curl <preview>/pricing | grep 'id="pricing-table"'returns at least one match