OpenForge 2.x served us well for three years. It powered thousands of production applications, handled billions of requests, and built a community of 400+ contributors. But by late 2025, we hit walls that patches couldn't fix.
The first wall was performance. The v2 runtime loaded the entire framework on every cold start, even if your route only needed the router and one middleware. Tree-shaking was impossible because of circular dependencies deep in the core. We benchmarked a hello-world route at 180ms cold start on Lambda. That's not acceptable.
The second wall was the plugin API. Plugins in v2 could hook into 47 different lifecycle events, many of which had overlapping concerns. Plugin authors told us the API was confusing, brittle, and hard to test. We agreed. The v3 plugin API has 8 hooks, each with a clear purpose and strong type contracts.
The third wall was TypeScript. OpenForge 2.x was written in JavaScript with type definitions bolted on. Some types were wrong. Some were incomplete. Generic inference was fragile. For a framework that promises type safety, our own codebase wasn't living up to the standard.
Version 3 is a ground-up rewrite in TypeScript. The core runtime is 60% smaller. Cold starts are under 50ms. The plugin API is clean and well-documented. And every public API surface is tested against TypeScript's strictest settings. It took eight months, 1,200+ commits, and contributions from 80 people. We think it was worth it.