After getting comfortable with functional programming, I decided to take it a step further and explore reactive functional programming, and it is without a doubt my favourite way to write Javascript. I read Rxjs in action to get a sense of what observables are and how they work, and then really solidified my understanding by creating a couple apps with it. I first created clones of Formik and Downshift (popular React libraries), substituting the existing logic with observable streams. This taught me not only a-lot about React and Rxjs, but how to use them together by hooking subscriptions into the lifecycle methods of React. In practice this would be my goto but as of right now React does not batch calls to setState on event handlers that are not the synthetic event, and there is not way for Rxjs to listen for the synthetic-events because it has to listen to the native event. Once React batches all calls to setState which they plan on doing I plan on using this method a lot more. In addition to my clones which were just learning experiments, I also have published a drag and drop library for React using Rxjs to NPM. The inspiration came from reading the source code for React-Beautiful-DND and realizing the insane amount of ephemeral state that needed to be tracked. My solution is nowhere near as robust (again just for me to learn), but has the same functionality with drastically less code and less tracked state, with just two observables (one for mouse and touch, one for keyboard).