What is RxJS?

RxJS is a library for reactive programming using Observables, to make it easier to compose asynchronous or callback-based code. This project is a rewrite of Reactive-Extensions/RxJS with better performance, better modularity, better debuggable call stacks, while staying mostly backwards compatible, with some breaking changes that reduce the API surface.
RxJS is a tool in the Concurrency Frameworks category of a tech stack.
RxJS is an open source tool with 19.7K GitHub stars and 2.3K GitHub forks. Here’s a link to RxJS's open source repository on GitHub

Who uses RxJS?

156 companies reportedly use RxJS in their tech stacks, including Web Apps, StyleSeat, and Curalate.

228 developers on StackShare have stated that they use RxJS.

Why developers like RxJS?

Here’s a list of reasons why companies and developers use RxJS
Top Reasons
Be the first to leave a pro
RxJS Reviews

Here are some stack decisions, common use cases and reviews by companies and developers who chose RxJS in their tech stack.

Eyas Sharaiha
Eyas Sharaiha
Software Engineer at Google · | 20 upvotes · 44.7K views
Angular 2

One TypeScript / Angular 2 code health recommendation at Google is how to simplify dealing with RxJS Observables. Two common options in Angular are subscribing to an Observable inside of a Component's TypeScript code, versus using something like the AsyncPipe (foo | async) from the template html. We typically recommend the latter for most straightforward use cases (code without side effects, etc.)

I typically review a fair amount of Angular code at work. One thing I typically encourage is using plain Observables in an Angular Component, and using AsyncPipe (foo | async) from the template html to handle subscription, rather than directly subscribing to an observable in a component TS file.

Subscribing in components

Unless you know a subscription you're starting in a component is very finite (e.g. an HTTP request with no retry logic, etc), subscriptions you make in a Component must:

  1. Be closed, stopped, or cancelled when exiting a component (e.g. when navigating away from a page),
  2. Only be opened (subscribed) when a component is actually loaded/visible (i.e. in ngOnInit rather than in a constructor).

AsyncPipe can take care of that for you

Instead of manually implementing component lifecycle hooks, remembering to subscribe and unsubscribe to an Observable, AsyncPipe can do that for you.

I'm sharing a version of this recommendation with some best practices and code samples.

#Typescript #Angular #RXJS #Async #Frontend

See more
Praveen Mooli
Praveen Mooli
Technical Leader at Taylor and Francis · | 8 upvotes · 15.8K views
Angular 2
AWS Lambda
Amazon SQS
Amazon SNS
Amazon Kinesis Firehose
Amazon Kinesis
Spring Boot

We are in the process of building a modern content platform to deliver our content through various channels. We decided to go with Microservices architecture as we wanted scale. Microservice architecture style is an approach to developing an application as a suite of small independently deployable services built around specific business capabilities. You can gain modularity, extensive parallelism and cost-effective scaling by deploying services across many distributed servers. Microservices modularity facilitates independent updates/deployments, and helps to avoid single point of failure, which can help prevent large-scale outages. We also decided to use Event Driven Architecture pattern which is a popular distributed asynchronous architecture pattern used to produce highly scalable applications. The event-driven architecture is made up of highly decoupled, single-purpose event processing components that asynchronously receive and process events.

To build our #Backend capabilities we decided to use the following: 1. #Microservices - Java with Spring Boot , Node.js with ExpressJS and Python with Flask 2. #Eventsourcingframework - Amazon Kinesis , Amazon Kinesis Firehose , Amazon SNS , Amazon SQS, AWS Lambda

To build #Webapps we decided to use Angular 2 with RxJS

See more
Lars Lockefeer
Lars Lockefeer
Mobile Tech Lead at Picnic · | 2 upvotes · 7.9K views
atPicnic TechnologiesPicnic Technologies
React Storybook
React Native

Earlier this year, we started developing a new app to help our runners deliver groceries to our customers. We chose React Native over a native app or a PWA and are really happy with it. So far, we really like what we are seeing. Development speed is fast and the tooling is awesome. The “learn once, write anywhere”-promise is really fulfilled and when we ran our project for the first time on iOS after a few weeks of development, we were excited to see how well it worked and what it looked like.

Read our blog post to learn more about how we use React Native, TypeScript, Redux.js, RxJS, CodePush, styled-components, React Storybook, Jest, and Prettier to develop this app, as well as our thought of what else we will do with it at Picnic.

See more
Lead Software Engineer at EDIFECS · | 1 upvotes · 6.5K views
Spring MVC
Microsoft SQL Server
Spring Boot
Angular 2
Material Design for Angular

Material Design for Angular Angular 2 Node.js TypeScript Spring-Boot RxJS Microsoft SQL Server Hibernate Spring MVC

We built our customer facing portal application using Angular frontend backed by Spring boot.

See more

RxJS Alternatives & Comparisons

What are some alternatives to RxJS?
Lots of people use React as the V in MVC. Since React makes no assumptions about the rest of your technology stack, it's easy to try it out on a small feature in an existing project.
It emphasizes a purer functional style. Immutability and side-effect free functions are at the heart of its design philosophy. This can help you get the job done with simple, elegant code.
Akka is a toolkit and runtime for building highly concurrent, distributed, and resilient message-driven applications on the JVM.
Netty is a NIO client server framework which enables quick and easy development of network applications such as protocol servers and clients. It greatly simplifies and streamlines network programming such as TCP and UDP socket server.
Finagle is an extensible RPC system for the JVM, used to construct high-concurrency servers. Finagle implements uniform client and server APIs for several protocols, and is designed for high performance and concurrency.
See all alternatives

RxJS's Stats

RxJS's Followers
238 developers follow RxJS to keep up with related blogs and decisions.
Arun Kumar
Shahar Dawn Or
Yury Buldakov
Ali Kaynarca
Denys Burlakov
Ezequiel Rabinovich Orlandi
Justin Dorfman