Ivan Akulov
@iamakulov
Followers
8K
Following
26K
Media
1K
Statuses
6K
Web perf engineer @ Framer. Prev. web perf consultant (Google, Appsmith, Toggl, etc). Getting React interactions 2-4x faster. GDE. He/him đłď¸âđ
Amsterdam
Joined January 2015
How I typically test performance (a thread for a client who asked about this):
8
88
438
At @framer weâve switched from esbuild to @rolldown_rs in Q4. Since then weâve launched another feature based on their exclusive âNative MagicStringâ tech to perform AST transforms via RustđŚ on-the-fly, fast. Hereâs our case study: https://t.co/ZgEIBfTFv3. Rolldownâs awesome!
framer.com
Case-study how Rolldown helps us speed up Framer sites.
0
7
13
- esm > cjs modules (bundlers still donât shake cjs well/at all) - sideEffects: false ftw - donât bundle a library into a single file for npm. kills shakeability
0
0
6
đ Try Olmo 3-Think (32B) FREE until Dec 22! Our flagship open reasoning model tackles complex math, science, & coding problemsâand you can now use it free via Parasail Serverless.
0
0
2
Ah yes this why:
@iamakulov So, I asked myself the same question and digged into a small research. I found a proposal and this issue: https://t.co/CSNXVHj2Wf I think itâs not the root cause, but for me itâs a good-enough explanation of why Math doesnât work with bigint.
0
0
1
Base models are great for demos, but production needs something better. Today, weâre launching post-training by Nebius Token Factory. Fine-tune frontier open-source LLMs, optimize them and deploy instantly. This is how open-source finally becomes production-grade. đ
8
17
79
Also huge kudos to @subzey. Wild, Iâd have never figured out:
@iamakulov The same happens with schedule.postTask() even with no timers set! Async call stacks are to blame?
0
0
1
Benchmark: https://t.co/bFpyOnzYOc. Try with DevTools open vs closed â especially with call stack depth 1000. (â1000 levels deepâ might seem like a lot, but itâs pretty realistic with Reactâs recursivelyTraversePassiveMountEffects. Thatâs how I ran into it â in TanStack Query!)
1
0
1
Welp, turns out these numbers arenât real. Just opening DevTools makes all timers 5-100Ă slower, due to the overhead of capturing stack traces. Even if you do nothing else (donât record performance, etc)! Guess who accidentally spent a weekend optimizing this đ
(h/t
Why are native setTimeout and clearTimeout calls so expensive? Like, here it takes 1.5 ms. Whatâs the technical reason itâs so slow? Just 100-200 of those in a row (trivial if youâre mounting a bunch of React components that set timers) will easily block the page.
3
0
12
This might seem like nothing, but itâs a real issue with e.g. TanStack Query, where timers are slower because of that: https://t.co/nfUdRrr6xA It both ⢠sets timers very deep down Reactâs `recursivelyTraversePassiveMountEffects` stack ⢠and sets *a lot* of them, for query
1
0
2
đ¸ Earn money anytime, anywhere with Paidwork! Start today â itâs fast, simple & free
0
0
11
Timers also get 2Ă slower after you set ~750 of them (even if they have already fired):
1
0
0
Okay, so this is pretty weird: Apparently, in Chromium, the deeper you are in the call stack, the slower your setTimeout() calls become?
Why are native setTimeout and clearTimeout calls so expensive? Like, here it takes 1.5 ms. Whatâs the technical reason itâs so slow? Just 100-200 of those in a row (trivial if youâre mounting a bunch of React components that set timers) will easily block the page.
3
0
5
(Question prompted by spending an hour to implement userland setTimeout batching :D)
1
0
1
Why are native setTimeout and clearTimeout calls so expensive? Like, here it takes 1.5 ms. Whatâs the technical reason itâs so slow? Just 100-200 of those in a row (trivial if youâre mounting a bunch of React components that set timers) will easily block the page.
4
0
8
100 Red and 100 Black ants were put in a jar and placed on a table. Nothing happened, they were at peace with each other. Then someone shook the jar and the ants started killing each other. They were made to believe that each other were the enemy...they were not...
1
6
17
> once [2] gets shipped, you should switch to "eager". fresh from @PerfNowConf: it will ship v soon, in Chrome 143 <3
0
0
1
Belated hi from @PerfNowConf! Come talk to us (me & @kurtextrem) about React performance, Framer sites, LCP/INP and more :D
0
0
9
Currently in Chrome Canary behind a flag (enable at chrome://flags):
0
0
2
Neat lil learning from todayâs @PerfNowConf (via @umaar): You can now throttle individual requests in Chrome! Neat for experimenting with stuff like - lazy-loading: does the UI look okay if this chunk takes MUCH longer to arrive? - resilience: what happens if this specific CDN
1
10
12
Over a 24h period this week, Deck's infra peaked at near 6,000 parallel browser sessions, and made ~$30M in agentic payments. Seeing agents sustain this load of valuable actions is encouraging for what's coming in 2026 đŻ
11
29
160
But to fix other things (like missing links on âC), we had to carefully inject Framerâs page tree information into the schema, something that also took several iterations. This part of the project isnât *fully* complete. But hopefully weâll wrap it up soon đ
1
0
3
So, another big part of this project was moving this logic back into the schema, to make sure it covers all code paths. This wasnât always easy! Some things, like stripping unnecessary <b>s that come from Google Docs, were simple:
1
0
2