Skip to content

feat: make free plans never expire#42

Merged
mckenziearts merged 2 commits into
mainfrom
feature/free-plans-never-expire
Feb 5, 2026
Merged

feat: make free plans never expire#42
mckenziearts merged 2 commits into
mainfrom
feature/free-plans-never-expire

Conversation

@mckenziearts

Copy link
Copy Markdown
Member

Summary

Free plans should not have an expiration date since there's nothing to bill. This PR ensures that subscriptions to free plans have ends_at and trial_ends_at set to null, making them perpetual.

Changes

  • HasPlanSubscriptions::newPlanSubscription() - Sets ends_at and trial_ends_at to null when subscribing to a free plan
  • Subscription::changePlan() - Sets ends_at and trial_ends_at to null when changing to a free plan

Rationale

Previously, free plans were treated like paid plans with a billing period, causing them to "expire" even though there's no payment involved. This led to:

  1. Confusing UX ("Your free plan expires in 30 days")
  2. Need for unnecessary renewal logic for free plans
  3. Users losing access to free tiers without reason

Behavior

Plan type ends_at
Paid Calculated from billing period
Free null (never expires)

  Free plans now have ends_at and trial_ends_at set to null,
  meaning they never expire and don't require renewal.
  - Update newPlanSubscription() to set null dates for free plans
  - Update changePlan() to set null dates when switching to free plan
@mckenziearts mckenziearts self-assigned this Feb 5, 2026
@mckenziearts mckenziearts merged commit 992f7a2 into main Feb 5, 2026
26 checks passed
@mckenziearts mckenziearts deleted the feature/free-plans-never-expire branch February 5, 2026 11:33
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