Skip to content

Instantly share code, notes, and snippets.

@jethrolarson
Last active March 26, 2022 01:14
Show Gist options
  • Save jethrolarson/b6e1a1f6f615b44ad3e959203f3c639e to your computer and use it in GitHub Desktop.
Save jethrolarson/b6e1a1f6f615b44ad3e959203f3c639e to your computer and use it in GitHub Desktop.
Reactive Stream Library Comparison

Flyd

https://github.com/paldepind/flyd
License: MIT
Size: 22.4 KB (3.4 KB gzip)
Functions: 16
Project Life: Good
Stars: 1129
Code Quality: Good Functional/Procedural
Comments: JSDoc
Quality Automation: Extensive unit tests, CI
Can end: yes

Pros

  • Functional and Fluent APIs
  • Short source code
  • Curried api
  • Nice Ramda interop
  • Fantasyland compatible

Cons

  • Small project
  • Not backed by big project
  • Need use or create extensions for some common stuff e.g. filter
  • Hard to pronounce
  • Examples aren't particularly attractive

Most

https://github.com/cujojs/most
License: MIT
Size: 112 KB (10 KB gzip)
Functions: 74
Project Life: Excellent
Stars: 2248
Code Quality: Good OO
Comments: JSDoc
Quality automation: Extensive unit tests, CI
Can end: yes

Pros

  • Fluent and Functional APIs
  • All the normal functions you'd want out of a FRP library
  • Fantasyland compatible
  • Most performant FRP option
  • Brian Cavalier
  • Elegant examples

Most Core

https://github.com/mostjs/core
License: MIT
Size: Tree shakable, cherry-pickable
Functions: 57
Project Life: Good
Stars: 81
Code Quality: Excelent OO FP Comments: JSDoc
Quality automation: Extensive unit tests, CI
Can end: yes

Pros

  • Functional API
  • Tree-shakable
  • Most performant FRP option
  • The very well-designed core of most.js
  • Types for TypeScript and Flow
  • Brian Cavalier

RxJS

https://github.com/reactivex/rxjs
License: Apache 2.0
Size: 428 KB (30 KB gzip) – Smaller builds available
Functions: Hundreds
Project Life: Excellent
Stars: 9,750 Code Quality: Good
Comments: JSDoc
Quality automation: Extensive unit tests, CI
Can end: yes

Pros

  • Most well-known
  • Backed by Microsoft
  • Every feature you could want in an FRP library and more
  • Mature docs
  • Versions for many other programming languages exist
  • Vast amount of learning materials
  • IE6+
  • Can create smaller builds if less stuff is needed

Cons

  • High code weight
  • Broad API could make it hard to learn
  • No hipster points
  • In the midst of a major revision

xstream

http://staltz.com/xstream/
License: MIT
Size: 35.7 KB (5 KB gzip)
Functions: 26
Project Life: Fair Stars: 1337
Code Quality: Good - Typescript
Comments: Sparse JSDoc
Quality automation: Extensive unit tests
Can end: yes

Pros

  • Backed by Cycle.js
  • Super small API
  • Performant
  • Andre Staltz

Cons

  • Not a lot of usage outside of Cycle.js
  • Few examples

Kefir

https://rpominov.github.io/kefir/
License: MIT
Dependencies: symbol-observable (17 LOC)
Size: 100 KB (10KB gzip)
Functions: 73
Project Life: Fair
Stars: 1355
Code Quality: Good
Comments: Sparse
Quality automation: Extensive unit tests, CI
Can end: yes

Pros

  • It's a kind of yogurt
  • Has adapter for partial.lenses
  • All the bells and whistles

Cons

  • Distinguishes between streams and properties
  • Not a lot of growth

Further Reading

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment