Mark Erikson
@acemarke.dev
Redux maintainer, building time-travel devtools at Replay.io. I blog about React, Redux, and TS at https://blog.isquaredsoftware.com . Answering questions anywhere there's a textbox on the internet, and otherwise out on the golf course!
Reposted by Mark Erikson
Yesterday at TPAC I publicized my draft proposal for adding a declarative templating API to the DOM.
github.com/justinfagnan...
The repo has:
📖 Explainers for the templating API and DOM scheduler API
🏗️ Full prototype implementations
⚗️ a JSX transform
⚛️ a mini React-like framework
github.com/justinfagnan...
The repo has:
📖 Explainers for the templating API and DOM scheduler API
🏗️ Full prototype implementations
⚗️ a JSX transform
⚛️ a mini React-like framework
github.com
November 10, 2025 at 11:04 PM
Yesterday at TPAC I publicized my draft proposal for adding a declarative templating API to the DOM.
github.com/justinfagnan...
The repo has:
📖 Explainers for the templating API and DOM scheduler API
🏗️ Full prototype implementations
⚗️ a JSX transform
⚛️ a mini React-like framework
github.com/justinfagnan...
The repo has:
📖 Explainers for the templating API and DOM scheduler API
🏗️ Full prototype implementations
⚗️ a JSX transform
⚛️ a mini React-like framework
Reposted by Mark Erikson
i'm looking for a new job
Hire Me in Japan — overreacted
I'm looking for a new job.
overreacted.io
November 10, 2025 at 3:31 PM
i'm looking for a new job
Reposted by Mark Erikson
Alright progress. I imagine most won't understand what you are seeing. I had a crazy idea a week ago that all the ideas we have about async could be wrapped into the native behavior of a runtime reactive system. So I dropped what I was doing to test.
playground.solidjs.com/anonymous/c1...
playground.solidjs.com/anonymous/c1...
Solid Playground
Quickly discover what the solid compiler will generate from your JSX template
playground.solidjs.com
November 7, 2025 at 10:28 PM
Alright progress. I imagine most won't understand what you are seeing. I had a crazy idea a week ago that all the ideas we have about async could be wrapped into the native behavior of a runtime reactive system. So I dropped what I was doing to test.
playground.solidjs.com/anonymous/c1...
playground.solidjs.com/anonymous/c1...
Reposted by Mark Erikson
Reposted by Mark Erikson
Reposted by Mark Erikson
So happy to see talks happening around @e18e.dev that are from the community
It's a sign people really care about this and performance is becoming more important to us as a community
Good work @fuzzyma.bsky.social 🙌
It's a sign people really care about this and performance is becoming more important to us as a community
Good work @fuzzyma.bsky.social 🙌
November 6, 2025 at 9:32 PM
So happy to see talks happening around @e18e.dev that are from the community
It's a sign people really care about this and performance is becoming more important to us as a community
Good work @fuzzyma.bsky.social 🙌
It's a sign people really care about this and performance is becoming more important to us as a community
Good work @fuzzyma.bsky.social 🙌
Reposted by Mark Erikson
📣 Just Scheduled
Learn how Suspense, transitions, and optimistic updates work in React with core team member @ricky.fm.
Details:
Learn how Suspense, transitions, and optimistic updates work in React with core team member @ricky.fm.
Details:
Hands On With Async React
Learn how Suspense, transitions, and optimistic updates work in React with core team member Ricky Hanlon.
🎙️ New to streaming or looking to level up? Check out StreamYard and get $10 discount! 😍…
www.youtube.com
November 6, 2025 at 3:01 PM
📣 Just Scheduled
Learn how Suspense, transitions, and optimistic updates work in React with core team member @ricky.fm.
Details:
Learn how Suspense, transitions, and optimistic updates work in React with core team member @ricky.fm.
Details:
Reposted by Mark Erikson
People give `useEffect` a bad rap, but it isn't usually the source of the problem. The real problem is too many `useState`s.
Devs fail to see how their data is connected and model it too discretely. As those connections appear, it is easier to synchronize than refactor the model. 1/
Devs fail to see how their data is connected and model it too discretely. As those connections appear, it is easier to synchronize than refactor the model. 1/
November 6, 2025 at 4:41 PM
People give `useEffect` a bad rap, but it isn't usually the source of the problem. The real problem is too many `useState`s.
Devs fail to see how their data is connected and model it too discretely. As those connections appear, it is easier to synchronize than refactor the model. 1/
Devs fail to see how their data is connected and model it too discretely. As those connections appear, it is easier to synchronize than refactor the model. 1/
Just released Redux Toolkit v2.10.0, which updates to the latest Immer 10.2 to pick up its immutable update perf improvements! Also did a bunch of additional internal RTK optimization and byte-shaving as well, so this release is free perf wins!
github.com/reduxjs/redu...
github.com/reduxjs/redu...
Release v2.10.0 · reduxjs/redux-toolkit
This feature release updates our Immer dep to 10.2 to pick up its performance improvements, has additional byte-shaving and internal performance updates, and fixes a combineSlices type issue.
Chang...
github.com
November 4, 2025 at 2:29 AM
Just released Redux Toolkit v2.10.0, which updates to the latest Immer 10.2 to pick up its immutable update perf improvements! Also did a bunch of additional internal RTK optimization and byte-shaving as well, so this release is free perf wins!
github.com/reduxjs/redu...
github.com/reduxjs/redu...
Exciting progress today! Called with @capt.dev about the React "concurrent stores" prototype, and we brainstormed potential Redux integration issues.
I then whipped up a prototype branch that reworks `useSelector` to use the prototype, and _most_ tests pass!
github.com/reduxjs/reac...
I then whipped up a prototype branch that reworks `useSelector` to use the prototype, and _most_ tests pass!
github.com/reduxjs/reac...
[DRAFT] Initial React "concurrent stores" compat prototype by markerikson · Pull Request #2263 · reduxjs/react-redux
This PR:
Is a first prototype to see if we can use the WIP React "concurrent stores" API as a replacement for useSyncExternalStore
Added a Yalc-built version of https://github.com/theju...
github.com
October 31, 2025 at 11:06 PM
Exciting progress today! Called with @capt.dev about the React "concurrent stores" prototype, and we brainstormed potential Redux integration issues.
I then whipped up a prototype branch that reworks `useSelector` to use the prototype, and _most_ tests pass!
github.com/reduxjs/reac...
I then whipped up a prototype branch that reworks `useSelector` to use the prototype, and _most_ tests pass!
github.com/reduxjs/reac...
Reposted by Mark Erikson
Since people seem to interested in alternative Server Component architectures, might as well publish the source. These documents are rough, basically brain dumps. But I think thanks to Tanstack there is interest.
"Isomorphic First Framework"
hackmd.io/@0u1u3zEAQAO...
"Isomorphic First Framework"
hackmd.io/@0u1u3zEAQAO...
Isomorphic First Framework - HackMD
Seeing the reception to SvelteKit Remote functions and Tanstack Start I realize I probably should codify the architecture we designed on stream.
hackmd.io
October 31, 2025 at 8:03 PM
Since people seem to interested in alternative Server Component architectures, might as well publish the source. These documents are rough, basically brain dumps. But I think thanks to Tanstack there is interest.
"Isomorphic First Framework"
hackmd.io/@0u1u3zEAQAO...
"Isomorphic First Framework"
hackmd.io/@0u1u3zEAQAO...
We had a _ton_ of things to cover in October's TMIR! Hopefully this is a pretty good summary of all the conf news, announcements, and framework updates!
TMiR 2025-10: Post-conf; React 19.2, React Foundation, React Native removing old architecture. Next.js has too many directives
TMiR 2025-10: Post-conf; React 19.2, React Foundation, React Native removing old architecture. Next.js has too many directives
Transcript and article links[00:00:00] Intro[00:00:46] New...
share.transistor.fm
October 31, 2025 at 7:08 PM
We had a _ton_ of things to cover in October's TMIR! Hopefully this is a pretty good summary of all the conf news, announcements, and framework updates!
Reposted by Mark Erikson
here's what the @e18e.dev community has been upto for the last couple of months!
huge thanks to everyone involved 🎉 much more to come very soon, and we have a roadmap of some super useful tools in the works
huge thanks to everyone involved 🎉 much more to come very soon, and we have a roadmap of some super useful tools in the works
Community Showcase (Q3 2025)
An update on what the community have been up to in Q3 of 2025
e18e.dev
October 31, 2025 at 4:45 PM
here's what the @e18e.dev community has been upto for the last couple of months!
huge thanks to everyone involved 🎉 much more to come very soon, and we have a roadmap of some super useful tools in the works
huge thanks to everyone involved 🎉 much more to come very soon, and we have a roadmap of some super useful tools in the works
Updated the Immer array method overrides PR to convert it into an optional plugin to save on default bundle size. I assume many users will want to enable this, but given the +2K size it's reasonable to make it optional.
With this it's +40% avg faster than Immer 10:
github.com/immerjs/imme...
With this it's +40% avg faster than Immer 10:
github.com/immerjs/imme...
Override array methods to avoid proxy creation while iterating and updating by markerikson · Pull Request #1184 · immerjs/immer
Stacked on top of #1164 (perf tweaks) and #1183 (finalization callbacks).
This PR:
adds a set of interception overrides for both mutating and non-mutating array methods that operate directly on th...
github.com
October 30, 2025 at 10:03 PM
Updated the Immer array method overrides PR to convert it into an optional plugin to save on default bundle size. I assume many users will want to enable this, but given the +2K size it's reasonable to make it optional.
With this it's +40% avg faster than Immer 10:
github.com/immerjs/imme...
With this it's +40% avg faster than Immer 10:
github.com/immerjs/imme...
Reposted by Mark Erikson
It would be good to have a way to do conditional imports synchronously.
And bundlers that can handle that kind of thing and serve different permutations of files based on information available during the request.
And bundlers that can handle that kind of thing and serve different permutations of files based on information available during the request.
October 30, 2025 at 8:16 PM
It would be good to have a way to do conditional imports synchronously.
And bundlers that can handle that kind of thing and serve different permutations of files based on information available during the request.
And bundlers that can handle that kind of thing and serve different permutations of files based on information available during the request.
Reposted by Mark Erikson
I am looking for a full-time job.
Being independent in open source for 3.5+ years has been wonderful. I've gotten done most of the high-level goals I wanted to, and miss having people & structure around me.
If you know of a role for a staff-level TypeScript+web developer, let me know! 🙂
Being independent in open source for 3.5+ years has been wonderful. I've gotten done most of the high-level goals I wanted to, and miss having people & structure around me.
If you know of a role for a staff-level TypeScript+web developer, let me know! 🙂
October 30, 2025 at 2:40 PM
I am looking for a full-time job.
Being independent in open source for 3.5+ years has been wonderful. I've gotten done most of the high-level goals I wanted to, and miss having people & structure around me.
If you know of a role for a staff-level TypeScript+web developer, let me know! 🙂
Being independent in open source for 3.5+ years has been wonderful. I've gotten done most of the high-level goals I wanted to, and miss having people & structure around me.
If you know of a role for a staff-level TypeScript+web developer, let me know! 🙂
Was answering some Reddit comments about the nuances of React rendering and `children`, and found out that the React docs don't talk about the distinction between an "owner" and "parent". The only "owner" mentions are the new `getOwnerStack` API.
Niche concept, but feels worth covering?
Niche concept, but feels worth covering?
October 28, 2025 at 5:59 PM
Was answering some Reddit comments about the nuances of React rendering and `children`, and found out that the React docs don't talk about the distinction between an "owner" and "parent". The only "owner" mentions are the new `getOwnerStack` API.
Niche concept, but feels worth covering?
Niche concept, but feels worth covering?
Reposted by Mark Erikson
I sat down with @danabra.mov, one of the core React team members since the early days
We talked about,
✔️ React Server Components and Modern React
✔️ the Next.js App Router
✔️ Burnout and how the React community has evolved - both technically & personally
I learned a lot & you will too
🎥 link below
We talked about,
✔️ React Server Components and Modern React
✔️ the Next.js App Router
✔️ Burnout and how the React community has evolved - both technically & personally
I learned a lot & you will too
🎥 link below
October 28, 2025 at 12:46 PM
I sat down with @danabra.mov, one of the core React team members since the early days
We talked about,
✔️ React Server Components and Modern React
✔️ the Next.js App Router
✔️ Burnout and how the React community has evolved - both technically & personally
I learned a lot & you will too
🎥 link below
We talked about,
✔️ React Server Components and Modern React
✔️ the Next.js App Router
✔️ Burnout and how the React community has evolved - both technically & personally
I learned a lot & you will too
🎥 link below
I've spent a ton of time trying out alternate impls for Immer's `shallowCopy()`, as it becomes a bottleneck with larger objs.
Filed a draft PR with a proposed change to `Obj.keys().forEach()` instead of `{...}`, and a long writeup with details and confusion:
github.com/immerjs/imme...
Filed a draft PR with a proposed change to `Obj.keys().forEach()` instead of `{...}`, and a long writeup with details and confusion:
github.com/immerjs/imme...
Implement optional strings-only shallow copies for perf by markerikson · Pull Request #1188 · immerjs/immer
This PR:
Adds new options for the StrictMode shallow copying option:
"with_symbols" is an alias for the current strict: false behavior
"full" is an alias for the current stric...
github.com
October 28, 2025 at 3:35 AM
I've spent a ton of time trying out alternate impls for Immer's `shallowCopy()`, as it becomes a bottleneck with larger objs.
Filed a draft PR with a proposed change to `Obj.keys().forEach()` instead of `{...}`, and a long writeup with details and confusion:
github.com/immerjs/imme...
Filed a draft PR with a proposed change to `Obj.keys().forEach()` instead of `{...}`, and a long writeup with details and confusion:
github.com/immerjs/imme...
SOMEONE PLEASE INVENT A TIME MACHINE AND RETROACTIVELY SHIP THIS IN JS ENGINES 25 YEARS AGO!
October 28, 2025 at 1:27 AM
SOMEONE PLEASE INVENT A TIME MACHINE AND RETROACTIVELY SHIP THIS IN JS ENGINES 25 YEARS AGO!
If only JS engines gave us an intrinsic `Object.size(obj)` method that was performant...
October 28, 2025 at 12:12 AM
If only JS engines gave us an intrinsic `Object.size(obj)` method that was performant...
I can see I'm going to have to update my "Guide to React Rendering Behavior" mega-post to cover the React Compiler:
blog.isquaredsoftware.com/2020/05/blog...
seeing a bunch of questions on "weren't we told not to memoize everything?". yeah, but the compiler does it _right_.
blog.isquaredsoftware.com/2020/05/blog...
seeing a bunch of questions on "weren't we told not to memoize everything?". yeah, but the compiler does it _right_.
Blogged Answers: A (Mostly) Complete Guide to React Rendering Behavior
Details on how React rendering behaves, and how use of Context and React-Redux affect rendering
blog.isquaredsoftware.com
October 28, 2025 at 12:00 AM
I can see I'm going to have to update my "Guide to React Rendering Behavior" mega-post to cover the React Compiler:
blog.isquaredsoftware.com/2020/05/blog...
seeing a bunch of questions on "weren't we told not to memoize everything?". yeah, but the compiler does it _right_.
blog.isquaredsoftware.com/2020/05/blog...
seeing a bunch of questions on "weren't we told not to memoize everything?". yeah, but the compiler does it _right_.
Anyone familiar with v8's "fast properties" mode? Seeing some perf cliffs where `{...obj}` gets slower around 1000 keys and `Obj.keys().forEach()` gets faster.
Any pointers to recent tech details on key size boundaries, key iteration speeds, etc? v8 source refs if possible!
Any pointers to recent tech details on key size boundaries, key iteration speeds, etc? v8 source refs if possible!
October 27, 2025 at 11:14 PM
Anyone familiar with v8's "fast properties" mode? Seeing some perf cliffs where `{...obj}` gets slower around 1000 keys and `Obj.keys().forEach()` gets faster.
Any pointers to recent tech details on key size boundaries, key iteration speeds, etc? v8 source refs if possible!
Any pointers to recent tech details on key size boundaries, key iteration speeds, etc? v8 source refs if possible!
Reposted by Mark Erikson
After years of internalizing that JS proxies are suuuper slow, I was surprised to find that in Chrome, they seem faster for running function side effects than simply wrapping a function: jsbenchmark.com#eyJjYXNlcyI6...
October 27, 2025 at 9:08 PM
After years of internalizing that JS proxies are suuuper slow, I was surprised to find that in Chrome, they seem faster for running function side effects than simply wrapping a function: jsbenchmark.com#eyJjYXNlcyI6...
Reposted by Mark Erikson
October 27, 2025 at 5:53 PM