Skip to content

Polish pricing CTAs and annual default - #9701

Merged
lawrencecchen merged 2 commits into
mainfrom
task-pricing-cta-size-default-interval
Aug 6, 2026
Merged

lawrencecchen merged 2 commits into
mainfrom
task-pricing-cta-size-default-interval

Conversation

@lawrencecchen

@lawrencecchen lawrencecchen commented Aug 6, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • default public pricing to annual billing while preserving explicit monthly links
  • reduce the Get Pro and Get Teams card CTA height
  • cover both billing defaults and explicit interval selection

Testing

  • cd web && bun test tests/pricing-page.test.tsx tests/pro-pricing.test.ts tests/pro-cta-link.test.tsx
  • cd web && bun run typecheck
  • cd web && bunx eslint "app/[locale]/pricing/page.tsx" tests/pricing-page.test.tsx

View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.


Summary by cubic

Default the public pricing page to annual billing and make the Pro and Teams CTAs compact. Keeps explicit monthly selection via ?interval=month, and updates checkout links to match the selected interval.

Written for commit a446c0f. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • New Features
    • Pricing now defaults to annual billing when no billing interval is selected.
    • Monthly billing remains available through the billing toggle.
    • Paid-plan checkout buttons now use a more compact layout.
    • Updated team-plan pricing is reflected in the pricing page.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026 •

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: f64c07c2-aeb4-4fd5-ac98-365a6119df12

📥 Commits

Reviewing files that changed from the base of the PR and between 4569dbb and a446c0f.

📒 Files selected for processing (2)
  • web/app/[locale]/pricing/page.tsx
  • web/tests/pricing-page.test.tsx

📝 Walkthrough

Walkthrough

The pricing page now defaults to annual billing when no interval is specified. Explicit monthly billing remains supported. Pro and Team checkout buttons use compact sizing, with tests covering prices, checkout URLs, and billing-toggle state.

Changes

Pricing billing behavior

Layer / File(s) Summary
Pricing interval and CTA behavior
web/app/[locale]/pricing/page.tsx
The page defaults Pro billing to the yearly interval. Pro and Team checkout buttons now use compact sizing.
Pricing interval test coverage
web/tests/pricing-page.test.tsx
Tests verify annual defaults and explicit monthly billing, including prices, checkout URLs, CTA classes, and billing-toggle markup.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 25
✅ Passed checks (25 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main pricing changes: annual billing as the default and polished CTAs.
Description check ✅ Passed The description explains the changes and testing performed, with sufficient context for review despite omitted template checklist sections.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Cmux Swift Actor Isolation ✅ Passed The diff changes only two TypeScript/TSX files under web/; it introduces no production Swift changes, so Swift actor isolation is not applicable.
Cmux Swift Blocking Runtime ✅ Passed The PR changes only two TypeScript/TSX web files; the HEAD-to-parent diff contains no Swift changes or blocking-runtime synchronization patterns.
Cmux Browser Automation Off-Main ✅ Passed The commit changes only the web pricing page and its tests; it contains no browser socket commands, WebKit waits, worker routing, or policy-test changes.
Cmux Expensive Synchronous Load ✅ Passed The PR changes only two web TypeScript/TSX files; the parent-to-HEAD diff contains no Swift or production agent-history loader changes.
Cmux Cache Substitution Correctness ✅ Passed The diff changes only pricing interval default, CTA sizing, and tests; it does not replace an authoritative read with a cache in a persistence, history, undo, or snapshot path.
Cmux No Hacky Sleeps ✅ Passed The diff changes pricing defaults, CTA sizing, and tests only; it introduces no sleep, timer, polling, fixed delay, or race workaround.
Cmux Algorithmic Complexity ✅ Passed The production diff only adds a scalar interval fallback and compact CTA props; it adds no collection scans, sorting, joins, or batch algorithms. Other changes are tests.
Cmux Swift Concurrency ✅ Passed The commit changes only two TypeScript/TSX pricing files. No Swift files or legacy Swift concurrency patterns are introduced or expanded.
Cmux Swift @Concurrent ✅ Passed The diff changes only two TypeScript/TSX files and contains no Swift changes, so the Swift @concurrent check is not applicable.
Cmux Swift Package Boundaries ✅ Passed The PR diff contains only two TypeScript files and no Swift or SwiftPM paths, so the Swift package-boundary rule does not apply.
Cmux Swiftpm Lockfiles ✅ Passed The PR changes only web pricing code and tests; it changes no Package.swift, Package.resolved, .gitignore, workflow, or Xcode project files.
Cmux Swift Logging ✅ Passed The PR changes only two TypeScript/TSX files; it adds no Swift files or Swift logging calls, so the Swift logging rule does not apply.
Cmux User-Facing Error Privacy ✅ Passed Production diff only changes the pricing interval default and CTA sizing; it adds no user-facing errors, alerts, diagnostics, or sensitive implementation details. Tests are allowed.
Cmux Full Internationalization ✅ Passed The production diff adds no user-facing text or message keys. It uses existing next-intl pricing translations; only the literal interval token and CTA size changed.
Cmux Swiftui State Layout ✅ Passed The PR changes only two TypeScript pricing files; the commit delta contains no Swift or SwiftUI changes, so the SwiftUI state/layout rule is not applicable.
Cmux Architecture Rethink ✅ Passed The commit changes only two TypeScript/TSX pricing files; it contains no Swift files or Swift architecture symptom constructs covered by the rule.
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed The diff changes only web/app/[locale]/pricing/page.tsx and web/tests/pricing-page.test.tsx; it contains no Swift or standalone cmux window changes.
Cmux Source Artifacts ✅ Passed The diff changes only the hand-written pricing page and its test; no logs, caches, generated output, temporary directories, or other source-control artifacts are present.
Cmux No Test Or Debug Seam In Production Source ✅ Passed The patch modifies only two TypeScript/TSX web files; it adds or changes no Swift file under a production Sources/ path.
Cmux No Ambient Global State ✅ Passed The pull request changes only two TypeScript/TSX files; it contains no production Swift changes, so this Swift-only check is not applicable.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch task-pricing-cta-size-default-interval

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@lawrencecchen
lawrencecchen merged commit 9bf23bc into main Aug 6, 2026
6 checks passed
@lawrencecchen
lawrencecchen deleted the task-pricing-cta-size-default-interval branch August 6, 2026 09:37
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.

1 participant