๐ Ported Example Benchmark Suite Live on blocsignal.dev!
If youโve been evaluating BlocSignalโthe monorepo package bridging the predictable event-driven BLoC architecture with Rody Davis's reactive signals v7 primitivesโweโve got something big to share.
We just launched a dedicated Ported Example Suite containing 16 full-featured, runnable benchmark applications adapted directly from the official felangel/bloc (10 apps) and rodydavis/signals.dart (6 apps) example repositories.
๐ Explore the Live Benchmark Suite: https://blocsignal.dev/ported-examples
๐ก Why Port These Benchmark Apps?
State management benchmarks are best understood through real-world applications. By porting these established examples 1-to-1, developers can compare BlocSignal side-by-side with original implementations to see concrete architectural benefits:
1. Synchronous Frame Updates (Better Test DX)
In classic BLoC, state updates propagate asynchronously over microtask streams. In BlocSignal, emit() updates state synchronously on the exact same frame. This eliminates microtask queue latency, making widget building feel instant and allowing unit tests to assert expect(bloc.stateValue, ...) without pumpAndSettle or stream delays.
2. Reactive computed() Derivations (Zero Event Plumbing)
In complex apps like Todos or Dynamic Forms, classic BLoC often requires dispatching intermediate filter events or wiring up CombineLatestStream. With BlocSignal, you declare late final ReadonlySignal<List<Todo>> filteredTodos = computed(...) right inside the constructor. When state changes, downstream signals derive updated values reactively and lazily.
3. Streamless Event Concurrency Transformers (Lower Overhead)
Event concurrency transformers (sequential(), droppable(), restartable()) in BlocSignal are implemented as streamless higher-order functions using pure Dart Mutex locks. You get full request-cancellation and debouncing capabilities (e.g. in GitHub Search) with zero RxStream memory allocations.
๐ฆ What's Included in the Suite?
Ports from felangel/bloc (10 Applications)
- โฑ๏ธ
flutter_timerโ Ticker countdown with pause/resume & automatic teardowns - ๐
flutter_todosโ Flagship Todo CRUD app withcomputedreactive filters & stats - ๐ฆ๏ธ
flutter_weatherโ Weather search with temperature toggle & cross-cubit theme driving - ๐
flutter_dynamic_formโ Cascading vehicle dropdowns (Brand โ Model โ Trim) - ๐ช
flutter_wizardโ Multi-step registration flow with step validation signals - โ
flutter_form_validationโ Synchronous real-time input field validation - โก
bloc_concurrency_visualizerโ Interactive execution timeline for streamless transformers - ๐
github_searchโ Debounced repository search usingrestartable() - ๐
flutter_complex_listโ Multi-selection list, batch deletion &BlocSignalSelectorrebuilds - ๐
flutter_bloc_with_streamโ Stream interop viaStreamBlocSignal&.toStream()
Ports from rodydavis/signals.dart (6 Applications)
- ๐งฎ
eval_calculatorโ Expression parsing & arithmetic state machine - ๐จ
flutter_colorbandโ Reactive RGBA color swatches & slider composition - ๐
get_it_signalsโ Service locator DI integration withget_it - โณ
flutter_asyncโ Async state handling (AsyncData,AsyncLoading,AsyncError) - ๐๏ธ
clean_architectureโ 3-tier Presentation / Domain / Data architecture - ๐พ
persist_shared_preferencesโ State hydration withHydratedCubitSignal
Each card on blocsignal.dev/ported-examples features dual direct links pointing to both our BlocSignal monorepo source code and the original upstream source code on GitHub.
Check out the benchmark suite and let us know what you think! โญ๏ธ
Top comments (0)