Looking back at 740k+ installs

Authors
740,000+ installs across 54 Leaf packages since 2019

We checked Packagist this week and the Leaf packages have passed 740,000 installs between them. That number crept up on us. Leaf started as a tiny router I wrote for my own projects in 2019, and the first release on Packagist went up on the 17th of October that year, so this is a good week to stop and look back at how we got here.


Our Story

Leaf was built as a lightweight router with a few helper classes around it, just so folks could build simple apps and APIs quickly without worrying about the bloat from bigger frameworks and the isolation of tiny alternatives. Leaf eventually grew, and somewhere around v3, we discovered the direction we wanted to build Leaf in.

  • v3 introduced functional mode, modules and the crazy simplicity we're known for...
  • v4 built on top of that, sharpening everything we had built in v3 and making the whole ecosystem more mature...
  • v5 took everything we'd learnt about simplicity, modularity and our own experience with AI and shaped Leaf into the very first AI-native framework...built with agents in mind

This month, most of our modules are doing a record high in downloads, and per feedback received, lots of AI-users are enjoying a smooth building experience with lower costs and better context

02505007501,0002020202120222023202420252026// INSTALLS PER DAY, ALL LEAF PACKAGESv2v3 · modules36 → 42 a day (+17%)v4666 → 694 a day (+4%)v5 · agents544 → 852 a day (+57%)v1 · v2v3 · v4v52019-10: 4 installs per day2019-11: 6 installs per day2019-12: 6 installs per day2020-01: 8 installs per day2020-02: 12 installs per day2020-03: 10 installs per day2020-04: 9 installs per day2020-05: 13 installs per day2020-06: 12 installs per day2020-07: 19 installs per day2020-08: 10 installs per day2020-09: 10 installs per day2020-10: 13 installs per day2020-11: 16 installs per day2020-12: 14 installs per day2021-01: 20 installs per day2021-02: 17 installs per day2021-03: 42 installs per day2021-04: 21 installs per day2021-05: 16 installs per day2021-06: 15 installs per day2021-07: 16 installs per day2021-08: 13 installs per day2021-09: 16 installs per day2021-10: 36 installs per day2021-11: 42 installs per day2021-12: 70 installs per day2022-01: 112 installs per day2022-02: 83 installs per day2022-03: 85 installs per day2022-04: 114 installs per day2022-05: 108 installs per day2022-06: 89 installs per day2022-07: 104 installs per day2022-08: 182 installs per day2022-09: 206 installs per day2022-10: 213 installs per day2022-11: 137 installs per day2022-12: 135 installs per day2023-01: 189 installs per day2023-02: 160 installs per day2023-03: 358 installs per day2023-04: 291 installs per day2023-05: 369 installs per day2023-06: 341 installs per day2023-07: 459 installs per day2023-08: 401 installs per day2023-09: 462 installs per day2023-10: 402 installs per day2023-11: 468 installs per day2023-12: 416 installs per day2024-01: 500 installs per day2024-02: 531 installs per day2024-03: 489 installs per day2024-04: 479 installs per day2024-05: 436 installs per day2024-06: 476 installs per day2024-07: 453 installs per day2024-08: 491 installs per day2024-09: 529 installs per day2024-10: 533 installs per day2024-11: 660 installs per day2024-12: 432 installs per day2025-01: 666 installs per day2025-02: 694 installs per day2025-03: 649 installs per day2025-04: 652 installs per day2025-05: 793 installs per day2025-06: 743 installs per day2025-07: 572 installs per day2025-08: 511 installs per day2025-09: 580 installs per day2025-10: 465 installs per day2025-11: 496 installs per day2025-12: 482 installs per day2026-01: 490 installs per day2026-02: 490 installs per day2026-03: 467 installs per day2026-04: 575 installs per day2026-05: 560 installs per day2026-06: 467 installs per day2026-07: 544 installs per day2026-08: 852 installs per day2026-09: 852 installs per day2026-10: 924 installs per day924

Daily installs across every Leaf package, averaged by month, from the first Packagist release to this month. Each line marks a major version.

The big change

Throughout our journey, I'd say our biggest changes were v3 and v5. PHP frameworks traditionally fell into one of 2 categories:

  • Batteries-included frameworks, meaning they give everything you'd need (or not need) to build your app, from authentication, queues, database stuff and more. In modern frameworks, all of those are initialized for you, meaning they're there whether you need them or not
  • Microframeworks, which only give a router and probably an HTTP abstraction and error handling. Every other thing you'd add in your app is either a third-party install or a self-written feature

