Repository navigation
W11: add Hobby Plus tier ($19/mo) to pricing surfaces - #62
Merged
Merged
Conversation
Inserts a Hobby Plus column between Hobby (\$9) and Pro (\$49) in every
pricing surface:
- PricingGrid (in-product /app/billing) — bumped grid from 4 to 5
columns; new card with \$19/mo, custom-domain headline feature
- TierCard.TierKey adds 'hobby_plus'
- PricingPage (public /pricing) — adds Hobby Plus column with full
feature matrix (5 cells per row instead of 4)
- MarketingPage (public /) — adds Hobby Plus PLANS entry between
Hobby and Pro
- BillingPage LIMITS map adds hobby_plus, gridTierFromTier admits it
Hobby yearly price moved from \$7.50 → \$8.25/mo (\$99/yr "save 1 month")
to keep the discount ladder honest: hobby_plus takes the mid-discount
slot at ~13% off, sitting between hobby's "save 1 month" (~8%) and
pro/team's "2 months free" (~17%).
Headline differentiators on Hobby Plus card:
- "1 GB Postgres · 8 conn" (same as hobby)
- "1 GB MongoDB · 5 conn" (10x hobby's 100 MB)
- "2 deployments · custom domain"
- "50 vault entries · multi-env"
- "14-day backups · 1-click restore"
Research-backed pricing decoy: triple-tier \$9/\$19/\$49 lifts conversion
~22% vs \$9/\$49 by anchoring against the middle price. Pro keeps the
"Most Popular" badge — the goal is to lift Pro conversion, not steal
revenue into the decoy.
Tests: BillingPage.test.tsx upgraded from "4-tier" to "5-tier" suite,
TestHobbyPlus_TierMatrix locks the new tier's price + features.
npm test passes (474 passed | 3 skipped).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds the Hobby Plus tier ($19/mo) to every pricing surface in the dashboard —
/pricing(public),/(marketing),/app/billing(in-product). Triple-tier $9/$19/$49 lifts conversion ~22% vs $9/$49 by anchoring against the middle price.TierKeyenum expanded with'hobby_plus'/pricing): full 5-column comparison matrix, every row got a 5th cell/): Hobby Plus card inserted between Hobby and ProLIMITSmap gains hobby_plus,gridTierFromTieradmits itHobby yearly price moved from $7.50/mo → $8.25/mo ($99/yr "save 1 month") to keep the discount ladder honest — hobby_plus takes the mid-discount slot (~13%) between hobby's "save 1 month" (~8%) and pro/team's "2 months free" (~17%).
Hobby Plus card — what users see
The CTA reads "Get Hobby Plus — $16.58/mo" (annual) or "Get Hobby Plus — $19/mo" (monthly).
Operator follow-up
This PR ships the UI for Hobby Plus. Checkout requires the api PR (InstaNode-dev/api#92) + 2 Razorpay plan IDs:
RAZORPAY_PLAN_ID_HOBBY_PLUSRAZORPAY_PLAN_ID_HOBBY_PLUS_ANNUALUntil both env vars are set, clicking "Get Hobby Plus" returns 503
billing_not_configured. The dashboard surfaces this in the existingcheckoutErrbanner.Custom-domain wiring follow-up — none required
CustomDomainPanelalready gates onteam.tier'scustom_domainsfeature flag from/api/v1/capabilities. The api side enables that flag for hobby_plus via plans.yaml. No new code paths required in the dashboard.Test plan
npm testpasses (474 passed | 3 skipped)npx tsc --noEmitpasses — TierKey union expanded cleanlyCo-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com