Roman Dvornov
banner
rdvornov.bsky.social
Roman Dvornov
@rdvornov.bsky.social
Engineer at Microsoft / Frontend researcher, author of CPUpro, React Render Tracker, CSSTree, Discovery.js

https://github.com/lahmatiy
Pinned
🚀 CPUpro 0.7.0 is here!

- Annotated source code view
- Code states, inlining, deoptimizations insights
- Enhanced "All call frames" table
- Raw V8 log support (no conversion needed)
- Gzipped profiles support
Release 0.7.0 – Source code view, code states, raw V8 log and gzipped profiles support · discoveryjs/cpupro
CPUpro opens a new chapter in providing deeper insights into how JavaScript code runs, introducing annotated function source code display with per-location precision. This feature is only available...
github.com
Reposted by Roman Dvornov
The semver library used in npm, yarn and pnpm could be made 33x faster.

Ran into that while wondering why running `npm install` takes so long on the Preact repo.

marvinh.dev/blog/speedin...
Speeding up the JavaScript ecosystem - Semver
During the installation process, package managers run a bunch of semver comparisons. The semver library used in npm, yarn and pnpm can be made around 33x faster.
marvinh.dev
August 10, 2025 at 8:34 AM
✍️ New article: Web Streams in Depth – Part 1: The Challenge of Modern Data

From callbacks to for await...of, and from Node.js Streams to the Web Streams API — here's how JavaScript evolved to handle massive data efficiently, everywhere.
Web Streams in Depth, Part 1: From Callbacks to Streams
Introduction: The Challenge of Modern Data JavaScript has come a long way from its humble...
dev.to
August 5, 2025 at 1:10 PM
🚀 CPUpro 0.7.0 is here!

- Annotated source code view
- Code states, inlining, deoptimizations insights
- Enhanced "All call frames" table
- Raw V8 log support (no conversion needed)
- Gzipped profiles support
Release 0.7.0 – Source code view, code states, raw V8 log and gzipped profiles support · discoveryjs/cpupro
CPUpro opens a new chapter in providing deeper insights into how JavaScript code runs, introducing annotated function source code display with per-location precision. This feature is only available...
github.com
May 8, 2025 at 6:01 AM
Discovery.js 1.0.0-beta.94 Introducing text rendering
github.com/discoveryjs/...
March 22, 2025 at 1:45 AM
Reposted by Roman Dvornov
Dear @webstorm.jetbrains.com and @jetbrains.com IDEs users who use JS testing framework integrations,
A huge refactoring of this subsystem was delivered in EAP 5.

It has changes for:
- @vitest.dev
- Jest
- @nodejs.org test runner
- @playwright.dev
- Cypress
- Mocha
- Protractor and Karma

...
youtrack.jetbrains.com
February 21, 2025 at 4:14 PM
Reposted by Roman Dvornov
New in Chrome 133 – which goes stable on Feb 4 – is a new method to move an element around the DOM.

Unlike the classic way of removing+reinserting a node, this moveBefore method preserves the element’s state!

Iframes remain loaded, animations don’t restart, …

DEMO: codepen.io/bramus/full/...
January 16, 2025 at 9:56 AM
🚀 CPUpro v0.6

After months of research, experiments and refactoring, a first release in a row is here: call stack restoration of inlined code (V8 log), enhanced calculations and presentation, new data model.
Release notes (long read): github.com/discoveryjs/...

More to come soon!
Release 0.6.0 – Call stack restoration of inlined code, enhanced calculations and presentation, new data model · discoveryjs/cpupro
In the months since the previous release, CPUpro underwent significant refactoring, with major improvements in computations and new feature prototypes. This release introduces enhanced calculations...
github.com
January 14, 2025 at 6:56 AM
Reposted by Roman Dvornov
Node.js v23.6.0 is out! 🥳🎉

This release enables the flag --experimental-strip-types by default.

Node.js will be able to execute TypeScript files without additional configuration!

⚠️ This feature is experimental, has limitations and is subject to change.

nodejs.org/en/blog/rele...
Node.js — Node v23.6.0 (Current)
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
nodejs.org
January 7, 2025 at 5:56 PM
Reposted by Roman Dvornov
Also, I am looking for active maintainers to help me maintain VueUse. I'd be happy to provide some mentorships if you are interested in that.

Doing OSS would be a long process tho, and probably won't make you have financial benefits at the beginning - but could be an interesting experience.
December 18, 2024 at 9:16 AM
Reposted by Roman Dvornov
Web performance calendar: Friday the 13th edition with @programmingart.bsky.social's monster 😈 of a post on what's sorely needed in a browser's Network panel today

calendar.perfplanet.com/2024/top-8-t...
Top 8 things I want in the Devtools Network Panel
Look, I'm just going to come out and say it: I'm a jealous man. I'm not proud of it, but I'm a jealous man. These past months and years, I've seen great update after amazing update (not you) being rel...
calendar.perfplanet.com
December 13, 2024 at 8:12 PM
Reposted by Roman Dvornov
With the recent Safari 18.2 release, WebAssembly Garbage Collection is now available in all the major browsers 🥳
December 12, 2024 at 7:26 AM
Reposted by Roman Dvornov
You can force garbage collection in your JS by starting Chrome with a flag:
open "/Applications/Google Chrome.app" --args --js-flags=--expose-gc
Now you can call `gc()` to collect the rubbish :)
December 7, 2024 at 1:21 AM
Discovered a neat trick: converting FormData to a multipart/form-data string (and back!) using the Response API. Seems to be an unknown or little-known approach, though I don’t claim originality. Wrote an article to share how it works: dev.to/rdvornov/con...
Converting FormData to a multipart/form-data String and Back Using Response
While working on another article about converting various values into ReadableStream, I stumbled upon...
dev.to
December 5, 2024 at 4:16 PM
Reposted by Roman Dvornov
📣 Start linting CSS with ESLint using the brand new eslint/css package!

This is a very early edition so feedback is welcome. 🐣

www.npmjs.com/package/@esl...
@eslint/css
CSS linting plugin for ESLint. Latest version: 0.1.0, last published: 5 minutes ago. Start using @eslint/css in your project by running `npm i @eslint/css`. There are no other projects in the npm regi...
www.npmjs.com
November 26, 2024 at 4:09 PM
Reposted by Roman Dvornov
Blink: Intent to Ship: Explicit resource management (sync)
Blink: Intent to Ship: Explicit resource management (sync)
Blink: Intent to Ship: Explicit resource management (sync)
groups.google.com
November 22, 2024 at 12:00 AM
Reposted by Roman Dvornov
We implemented a new value for `background-clip` called `border-area`. It lets you use CSS fill a border with a background image or gradient.

This article explains how it works, and shows up the possibilities in 7 demos.

#css #webdesign #webdevelopment #graphicdesign

webkit.org/blog/16214/b...
Make creative borders with background-clip border-area
How’d you like to use CSS to easily create a border from an image or gradient?
webkit.org
November 20, 2024 at 4:03 PM
Reposted by Roman Dvornov
Excited to announce Easing Wizard is now live! 🎉

The ultimate CSS easing editor with support for Bézier, spring, bounce, wiggle, and overshoot! 🚀

🔗 easingwizard.com

Can you find the hidden easter egg?
November 19, 2024 at 4:06 PM