When people think about SaaS pricing, they usually focus on one question:
“How much should I charge?”
While building LaunchAlly, I discovered that a much more important question is:
“What should I limit?”
A good free plan isn’t about making your product frustrating to use. It’s about giving users enough value to understand why the paid version exists.
Why I don’t like locked features
Many products disable half of their interface for free users.
Buttons are greyed out.
Pages say “Upgrade to continue.”
Features are everywhere, but almost nothing works.
Personally, I don’t enjoy that experience.
I wanted LaunchAlly to feel like a complete product, even on the Free plan.
Instead of locking features…
I decided to limit usage.
For example, Free users can:
create one project
invite up to three team members
deploy five times per month
They still experience the real product.
They simply reach a point where upgrading becomes the logical next step.
Backend limits matter
One lesson I learned quickly is that plan restrictions should never live only in the frontend.
Write on Medium
If React hides a button, someone can still call your API directly.
Every important limit should be enforced on the server.
That keeps your pricing fair and your infrastructure protected.
Simplicity wins
I considered adding dozens of different restrictions.
Storage limits.
API limits.
Log limits.
Repository limits.
Eventually I realised that simpler is better.
A customer should understand your pricing in seconds.
Think about growth
The best limits encourage growth instead of blocking it.
If someone reaches the maximum number of deployments every month, that’s a great sign.
It means they’re actively using your product.
That’s exactly the person who might become a paying customer.
Final thoughts
Pricing isn’t just about money.
It’s part of your product design.
A well-designed Free plan helps people discover value.
A well-designed Pro plan removes friction.
Finding that balance has been one of the most interesting parts of building my SaaS, and I’m sure I’ll keep refining it as LaunchAlly grows.