Skip to content

fix(pricing): close Phase D audit items D-1/4/5/7 (Phase D PR-3) - #91

Merged
ejay-dev merged 1 commit into
mainfrom
fix/pricing-d-fixes
May 14, 2026
Merged

fix(pricing): close Phase D audit items D-1/4/5/7 (Phase D PR-3)#91
ejay-dev merged 1 commit into
mainfrom
fix/pricing-d-fixes

Conversation

@ejay-dev

Copy link
Copy Markdown
Owner

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> inside PricingTiers, 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> in PricingPageContent.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.

  • Per-tier trustNote promoted 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.
  • Enterprise tier's trustNote rephrased 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

The audit doc §N+2 entries are annotated with each item's resolution.

Test plan

  • CI green
  • Vercel preview: visit /pricing, click hero "View pricing" CTA, confirm the page scrolls to the tier grid (D-5 fix)
  • Confirm each tier card now shows a visible bordered chip with the trustNote
  • Confirm Enterprise card chip reads "Sandbox walkthrough · security review pack · custom SLA"
  • curl <preview>/pricing | grep 'id="pricing-table"' returns at least one match

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>
@vercel

vercel Bot commented May 14, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
forma-os Ready Ready Preview, Comment May 14, 2026 10:57am

Request Review

Copilot AI review requested due to automatic review settings May 14, 2026 10:53

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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" /> in PricingPageContent.tsx and drop the id from the inner <section> in PricingTiers.tsx (D-5 fix; avoids duplicate ids).
  • Promote per-tier trustNote to a bordered chip with CheckCircle2 icon (emerald on Growth, slate elsewhere); rephrase Enterprise trustNote to 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.

Comment on lines +169 to +176
<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>
Comment on lines +291 to 292
<div id="pricing-table" className="scroll-mt-24" />
<DeferredSection minHeight={600}>
@github-actions

Copy link
Copy Markdown

♿ Accessibility Test Results

PASSED - No critical accessibility issues found

Tests Performed:

  • WCAG 2.1 AA compliance validation
  • Cross-browser accessibility testing
  • Keyboard navigation testing
  • Screen reader compatibility
  • Color contrast validation

Artifacts: Download the accessibility reports from the "Artifacts" section for detailed results.

@ejay-dev
ejay-dev merged commit 1b7f542 into main May 14, 2026
33 checks passed
@ejay-dev
ejay-dev deleted the fix/pricing-d-fixes branch May 14, 2026 11:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants