A Swift implementation of ReactiveX for composing asynchronous and event-driven code using observable sequences.
RxSwift is the Swift-specific implementation of the Reactive Extensions (ReactiveX) standard, bringing reactive programming to Apple platforms and Linux. It enables easy composition of asynchronous operations and data streams through the Observable pattern, unifying KVO observation, async operations, and UI events under a single abstraction. This simplifies complex asynchronous and event-driven programming by treating all data streams as sequences, making code more declarative, composable, and maintainable.
Swift developers building applications for iOS, macOS, tvOS, watchOS, or Linux who need to manage complex asynchronous workflows, event handling, and data stream composition. It is particularly suited for those implementing reactive programming patterns in Apple ecosystem apps.
Developers choose RxSwift for its true Swift-native API that adheres to the ReactiveX standard, providing a unified and composable abstraction over diverse asynchronous sources. Its modular design with separate components for core functionality, UI integration (RxCocoa), and testing offers a comprehensive and maintainable solution for reactive programming in Swift.
Reactive Programming in Swift
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Offers a true Swift-first implementation of ReactiveX, ensuring idiomatic code while maintaining cross-platform standards, as emphasized in the README's philosophy section.
Includes a wide range of operators for transforming, filtering, and combining Observable sequences, enabling complex workflows like the throttled GitHub search example shown in the usage section.
Compatible with iOS, macOS, tvOS, watchOS, and Linux, making it versatile for diverse Apple ecosystem and Linux development, as highlighted in the platform badges.
Split into core RxSwift, UI-focused RxCocoa, Relay wrappers, and testing libraries, allowing selective integration based on project needs, illustrated in the component dependency diagram.
The README admits a critical, unresolved cross-dependency bug in Swift Package Manager since 2020 (SR-12303), complicating builds and requiring workarounds for some projects.
Requires understanding reactive concepts like Observables, operators, and hot/cold sequences, with documentation scattered across ReactiveX.io and separate guides, increasing onboarding time.
For simple async tasks, RxSwift's layered abstraction can introduce unnecessary complexity and performance penalties compared to lighter solutions like Swift's native concurrency features.