feat: api-first Plus landing experiment (featurePlusApiLanding)#5888
feat: api-first Plus landing experiment (featurePlusApiLanding)#5888
Conversation
Adds a new A/B experiment gated by `featurePlusApiLanding` (control | api) targeting developers who clicked "Get API Access" but bounced on a generic /plus page. The api variant reframes the Plus page around the public API: - Hero + feature list emphasize API access, integrations, and dev use cases - New PlusApiShowcase block with 3 API use cases (coding agents, internal tools, personal automations) - Plus FAQ reordered with API-specific entries at the top - All Plus CTAs (UpgradeToPlus, PlusMobileEntryBanner, PlusGrid, tablet and main sidebars) switch from avocado green to Plus pink (bacon) when the variant is api, using `text-action-plus-default` + ButtonColor.Bacon - Migrates read sites from the legacy `featurePlusCtaCopy` flag to `featurePlusApiLanding` so both scope (CTA copy + /plus content) share one flag Made-with: Cursor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
@claude please review this pr |
|
Claude finished @nimrodkra's task in 3m 53s —— View job PR Review:
|
- Shorten labels in `plusFeatureListApiFirst` now that the page context makes "via API" redundant - Apply Prettier formatting to `PlusInfo` and `PlusList` - Guard `squads?.length` and `user` access in `SidebarTablet` to pass the strict-changed typecheck (pre-existing, surfaced by flag swap) Made-with: Cursor
- Split plusFAQItems into control + api arrays so the new API FAQ items only render in the api variant (previously leaked into control via shared static array). - PlusFAQ reads featurePlusApiLanding (gated on !isPlus) to pick the correct list. - PlusInfo switches from useFeature to useConditionalFeature with shouldEvaluate: !isPlus, consistent with other CTA sites. - Move the Plus public API docs URL to lib/constants.ts. Made-with: Cursor
Per review, flip the flag from a 'control' | 'api' string variant to a plain boolean (default false). Rename local variables from apiLandingVariant / isApiVariant to isApiLanding and drop the now unnecessary === 'api' comparisons across all call sites. Made-with: Cursor
Made-with: Cursor
Archived GrowthBook keys stay reserved, so the original plus_api_landing key could not be reused for the refactored boolean flag. Made-with: Cursor
Made-with: Cursor
Summary
New A/B experiment targeting developers who clicked "Get API Access" but dropped off on a generic
/pluspage. WhenfeaturePlusApiLandingis enabled, the Plus page is reframed around the public API:PlusApiShowcaseblock with three API use cases (coding agents, internal tools, personal automations)UpgradeToPlus,PlusMobileEntryBanner,PlusGrid,CustomFeedEmptyScreen,PlusUserBadge, tablet sidebar, main sidebar) swap from avocado green to Plus pink (text-action-plus-default/ButtonColor.Bacon) when the flag is on. Themed for light and dark.featurePlusCtaCopyonto the new flag so both scopes (CTA copy + /plus content) share one flaglib/constants.ts(plusPublicApiDocs)featurePlusApiLandingis a boolean flag (defaultfalse), evaluated viauseConditionalFeaturewithshouldEvaluate: !isPlusacross all consumers.Control behavior is fully preserved.
Test plan
/plusrenders existing hero, features, FAQ, and green CTAsUpgradeToPlus,CustomFeedEmptyScreen,PlusUserBadge) show in Plus pink on both light and dark themesMade with Cursor
Preview domain
https://feat-plus-api-landing-experiment.preview.app.daily.dev