Every Go web framework comparison post says the same thing: "Gin is the most popular, Fiber is the fastest, Echo is a good balance." Chi barely gets a paragraph. I'm building a multi-tenant deployment platform in Go. The API has 60 endpoints across 12 route groups: account management, tenant CRUD, deployments, services, environment variables, custom domains, network rules, GitHub integration, registry credentials, real-time SSE events, admin tools, and health checks. I chose Chi. Months later, I still think it was the right call. Here's why. The Decision Point When I started, the choice came down to Gin and Chi. I'd used Gin before and liked it fine. But three things pushed me toward Chi: Chi handlers are just http.HandlerFunc . That's it. No custom context type, no framework-specific signature. Every handler I write looks like this: func ( s * Server ) handleCreateTenant ( w http . ResponseWriter , r * http . Request ) { provider := middleware . GetProvider ( r . Context ()) // ...…