Anatomy Of A Profitable Open-Source Project
It’s challenging to find public business metrics about digital products. Most companies keep these secret for fear that competitors might replicate their strategies.
We’ve developed a business based on an open-source platform called react-admin. Embracing the open-source spirit, we’re sharing the key performance indicators of this business. We hope it will help other open-source developers build their own business.
This article is the second in a series about transforming React-Admin into a profitable open-source project with nearly €1M in revenue. Read the other articles in this series:
- Turning Open-Source Into Profit: Our Journey.
- Anatomy Of A Profitable Open-Source Project (this article).
- From Open-Source Project to Marketable Product.
React-admin was launched in 2016 as a frontend framework for building data-driven applications atop of REST/GraphQL APIs. It was created to leverage the code we developed for our clients. We have continually updated the code, incorporating new features and documentation since its inception.
React-admin has quickly gathered a lot of interest in the open-source community. Today, it has more than 23,000 stars on GitHub.
That’s 23,000 real developers who bookmarked this project. But how many actively use it?
Applications built with React-Admin are accessed almost 500,000 times every weekday. Every minute, roughly 350 people initiate a new session on an application developed using React-Admin. These people come from all over the world.
We gather these metrics using a custom, anonymous telemetry tag in React-Admin, which users can choose to disable.
In July 2020, we launched an Enterprise Edition of react-admin. While only a small portion of our user base subscribes to this edition, the number of active subscribers is steadily increasing.
The core of react-admin is free and open-source. The paid version, react-admin Enterprise Edition, contains additional modules and support. This follows the OpenCore business model, popularized by renowned libraries like Kafka, GitLab, and Elastic.
React-Admin Enterprise Edition is subscription-based, starting at €135/month. Customers pay for the duration of their project development. Once development concludes, they may discontinue the subscription and still use the code for free. On average, customers subscribe for 9 months.
Subscription durations vary significantly. There are two customer cohorts: those who subscribe for a few months and those who subscribe for several years. About one-third of our customers choose a yearly plan (which is 10% cheaper), while the rest opt for monthly plans.
Our monthly customer loss rate, or "churn," is high due to our billing model, which aligns with project development duration. The churn rate stands at 7%.
Subscription pricing is team-size dependent:
90% of our customers are on the “Team” plan. We operate on a trust basis regarding team size; we verify only that those contacting our support are part of the subscription.
Since 2020, we've had over 600 paying customers.
The Enterprise Edition includes 16 private modules, offering features like authorization, live updates, and navigation. The most popular modules are:
- Form Layout (alternative layouts for Edition and Creation pages)
- Navigation (breadcrumb, menus, and alternative app layouts)
- Relationships (specialized components for displaying and editing records in a many-to-many relationship)
- Markdown (render and edit Markdown content)
- Editable Datagrid (spreadsheets-like edition of records)
Download numbers are interpreted cautiously, as large teams with active CI can skew the totals.
The Enterprise Edition also gives access to support by email. We handle about a dozen support requests daily, mostly complex issues as easier ones are resolved using our documentation. This equates to approximately 4 hours of support work daily.
React-Admin's revenue is solely from customer subscriptions. We don’t utilize ads, donations, training, certifications, or sponsorships. Although React-Admin generates significant business opportunities for our web agency, these are not included in the React-Admin revenue.
The average revenue per user (ARPU) is 1,400€. This figure is skewed by a few large, long-term customers, even though most subscribe to the cheapest plan for only a few months.
The average monthly revenue over the past year is €35k, projecting about €420k in revenue this year for React-Admin Enterprise Edition.
Revenues have increased 35% year over year. Since inception, react-admin has generated approximately €1 Million in subscription revenue. Indirect revenue, including business for our web agency, is significantly higher.
Cost-wise, we dedicate 4 full-time employees to this product: 3 developers, and combined roles of half Sales and half Marketing assistant.
Our technical costs are minimal, around €2k annually (for hosting an npm registry and a customer dashboard). Blog content creation is part of the development team’s responsibilities, so it's included in the cost of the 4 full-time employees.
Sales tool expenses are modest. We use LinkedIn for lead generation and a cost-effective CRM (Highrise) for tracking. Communication is through email, WhatsApp, and chat (powered by Chatwoot).Our marketing budget is around €20k this year, primarily for tech newsletter sponsorships.
In total, the development, support, updates, prospecting, and operations amount to approximately 350k€ annually. This confirms that react-admin is profitable.
As for the Average Rate of Return (ARR), we don't calculate it; React-Admin is not viewed as an investment. All profits are reinvested into the product.
The revenue from the Enterprise Edition covers the full-time salaries of our four-person team and also funds the development of the open-source version of React-Admin.
An annual revenue of €400k may seem modest compared to larger SaaS and enterprise software companies. Indeed, there is potential for much greater earnings, and if you're involved in SaaS product development, you're probably not impressed.
But this business line is profitable, and a great bonus to our core business (web development). We have no debt, and we're free to do whatever we want.We operate debt-free, with the autonomy to make our own decisions. There's no pressure to satisfy investors or pursue aggressive growth. In essence, we are happy with what we have. We consider ourselves extremely lucky to earn a living through open-source work, and we are immensely thankful to our customers for making this possible.
How did we get there? Read the next article in this series to find out.