There is a tempting first read of KickJS where ctx looks like a friendlier wrapper around Express's req / res . It is not. Treating ctx as " req in disguise" is the single fastest way to write code that fights the framework — you reach for req.user , you read headers off req.headers , you sprinkle requireX(ctx) helpers around handlers, and the type system never quite catches up. Once you understand that ctx is a typed, contributor-populated object that lives on top of a per-request store — and that the lifecycle is staged across phases the framework actually controls — the whole stack starts pulling in the same direction. This article walks the KickJS request lifecycle end to end as a conceptual model you can apply to any KickJS app. The phases, in firing order A request to a KickJS app is not a flat chain.…