Mark Erikson
blog.isquaredsoftware.com · Personal blog · on HN since 2016
Mark Erikson, a Redux maintainer, writes detailed posts on React rendering, Redux, state management, and JavaScript tooling.
What HN saysCommenters recommend it as a source on Redux and React, with one saying they like how he writes and another citing his Context versus Redux explanation.
42HN people shared it
15linked it in comments
58stories submitted
861story points
5 months agolast shared
2016people per year2026
Most-shared posts
- 1A mostly complete guide to React rendering behavior (2020)8 people · 114 points · first shared 2020 · 53 comments on HN
- 2Blogged Answers: My Experience Modernizing Packages to ESM7 people · 7 points · first shared 2023 · 1 comments on HN
- 3The State of React and the Community in 20256 people · 12 points · first shared 2025 · 3 comments on HN
- 4Redux – Not Dead Yet5 people · 360 points · first shared 2018 · 192 comments on HN
- 5Why React Context Is Not a “State Management” Tool4 people · 2 points · first shared 2021 · 2 comments on HN
- 6Idiomatic Redux: Implementation and Intent3 people · 138 points · first shared 2017 · 78 comments on HN
- 7Redux Starter Kit 1.0: the official batteries-included toolset for Redux3 people · 6 points · first shared 2019 · discussion on HN
- 8Redux maintainer's thoughts on AI3 people · 2 points · first shared 2026 · discussion on HN
- 9Homepage3 people · first shared 2016
- 10Idiomatic Redux: The History and Implementation of React-Redux2 people · 5 points · first shared 2018 · discussion on HN
- 11Practical Redux, Part 1: Redux-ORM Basics2 people · 4 points · first shared 2016 · discussion on HN
- 12Idiomatic Redux: Thoughts on Thunks, Sagas, Abstraction, and Reusability2 people · 3 points · first shared 2017 · discussion on HN
- 13How Web Apps Work2 people · 3 points · first shared 2021 · discussion on HN
- 14I Estimate NPM Package Market Share2 people · 2 points · first shared 2022 · 1 comments on HN
- 15Learning and Using TypeScript as an App Developer and Library Maintainer2 people · 2 points · first shared 2019 · discussion on HN
What HN people wrote when they linked it
acemarke · 2017-04-26
To be honest, I really haven't read up on Vue or Vuex at all, so I can't make any good comparisons.
I _can_ say that I'm currently working on a blog post that will discuss what actual technical limitations Redux requires (and where/why those limitations exist), vs how Redux is _intended_ to be used, vs how it's _possible_ to use Redux. I've been doing research for that post by reviewing many of the early Redux issues and discussions, and will be including some of that info in my post. Hoping to make progress on that post this weekend - if you're interested, keep an eye on my blog at http://blog.isquaredsoftware.com .
I did write a comment on Reddit yesterday where I pasted a quote of Redux's stated objectives from an early version of the README, which may be informative: https://www.reddit.com/r/javascript/comments/67gvic/i_just_dont_get_wh… .
In general, Dan and Andrew's primary goals were to enable time-travel debugging, server rendering, and state traceability, as well as offering up extension points so that developers could customize things like async behavior for their own preferences. That led to the effective requirements of immutable data handling, composed functions for organizing "write" logic, and the creation of "middleware" as the preferred approach for implementing async handling.
Zealotux · 2022-08-17
No, there is optimization happening at Redux level to ensure components only gets updated when they need to, but it's up to you to ensure your store is properly designed and consumed to avoid unnecessary updates.
Look up Mark Erikson's blog[1], who's a Redux maintainer, for a lot of details on Redux's internals (acemarke on HN), he also answers tons of questions everywhere[2] about Redux, he helped me so much understand it!
[1] https://blog.isquaredsoftware.com/
[2] https://stackoverflow.com/a/40386189
manuko83 · 2022-01-01
I really like the way Mark Erikson writes his posts:
https://blog.isquaredsoftware.com
shados · 2018-04-25
Note that when I say the "community" here, I don't necessarly mean you or people close to the project, but I rather refer to what I've been seeing here internally, when talking to people at meetups, twitter, etc.
In the early days, the average Redux user was someone who had been burnt by Backbone or Angular 1.x state management, was excited about the solution Redux provided, was curious about Redux's FP characteristic or more rarely might even have been an FP zealot. There was a lot of chat around that area, how to handle specific problems from that angle.
As time went on and it became very popular, the "community" (I use the term loosely, as there's no single entity representing "the community") grew, and the typical Redux user was very much the same as the average JS dev. Usually a OO background or familiar with more classical languages and patterns. Just want to get shit done and doesn't care about the Redux pattern's unique characteristic. Uses Redux because everyone else is, not because they see value in the event sourcing-like decoupling.
A lot of things come from that. Like already mentioned, the focus came a lot more to "how to I reduce boilerplate", "waah I dont like passing props down", "code reuse!", "how do I make things look like my familiar OOP patterns".
That's all valuable and I don't want to downplay it (there's only so much nuance I can put in a stack overflow post), but a lot of this is available in other tools and other frameworks. MobX and state…
satvikpendem · 2024-02-28
The main point is here: https://blog.isquaredsoftware.com/2021/01/context-redux-differences/#c…
Context updates all components while Redux and similar state management tools, because they live outside of React, do not. That's the main reason to use true state management tools over context. If you have a relatively small application or you don't care about that, continue using context. The article is also by a Redux core maintainer so you might call that biased but they know what they're talking about, since they're privy to React design decisions much more than regular users.
jakubmazanec · 2023-09-10
From my experience, the feeling that "Node.js ecosystem is more-or-less completely broken" comes only when you're trying to create package supporting both CommonJS and ESM (see https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c?… Just rip the ban-aid and convert all your code to ESM and you'll be much happier (otherwise you experience something like https://blog.isquaredsoftware.com/2023/08/esm-modernization-lessons/).
crooked-v · 2023-08-16
Trying to make ESM actually work in the JS ecosystem is still wildly experimental and incredibly painful. https://blog.isquaredsoftware.com/2023/08/esm-modernization-lessons/
ricardobayes · 2023-03-30
No, it doesn't, a component re-renders when its state changes or its parent re-renders.
https://blog.isquaredsoftware.com/2020/05/blogged-answers-a-mostly-com…
aeroaero · 2023-03-23
Yep it can be a useful pattern, but it must be in a conditional to stop an infinite loop.
This useful guide points it out as well: https://blog.isquaredsoftware.com/2020/05/blogged-answers-a-mostly-com…
cercatrova · 2022-07-02
Context and Redux are somewhat different tools and context doesn't necessarily solve the same problems as Redux. This article by the maintainer of Redux (acemarke) goes over why (looks like he replied to you as well) [0]. Have you tried Redux Toolkit as well? It cleans up a lot of the complexity of Redux and works well with TypeScript [1].
[0] https://blog.isquaredsoftware.com/2021/01/context-redux-differences/
[1] https://redux-toolkit.js.org/
baxuz · 2021-10-25
dang · 2019-10-21
We changed the URL from https://blog.isquaredsoftware.com/2019/10/presentation-hooks-hocs-trad… to the slides which have the content.
mephitix · 2018-04-08
Mark Erikson (dev on React) explains this very well: http://blog.isquaredsoftware.com/2018/03/redux-not-dead-yet/.
"If you're only using Redux to avoid passing down props, context could replace Redux - but then you probably didn't need Redux in the first place. Context also doesn't give you anything like the Redux DevTools, the ability to trace your state updates, middleware to add centralized application logic, and other powerful capabilities that Redux enables."
nop_slide · 2025-10-25
> The Backbone code is brutally honest about what it's doing. An event fires, a handler runs, you build some HTML, you put it in the DOM. It's verbose, sure, but there's no mystery. A junior developer can trace exactly what happens and when. The mental model is straightforward: "when this happens, do this." > The React code hides a lot. And once you move past simple examples, you hit problems that don't make sense until you understand React's internals. I relate to this a lot. I have had to read these two very large articles multiple times to calcify my mental model for understanding exactly _when_ react does something and _why_ it did or did not. https://overreacted.io/a-complete-guide-to-useeffect/ https://blog.isquaredsoftware.com/2020/05/blogged-answers-a-... Backbone was also my first framework that I haven’t touched in over 10 years, but looking at the code examples from the article I completely understood what was going on.
aastronaut · 2022-05-08
I just read through your post on servers[1], as I'm currently in a similar boat (webdev working with C++ devs). I think the biggest hurdle for such developers are things like:
- statelessness of the server (REST)
- the lifecycle of a single request
- the lifecycle of a single (server-)app (microframweworks)
OOP devs unfamiliar with server development tend to pollute the app lifecycle with hidden state in some singletons that are swirling around globally. The requirement that servers should be able to parallelize request-processing is mostly an afterthought and hidden app state makes it impossible to parallelize anything.
A sequence diagram of a single request would help there a lot IMHO and a short explanation of how to keep the response times short, by doing long-running tasks in the background with message queues.
[1]: https://blog.isquaredsoftware.com/2020/11/how-web-apps-work-http-serve…