Proof
Comparison with alternatives
Compare execution responsibilities and measured primitives without turning unlike architectures into a ranking.
Comparison with alternatives
The benchmark packages start from different problems:
| Package | Primary unit | Native strength | What the measured primitive does not provide |
|---|---|---|---|
| UseCase Forge | typed Command Execution | admission, queues, cancellation, terminal Result, history | provider graph, automatic computed values, broad adoption |
| Bloc | Event or Cubit method | mature state transitions and ecosystem | one shared Command Entry/history contract |
| Riverpod | Provider or Notifier | dependencies, cache, recomputation, disposal | universal Command admission and terminal history |
| MobX | Observable, Action, Reaction | fine-grained automatic reactivity | Command queues and terminal Results |
| Redux | Action, Reducer, Middleware | explicit unidirectional Store updates | a standard async Command lifecycle |
UseCase Forge is unnecessary for a single local observable value. It becomes relevant when admission, keyed concurrency, cooperative cancellation, terminal outcomes, and history must follow one contract across callers.
Conversely, UseCase Forge does not replace a dependency graph or fine-grained presentation reactivity. Combining packages is reasonable only when each owns a distinct boundary.
Reading the timing table
The minimal timing row on Performance results shows that Bloc, Riverpod, MobX, and Redux perform less work and were faster in that scenario. It does not prove they reproduce UseCase Forge lifecycle semantics. It also does not prove that those semantics matter in a particular application.
Review the complete feature comparison, package versions, and raw measurements before choosing an architecture.