We took both of those concepts and combined them to make Leaf 3, introducing modules and making Leaf faster and lighter than ever, and that's why v3 was a major turning point for us.

But while this v3 a big change, we took an even bigger bet for v5.

Most devs couldn't yet wrap their heads around the fact that AI is here to stay, but we decided to double down on AI. We knew that at some point, we'd have more AI writing code than real humans and decided to rebuild the framework from the ground up with that in mind.

  • A new route parser
  • a new error handling system which AI could plug into and fix production bugs in near real-time
  • Built-in AI rules
  • Shared Leaf app context
  • AI docs & manuals
  • and a whole lot more AI-first tooling.

Of course, the human element from v4 still exists in its full glory, but the new AI infra has unlocked a whole new world of possibilities for building with Leaf, and we're seeing all the love from builders around the world.

From "AI slop" to the way things get built

But before all the love, there was a shit ton of hate. Leaf 5 was labelled as "AI slop" and we were literally laughed at for even suggesting the idea of a framework made for agents.

But just 2 months in, the whole narrative flipped. Most of the people we talk to now expect their next project to be written mostly by an agent, and they want a framework that makes that go well instead of pretending it is not happening.

The install graph shows the same shift. Since Leaf 5 shipped in August, installs have pretty much doubled compared to the months before. While Leaf 5 and all its tools have been blooming, Leaf MVC 5, has held steady at roughly 21 a day through the same period. Put the two together and the share of Leaf installs that are MVC projects has gone from about one in two at the start of 2025 to about one in three today.

// SHARE OF LEAF INSTALLS THAT ARE MVC PROJECTSJanuary 2025: 52% of Leaf installs are MVC projects52%// JANUARY 2025→October 2026: 34% of Leaf installs are MVC projects34%// OCTOBER 2026Leaf MVCPlain Leaf

This might seem strange, but we think we know why. Leaf MVC exists for humans: it gives you folders and conventions, plus a whole bunch of scaffolds and tools that make a project easier to hold in your head when you are the one typing. That is still valuable, and it is still what we recommend when a team is building something by hand.

However, fewer and fewer humans are starting a project from scratch themselves. The agent does, and an agent does not need the structure the same way a person does; it needs clear rules, small readable files, modules it can plug in instead of rewrite, and a memory of what was decided.

Leaf 5 was built around exactly that, with .leaf/CONTEXT.md, agent-readable docs and an error screen that hands the fix to your assistant, and those things work the same whether the project is MVC or plain Leaf. So MVC or not, agents are having a good time with Leaf, and the numbers say the plain version is where most of them start.

What we learned

It's been just a few months since Leaf 5, but Leaf itself is by no means new. We've had 5 different iterations, gone through so many eras of PHP and code in general. Here are some of our favourite lessons:

  • Small packages were the right bet. Splitting Leaf into modules felt like extra work in 2021, and it still means more releases to manage, but it is the reason a Leaf app stays small and the reason the install graph keeps climbing even for packages that are three years old.

  • The big jumps came from rewrites, never from marketing. 2021, 2025 and 2026 each show a step up in the graph, and each one lines up with a major version rather than a campaign. People install Leaf when it gets better at the thing they need.

  • The community carried it between the jumps. Leaf has never had a company behind it or a marketing budget. Besides this, it has never had more than a couple of people working on it at any one time. Every plateau in the graph is a period where the community kept using it, kept reporting bugs, and kept telling friends while we built the next version.

Thank you

This one is for everyone who ran composer require leafs/* at some point in our journey. The early adopters in Accra and all over the world who used v1 in production when it had no business being there. The contributors who sent fixes for modules I had not looked at in months. The people who wrote tutorials, answered questions on Discord, and moved their teams onto Leaf. And lately, the AI agents filing bug reports at 2am, which we did not see coming in 2019.

Building Leaf from a tiny country in Africa, and seeing its reach on pretty much every continent is one of the biggest honours ever, and it's all thanks to you.

countries

There's still a ton more stuff coming. Leaf 5 is still rolling more features out across modules, a desktop app in private testing, and the next 740,000 installs should take a lot less than seven years.

Thank you for being here for the first batch.

Love - Michael & the team 🍁