A lightweight, header-only, high-performance reactive programming framework for C++20, bringing React/Vue-style dataflow to native applications.
Reaction is a lightweight, header-only reactive programming framework for C++20 that brings React/Vue-style declarative dataflow to native applications. It enables automatic dependency tracking, efficient change propagation, and high-performance reactive computations for scenarios like UI dataflow, game logic, and real-time calculations.
C++ developers building performance-sensitive applications requiring reactive dataflow, such as UI frameworks, game engines, financial systems, or real-time simulation software.
Developers choose Reaction for its combination of high performance (outpacing alternatives like RxCpp and Folly), modern C++20 features, header-only simplicity, and automatic dependency management with safety guarantees.
A lightweight, header-only, high-performance reactive programming framework for C++20.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Outperforms RxCpp and Folly by 2-14x in dependency tests, enabling millions of updates per second for high-frequency applications like financial simulations.
Uses concepts and compile-time type checking to enforce safety, with value semantics that prevent memory leaks and common errors in reactive graphs.
Framework automatically constructs dependency DAGs, detects cycles, and prunes updates, eliminating manual wiring required in alternatives like RxCpp.
expr and calc provide React-like APIs that integrate naturally with C++, reducing boilerplate compared to verbose template syntax in other libraries.
Forces adoption of GCC 10+, Clang 12+, or MSVC 19.30+, which may block teams in conservative industries or with legacy codebases from using it.
Header-only design and heavy template metaprogramming can significantly increase compile times and binary size in large projects with complex reactive expressions.
As a newer project, it lacks the extensive documentation, community plugins, and third-party integrations available for established frameworks like RxCpp or Qt.