State Management in React

I gave a talk a few months back for the ReactJS Dallas Meetup group about state management in React (with a strong focus on Redux.) Talk and post talk notes I distributed are below:

Hey All!

I realize that my talk was a huge data dump and ended up broaching several different topics. As such, I wanted to put together a list of the tech/talks that I mentioned in my talk. Enjoy!

Talk from the first PSA slide - this is a great talk overall from ReactConf 2016 about the Elm architecture, and more than that functional programming in the client, highly recommend.


Simple Made Easy - One of the more famous talks by Rich Hickey (the creator of Clojure) - should be required viewing for all software developers.

Performance:
Transducers - I mentioned transducers as a way to avoid creating intermediate collections for mutliple Higher order function operations (ie - .map().map().filter() will create three arrays). This is a talk by Rich Hickey going over the Transducer pattern in Clojure - but is very high level and easy to understand how it can be applied to all languages; Related to transducers - Ramda is a functional library (think underscore/lodash) that has a transducer implementation you can use. Also stresses immutability and has functions like lens - that make immutable updates easy and functional in JS.

There is a talk related to Ramda by Brian Lonsdorf - an FP in JS master, showing why the pattern Ramda follows is superior to Underscore, Lodash.


ImmutableJS is the library we use internally for immutable data structures at TourConnect. As mentioned, not only does it give you a fairly nice FP API, but it implements structural sharing for its data structures to avoid GC thrashing. Corresponding talk by Lee Byron about ImmutableJS (the creator of ImmutableJS, and major contributor to React/GraphQL): 

Also related - Garbage Collection in JS. I mentioned in my talk how object pools can help you increase performance if you don't use ImmutableJS. This talk goes over the GC in javascript - fair warning, it was filmed during talk like a pirate day, so it's all in a pirate accent.

Redux:
The concept of Higher Order Components as explained by the creator of Redux.

Getting started with Redux - a tutorial by Dan Abramov (the creator of redux) on egghead.io.

The reveal of Redux/HMR at React-Europe 2015 by Dan Abramov.


Others:
Relay - Colocated Declarative server data fetching for components.
RxJS - Observable/Stream based pattern in JavaScript (and other languages, was originally created by Microsoft as Reactive Extensions for .NET).
Cycle - I briefly mentioned cycle as a framework to explore if you are interested in only using RxJS/Observables for state management, it's based off of the VDOM implementation and built upon the observable pattern.


Om - The React based framework for Clojurescript I mentioned. David Nolen gives a great talk of the newest implementation, which has all the benefits of Falcor/Relay's declarative data fetching, while maintaining a single state atom for all sources of state - (not just server state).

Check out Clojure/Clojurescript it's great - and if you're on the fence hopefully this talk can can convince you: Clojurescript for Skeptics!