Joyee Cheung's Avatar

Joyee Cheung

@joyeecheung.bsky.social

She/her. I contribute to Node.js and V8. I post about museums, food, plants and other stuff too. https://github.com/joyeecheung

2,343 Followers  |  304 Following  |  680 Posts  |  Joined: 02.11.2024  |  2.1712

Latest posts by joyeecheung.bsky.social on Bluesky

No particular reason other than it seems a bit more common when I skim over the common shipping patterns

03.10.2025 15:06 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Post image

No more juggling CommonJS and faux-ESM. @joyeecheung.bsky.social revealed how Node.js is moving to full ESM and why the future looks brighter for developers. #NordicJS #NordicJS2025

03.10.2025 09:54 โ€” ๐Ÿ‘ 10    ๐Ÿ” 2    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

I think yes! @nordicjs.com

03.10.2025 09:48 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 1

I gave a talk today at @nordicjs.com about shipping Node.js packages in 2025...or how to transition from shipping dual/faux-ESM/CommonJS to shipping ESM directly!

Slides at github.com/joyeecheung/...

03.10.2025 09:33 โ€” ๐Ÿ‘ 56    ๐Ÿ” 11    ๐Ÿ’ฌ 5    ๐Ÿ“Œ 1
The same details as the skeet but on a card with Joyee's avatar

The same details as the skeet but on a card with Joyee's avatar

Igalia's @joyeecheung.bsky.social will be speaking about "Shipping Node.js packages in 2025,โ€ focused on migrating dual/faux/CJS packages to ESM-only at Nordic.js on Friday, 3rd October at 10:30 CEST

nordicjs.com/2025/speaker...

Come say hi!

01.10.2025 16:15 โ€” ๐Ÿ‘ 9    ๐Ÿ” 4    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Whenever I travel to a place where dinner starts at normal time I always feel that I've gained at least 3 extra hours per day and there are actually things I can do at night again

30.09.2025 18:36 โ€” ๐Ÿ‘ 5    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

But that example is pretty extreme, not every CJS exports thousands of names

29.09.2025 09:24 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
`import "typescript"` slower than `require("typescript")` due to `cjs-module-lexer` overhead ยท Issue #59913 ยท nodejs/node Version Node.js v24.8.0 Node.js v22.18.0 Platform Observed on macOS (x64), but likely reproducible on other platforms. Description When loading typescript, using import is ~100ms slower than requir...

Ah, that one, there was already an issue and a suggestion to reduce the perf impact if the package provides a wrapper that makes it easier to parse exports: github.com/nodejs/node/...

29.09.2025 09:22 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

โ€ฆor some heuristics can be used to assume .js in node_modules governed by the same package.json have the same format so that they donโ€™t need to be repeatedly parsed

29.09.2025 09:20 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

The issue can be alleviated if more packages explicitly specify the type field; or if the toolchains can reuse the parsed result (e.g. for detecting exports) they could reuse it and not just throw it away after syntax detection.

29.09.2025 09:19 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

That is pretty much what Node.js does, except that Node.js does reuse the parsed result because it actually needs to parse it and run it anyway. It warns against results it cannot reuse though (ESM in .js under node_modules without โ€œtypeโ€ field in package.json).

29.09.2025 09:12 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0

I noticed, but my connection to GitHub at home has always been slow no matter itโ€™s match day or not ๐Ÿ˜ฌ

20.09.2025 09:55 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Me: why is it taking forever to git clone when I am trying to build a docker container, what's wrong with my docker configuration

(a few moments later)

Oh I forgot I am doing it a home where the connection to GitHub is just outrageously slow ๐Ÿ˜ญ the wrong is in my provider

19.09.2025 21:04 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Yeah it would be odd to say Node.js resent ESM when folks are actively making it less painful to use / ship. At most, there are still wonky edge cases because of technicalities, but bugs always show up when you try to get two very different semantics work together no matter you love them or not.

14.09.2025 14:34 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

If there's some enterprise value not represented in a project mostly built by volunteers, the most probable reason is just: no enterprise is investing in the work about this, or not enough. Then it is unlikely to get done by unpaid volunteers in their spare time until investment comes.

14.09.2025 13:34 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Sometimes it's just "people making wishes that won't get done by itself". For example built-in HTTP proxy and system CA support are important for many enterprise users and requested for years, but only added recently because the companies I and another contributor work for are funding the work.

14.09.2025 13:12 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Node.js maintainers come and go; most people active in 2017 are inactive in 2025, and different people have very different views. There isn't a single person or a team who can speak to the value of the project, it's mostly "if you don't like it, submit a PR and convince the people currently around"

14.09.2025 13:08 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
An afternoon tea style breakfast.

An afternoon tea style breakfast.

I tried not to look at GitHub on this special day and I failed already during breakfast....๐Ÿฅฒ

