In March 2023, our extension marketplace crossed the 400-extension threshold. The original runtime — a sandboxed iframe model we shipped in late 2021 — had held up well, but every cross-extension call still round-tripped through the main thread. Profiling showed 12ms of overhead per invocation.

When the Message Bus Became the Bottleneck

The breaking point came during an internal dogfooding sprint in April. One workflow chained three extensions together — a git status checker, a branch name formatter, and a PR creator. Each hop stacked latency; the workflow took 340ms end-to-end, and 280ms of that was message serialization.

We'd built a distributed system inside a single application, and the isolation model had stopped being the right tradeoff.