awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
felangel avatar

felangel/bloc

0
View on GitHub↗
12,455 stars·3,418 forks·Dart·MIT·20 viewsbloclibrary.dev↗

Bloc

This is a Dart state management library and architectural framework that decouples business logic from the user interface by transforming a stream of events into a stream of states. It implements a business logic component pattern to ensure that state transitions are predictable and testable.

The project distinguishes itself through advanced event stream processing, providing concurrency strategies to drop, restart, or queue incoming events. It includes a dedicated state persistence layer for saving and restoring application state to maintain session continuity, as well as tools for state history tracking to enable undo and redo functionality.

The framework encompasses a broad set of capabilities including context-based dependency injection for managing the lifecycle of state managers, and specialized testing tools for verifying precise sequences of state transitions. It also provides UI integration utilities for partial state selection, automated state-driven rebuilds, and the execution of side effects.

Developer productivity is supported via a CLI for boilerplate generation and source code analysis to maintain pattern consistency.

Features

  • Business Logic Components - Implements a business logic component pattern that decouples logic from the UI via event-state transformations.
  • Application State Managers - Transforms events into a predictable stream of states to decouple business logic from the user interface.
  • State Transformation Pipelines - Transforms incoming event streams into outgoing state streams using asynchronous handlers and transformers.
  • Persistent Application State - Provides a dedicated persistence layer for saving and restoring application state across sessions.
  • State Persistence Layers - Provides a dedicated persistence layer for saving and restoring application state to maintain session continuity.
  • Event Stream Concurrency Control - Implements advanced event stream processing with concurrency strategies to drop, restart, or queue incoming events.
  • State Transition Testing - Includes specialized tools to verify that specific events trigger a precise and repeatable sequence of state transitions.
  • Dependency Injection Providers - Injects state managers and repositories into specific UI subtrees while managing their automatic disposal.
  • Event Concurrency Strategies - Implements advanced concurrency strategies to drop, restart, or queue incoming event streams.
  • Event Controllers - Implements a system to control whether incoming events are processed sequentially, concurrently, dropped, or restarted.
  • Event-to-State Transformations - Decouples business logic from the UI by transforming an event stream into a predictable state stream.
  • Logic Decoupling - Decouples business logic from the presentation layer using a standardized event-state pipeline.
  • Context-Based Dependency Injection - Provides state managers to widget subtrees via the inherited widget system for lifecycle management and disposal.
  • State-Synchronized Bindings - Automatically synchronizes UI elements with application state changes in the business logic component.
  • UI State Recomposition - Triggers partial updates of the UI tree based on observable state changes.
  • State Management Libraries - Provides a comprehensive framework for managing application state and synchronizing it with user interface updates.
  • Storage Backend Configurators - Provides a system to connect state persistence to specific storage implementations via custom configuration.
  • State Storage Implementations - Enables the implementation of custom storage interfaces to control how and where state data is persisted.
  • Functional State Management - Allows updating application state via predefined functions that emit new values.
  • System State Verifiers - Verifies that specific events trigger the expected sequence of state changes in a repeatable manner.
  • Multiplatform Code Sharing - Implements business logic in a platform-agnostic way to reuse the same state management code across interfaces.
  • Dependency Injection Frameworks - Includes a dependency injection system to manage the lifecycle and disposal of state managers and repositories.
  • State-Driven Side Effects - Allows executing one-time actions like navigation or dialogs in response to state transitions.
  • Side Effect Handlers - Provides a mechanism to simultaneously rebuild the interface and execute side-effect listeners.
  • Dependency Mocking - Provides utilities to create mock state management instances to isolate business logic from external dependencies during testing.
  • Stream Stubbing - Implements utilities to define a fixed sequence of states for a manager to emit for synchronized test validation.
  • Partial State Selectors - Implements partial state selection to trigger rebuilds only when specific state properties change.
  • State Reconciliation Strategies - Filters state updates to trigger user interface rebuilds only when specific properties of the state change.
  • Undo-Redo History - Records a sequence of emitted states to enable undo and redo functionality by traversing the state timeline.
  • Development Frameworks - BLoC pattern implementation for state management.
  • State Management - Implements the BLoC pattern for predictable state management.

