This document introduces reactive programming and RxJS. It defines reactive systems as being responsive, resilient, elastic, and message-driven. Reactive programming uses asynchronous data streams and is more declarative, reusable, and testable. RxJS uses Observables to represent push-based collections of multiple values over time. Observables can be subscribed to and provide notifications for next events, errors, and completion. More than 120 operators allow manipulating Observable streams similarly to arrays. The document advocates for using RxJS to represent asynchronous data from various sources to build modern web applications in a reactive way.