I blame this breakfast for taking too long to serve and I got bored!

03.09.2025 08:42 โ€” ๐Ÿ‘ 12    ๐Ÿ” 0    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0

Landed the configurations as "execArgv" and "execArgvExtension" ("none" | "env" | "cli"), expected to go out in v24.7.0!

github.com/nodejs/node/...
github.com/nodejs/node/...

26.08.2025 18:50 โ€” ๐Ÿ‘ 3    ๐Ÿ” 1    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Got two PRs to my fork of Node.js with AI generated nonsense in the past two weeks ๐Ÿคจ I get that AI spam is common these days but why my fork?

25.08.2025 13:49 โ€” ๐Ÿ‘ 10    ๐Ÿ” 0    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0

o.O It includes China (with a contestant that I might have seen on TV before)

22.08.2025 13:54 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
How to Dump a Core File on MacOS (Monterey 12.5) Trick Simulation Environment. Trick provides a common set of simulation capabilities and utilities to build simulations automatically.

Haven't tried to generate core dumps on macOS for a local build for quite some time and just found out that the executable now must be signed with com.apple.security.get-task-allow entitlement to be dumped nasa.github.io/trick/howto_...

22.08.2025 09:22 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Converting NodeJS CPU profiles to pprof

Or if you are looking into converting other profiles to load in pprofโ€™s visualisationsโ€ฆ.perhaps www.kvakil.me/posts/2022-0... still works

12.08.2025 22:52 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Preview
Executable loading and startup performance on macOS Recently, I fixed a macOS-specific startup performance regression in Node.js after an extensive investigation. Along the way, I learned a lot about tools for macOS and Node.js compilation workflows th

Samply or xctrace? I wrote some example commands in joyeecheung.github.io/blog/2025/01...

12.08.2025 22:45 โ€” ๐Ÿ‘ 5    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
"execArgv" field in the SEA config specifies execution flags to be baked into the SEA and applied when it's launched. "execArgvMode" field specifies whether run-time override is allowed. "sealed" for no override, "env" for allowing override from NODE_OPTIONS, and perhaps another value for more powerful override like `--node-flags="--inspect"`.

"execArgv" field in the SEA config specifies execution flags to be baked into the SEA and applied when it's launched. "execArgvMode" field specifies whether run-time override is allowed. "sealed" for no override, "env" for allowing override from NODE_OPTIONS, and perhaps another value for more powerful override like `--node-flags="--inspect"`.

RFC: We are adding support for execution command line flag in Node.js single-executable applications. What do you think about this configuration?

github.com/nodejs/node/...

11.08.2025 09:41 โ€” ๐Ÿ‘ 21    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 2
Preview
test: deflake sequential/test-tls-session-timeout by joyeecheung ยท Pull Request #59423 ยท nodejs/node This patch: Splits the validation tests into a separate file and keep the test focus on functional test of the sessionTimeout option. Increase the testing timeout to 5 seconds in case it takes too...

Somehow I seem to manage to fix it github.com/nodejs/node/...

I feel that it might be similar to a flake I fixed recently: a connection that finishes in no time on a dev machine can take more than a second on some machines in the CI, so always assume it can take longer than that

10.08.2025 19:35 โ€” ๐Ÿ‘ 4    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
a bunch of fruit is on a wicker plate on a table . ALT: a bunch of fruit is on a wicker plate on a table .

Trying to deflake a test that was written 12 years ago...

10.08.2025 14:05 โ€” ๐Ÿ‘ 13    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

We're kicking this Bluesky party up a notch ๐ŸŽ‰ and here to give developers what they want (what they really, really want)!

What Chrome features and topics would you like to learn more about?

04.08.2025 16:35 โ€” ๐Ÿ‘ 67    ๐Ÿ” 12    ๐Ÿ’ฌ 8    ๐Ÿ“Œ 5

Node excitement ๐Ÿ˜‰

Congrats to @marcoippolito.dev on today's landmark Node 22.18 release. It is the first LTS release to ship unflagged TypeScript support ๐ŸŽ‰

This means Node can run *.ts files. It pairs well with TypeScript's "erasableSyntaxOnly" flag ๐Ÿ‘

Many folk contributed ๐Ÿ™

01.08.2025 05:34 โ€” ๐Ÿ‘ 113    ๐Ÿ” 30    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Preview
Node.js โ€” Node.js v24.5.0 (Current) Node.jsยฎ is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.

Node.js 24.5.0 is out: built-in proxy support for `node:http(s)`, experimental WASM modules, upgraded OpenSSL version and so much more. Full changelog and download links at nodejs.org/en/blog/rele...

31.07.2025 22:22 โ€” ๐Ÿ‘ 28    ๐Ÿ” 3    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

@joyeecheung is following 20 prominent accounts