Star history

Star history chart for felangel/blocStar history chart for felangel/bloc

How this analysis was created: This summary and feature list were written by an AI model that read the project's README and public documentation pages. Each feature links to the documentation it came from; stars, license and language come straight from the GitHub API. The model does not read the source code, and the analysis is refreshed when the project is re-analysed. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Open-source alternatives to Bloc

Similar open-source projects, ranked by how many features they share with Bloc.
  • rrousselgit/providerrrousselGit avatar

    rrousselGit/provider

    5,258View on GitHub↗

    Provider is a state management and dependency injection framework for Flutter. It simplifies the sharing of data across a widget tree by using a system that manages the injection of objects and services with automated lifecycle and resource disposal. The framework distinguishes itself through reactive state containers that bridge asynchronous data from streams and futures directly into the component tree. It supports state derivation, allowing new objects to be constructed and synchronized based on values observed from multiple upstream providers. To maintain performance, it provides selectiv

    Dart
    View on GitHub↗5,258
  • zerobias/effectorzerobias avatar

    zerobias/effector

    4,837View on GitHub↗

    Effector is a reactive state management library and data flow orchestrator designed for building complex, event-driven applications. It models application logic as a directed acyclic graph, where state updates and asynchronous side effects propagate automatically through declarative pipelines. By decoupling business logic from user interface layers, it allows developers to maintain state in independent containers that communicate via standard interfaces, ensuring the system remains framework-agnostic. The library distinguishes itself through its robust support for isolated execution scopes, w

    TypeScript
    View on GitHub↗4,837
  • day8/re-frameday8 avatar

    day8/re-frame

    5,532View on GitHub↗

    re-frame is a functional framework for building single-page applications in ClojureScript. It provides a centralized, immutable database that serves as the single source of truth for the entire application state, enforcing a strict unidirectional data flow where events trigger state transitions and subsequent view updates. The framework distinguishes itself through a reactive signal graph and an interceptor-based middleware pipeline. By treating application logic as a sequence of data-driven events and declarative side effects, it decouples business logic from the view layer. This architectur

    Clojureclojurescriptre-framereact
    View on GitHub↗5,532
  • effector/effectoreffector avatar

    effector/effector

    4,837View on GitHub↗

    Effector is a reactive state management library designed for building complex, event-driven applications. It functions as a data flow engine that models application logic as a directed acyclic graph, ensuring that state updates propagate automatically through interconnected nodes. By utilizing atomic state updates and declarative unit composition, the library maintains data consistency and provides a predictable execution model for managing application state. The project distinguishes itself through its framework-agnostic architecture, which decouples business logic from user interface implem

    TypeScriptbusiness-logiceffectorevent-driven
    View on GitHub↗4,837
See all 30 alternatives to Bloc→

Frequently asked questions

What does felangel/bloc do?

This is a Dart state management library and architectural framework that decouples business logic from the user interface by transforming a stream of events into a stream of states. It implements a business logic component pattern to ensure that state transitions are predictable and testable.

What are the main features of felangel/bloc?

The main features of felangel/bloc are: Business Logic Components, Application State Managers, State Transformation Pipelines, Persistent Application State, State Persistence Layers, Event Stream Concurrency Control, State Transition Testing, Dependency Injection Providers.

What are some open-source alternatives to felangel/bloc?

Open-source alternatives to felangel/bloc include: rrousselgit/provider — Provider is a state management and dependency injection framework for Flutter. It simplifies the sharing of data… zerobias/effector — Effector is a reactive state management library and data flow orchestrator designed for building complex, event-driven… day8/re-frame — re-frame is a functional framework for building single-page applications in ClojureScript. It provides a centralized,… effector/effector — Effector is a reactive state management library designed for building complex, event-driven applications. It functions… immutable-js/immutable-js — Immutable.js is a library of persistent data structures and a functional state management toolkit. It provides a… jetbrains/compose-multiplatform — Compose Multiplatform is a declarative user interface framework that enables the development of native graphical…