Awesome RxJS
A collection of awesome RxJS tools, frameworks and resources
- Getting Started
- Beyond the Basics
- Hot vs Cold Observables
- RxJS 5 vs RxJS 4
- Libraries Built with RxJS
- Talks
- Articles
- Examples
- Testing
- References
- People
- Community
- React & RxJS
- Angular2 & RxJS
- Other Reactive Programming Libraries
- Sources
Getting Started
- The introduction to Reactive Programming you've been missing
- Learnrx interactive operator tutorial
- Introduction to Reactive Programming - Egghead series by André Staltz for brand new to reactive programming
- Step-by-Step Async JavaScript with RxJS - Egghead series by John Lindquist
- Introducing the Observable - Egghead Series by Jafar Husain
- The Two Pillars of JavaScript — Pt 2: Functional Programming
- RxJS, Kefir and Bacon are "inspired by" FRP but not strict functional - Conal Elliott
- What is FRP aka. Functional Reactive Programming Specification - Conal Elliott
- Interactive diagrams of Rx Observables - André Staltz
- Rx Visualizer - Animated playground for Rx Observables by Misha Moroshko
- Learn RxJS - RxJS 5 descriptions, examples, and resources by Brian Troncone
- Reactive.how - Animated cards to learn Reactive Programming by Cédric Soulas
Beyond the Basics
- RxJS Beyond the Basics: Creating Observables from scratch - Egghead series by André Staltz
- RxJS Beyond the Basics: Operators in Depth - Egghead series by André Staltz
Hot vs Cold Observables
Paul Taylor (RxJS 5 Contributor) with the best explanation of Hot & Cold Observables yet. ReactiveX/rxjs#1121 (comment)
... "cold" and "hot" don't refer to unicast vs. multicast, they refer to the state of the computation. An Observable represents an asynchronous computation (aka, it's a function that can return multiple values between now and infinity).
"Cold" Observables are just like functions which haven't been called (subscribed to) yet. Each time you call it (aka, subscribe to it), you're re-running whatever calculation the Observable performs.
"Hot" Observables are just regular cold Observables that you've shoved a Subject between you and the cold Observable source. When you subscribe to it, you're really subscribing to the Subject over and over. Subjects can have any number of Observers (just like EventEmitter, etc.), but the original cold source has only one Observer (the Subject that's sitting between you and the source).
RxJS 5 vs RxJS 4
ReactiveX/RxJS - (RxJS 5)
This rewrite is meant to have better performance, better modularity, better debuggable call stacks, while staying mostly backwards compatible, with some breaking changes that reduce the API surface.
Reactive-Extensions/RxJS - (RxJS 4)
...is a set of libraries to compose asynchronous and event-based programs using observable collections and Array#extras style composition in JavaScript
Libraries Built with RxJS
- arkverse/lell - Reactive state, no boilerplate, just init and subscribe
- Cycle.js - A fully reactive JavaScript framework for Human-Computer Interaction.
- ds300/derivablesjs - Functional Reactive State for JavaScript and TypeScript
- WebRx - The Browser-based MVVM-Framework for ReactiveX-powered Single Page Applications.
- Angular2 - Angular is a development platform for building mobile and desktop applications
- garbles/yolk -
🥚 A library for building asynchronous user interfaces. - bcoop713/routerx - A Router for RxJS and Cycle.js applcations
- ngrx/store - RxJS powered state management inspired by Redux for Angular2
Talks
- Reactive JavaScript at Netflix, Microsoft and the World - Matthew Podwysocki (Dec 2015)
- What if the user was a function? - Andre Staltz (Jun 2015)
- Controlling Time and Space: understanding the many formulations of FRP - Evan Czaplicki (Sep 2014)
Articles
- Containers Are Dead. Long Live Observable Combinators - Matti Lankinen (Nov 2015)
- Angular - Introduction to Reactive Extensions (RxJS) - gsans (Sep 2015)
- A Dead-Simple Todo List with RxJS - Edan Schwartz (Sep 2015)
- ImpossÃvel errar com RxJS e Redux (pt-BR) Tiago Miranda (Mar 2018)
Examples
Testing
- How To Debug RxJS Code - Andre Staltz (Dec 2015)
- Testing reactive code - Dr. Gleb Bahmutov (Feb 2016)
- Testing your Rx application - RxJS documentation
- RxJs Testing in Real World Applications - Simon Jentsch (Feb 2016)
References
People
- Ben Lesh @BenLesh - Lead Maintainer of RxJS 5
- André Staltz @andrestaltz - Creator of Cycle.js
- Jafar Husain @jhusain - Technical Lead at Netflix, used to work at microsoft on Rx
- Matt Podwysocki @mattpodwysocki - Works at Netflix with Jafar on ReactiveX stuff
- Erik Meijer @headinthebox - Functional Programming Wizard
- ReactiveX Offical Twitter - Official ReactiveX/Rx twitter
- David Sheldrick @djsheldrick - Creator of Derivables.js
- Paul Taylor - RxJS 5 Contributor
Community
React & RxJS
- https://github.com/jas-chen/thisless-react
- FrintJS: Build reactive and scalable applications with RxJS and React
Angular2 & RxJS
- http://blog.lambda-it.ch/reactive-data-flow-in-angular-2/
- https://coryrylan.com/blog/angular-2-observable-data-services
Other Reactive Programming Libraries
- baconjs/bacon.js - FRP (functional reactive programming) library for Javascript.
- pozadi/kefir - FRP library for JavaScript inspired by Bacon.js and RxJS with focus on high performance and low memory consumption.
- [Highland.js] (http://highlandjs.org/) - Re-thinking the JavaScript utility belt, Highland manages synchronous and asynchronous code easily, using nothing more than standard JavaScript and Node-like Streams.
- cujojs/most - high performance FRP library.
Sources
4.x
https://cdnjs.com/libraries/rxjs/
5.x
https://unpkg.com/@reactivex/[email protected]/dist/global/Rx.js