Hi, and welcome to issue #4 of Mark's Dev Links! This is a weekly-ish email newsletter, focused on the React and Redux ecosystem, and stuff that's caught my attention.
In addition to last week's announcement of me teaching Redux workshops in partnership with Workshop.me, I can also announce that I'll be speaking on "Redux Fundamentals" at Reactathon in San Francisco on March 20! See below for more details.
News, Links, and Discussion
- RFC PR: New createRef() API for ref objects
- RFC contents: New createRef() API
- React #12162: Adds createRef() per RFC
When I started the newsletter, I really wasn't expecting it to turn into a running changelog of React API updates, but the React team just keeps merging in new features. This week, they've merged in a new
createRef() API, which is intended to act as a simpler alternative to callback refs, and as a final replacement for string refs. The API was inspired by the Reason-React bindings, and allows creating "ref objects" that have a
value property that will be updated by React. It looks like this should also get included in React 16.3 along with the other recently merged API updates.
React Architecture Confessions
Ben McCormick shares some well-written thoughts on mistakes he's made while working on React apps, inspired by the book "Clean Architecture". He lists five different mistakes, and describes what he did, why he did it, and what he should have done instead in hindsight. Well-written advice, as always.
Modern CSS for Dinosaurs
Hacky way to view Instagram Redux Store
The Redux DevTools are great for debugging what's going on in a Redux app, and many people leave them turned on in production (possibly in read-only mode). In this post, the author shows how to fiddle with a page in order to enable use of the Redux DevTools in a production app, even though the developers didn't actually turn it on themselves. (Note: this is a great example of why you shouldn't blindly trust values from a client-side app!)
redux-batch: dispatch multiple actions with one subscription update
We're frequently asked about ways to cut down on the number of subscriber update notifications. One useful tool for this is
redux-batch, which is a store enhancer that allows passing an array of actions to
dispatch, and only triggers the subscriber callbacks a single time after all the actions have been processed.
Amusingly, I'm actually half-responsible for this library existing :) There was a very long Redux issue thread about the best way to add a form of dispatch batching to the Redux core, and as part of that thread, I whipped up a gist that swiped the structure from tappleby/redux-batched-subscribe and replaced the notification logic with my own approach. That lib later got adapted by someone else and turned into
redux-batch. (As an interesting side note, that thread is also where I finally had to dig into the concept of "store enhancers" enough to finally grok what they are and how they worked.)
Redux Issues Spotlight
Business Logic in Redux
A few weeks ago I tweeted out a request for examples of "client-side business logic" . Unfortunately, I only got a few responses, but there was a resulting issue opened up to discuss the topic further. I'd love to see some more discussion of what qualifies as "business logic" and how you're currently implementing that, both with and without Redux, so that we can better answer that sort of question in the future.
Me, Myself, and I
Full Stack Lunch - "State of the Redux Union"
On Friday Feb 9, I was able to drop by the Full Stack Lunch San Diego meetup and give a short "State of the Redux Union" presentation. If you're reading this newsletter you've probably already seen most of the stuff I talked about, but it was nice to share some of this stuff in person. If you're interested, here's a video of the entire meetup and the accompanying slides.
"Redux Fundamentals" talk at Reactathon
Since there won't be a ReactConf put on by the React team this year, the Reactathon conference has stepped up and is putting on a 3-day conference March 20-22, in San Francisco. It'll actually be split into two parts: Tuesday is a "Fundamentals" track, while Wednesday and Thursday are an "Advanced" track. I'm pleased to announce that I'll be giving a 30-minute "Redux Fundamentals" talk on Tuesday, March 20! Looks like a great list of speakers for both parts of the conference, and I'm excited to be a part of it.
My "Practical Redux" tutorial series is now an interactive course on Educative.io!. Check it out!
This is a post in the Newsletter series. Other posts in this series: