HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
nodejs
node
JavaScript2014–2026
nodejs / node

node

Node.js JavaScript runtime ✨🐢🚀✨

376Distinct people
482Mentions
1Explicit recommenders
123.6KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Node.js JavaScript runtime ✨🐢🚀✨

GitHub

Where it is used

  • weather.com — weather.com uses Node.js to power its website. This is the runtime behind their public weather.com site. Source

What people are saying

Expect a blog post shortly, but from v8 we get these language changes: - await/async behind flag (already covered in thread) - Exponentiation operator: > console.log(60**2*24);…

jbergstroem used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 6:01:08 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year482 dated mentions

Observed mentions: 2014-11-28 03:40:25 UTC to 2026-11-01 13:22:11 UTC.

0204060801002014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 14 mentions; 3 submissions, 11 comments20142015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 96 mentions; 41 submissions, 55 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 68 mentions; 23 submissions, 45 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 66 mentions; 25 submissions, 41 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 31 mentions; 10 submissions, 21 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 19 mentions; 11 submissions, 8 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 22 mentions; 13 submissions, 9 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 20 mentions; 5 submissions, 15 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 27 mentions; 7 submissions, 20 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 32 mentions; 11 submissions, 21 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 39 mentions; 11 submissions, 28 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 17 mentions; 3 submissions, 14 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 31 mentions; 8 submissions, 23 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC14311
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC964155
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC682345
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC662541
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC311021
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC19118
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC22139
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC20515
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC27720
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC321121
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC391128
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC17314
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC31823

What Hacker News says

39 sources
This sort of work is something I wouldn't be able to do, but I can't help but point out at least one potential issue with the paper. It's a lot easier to find problems than solutions I guess. Are the benchmarks comparing node versions valid to conclude a real world performance increase? one possible confounder is the version of V8. https://github.com/nodejs/node/blob/v18.x/deps/v8/include/v8... https://github.com/nodejs/node/blob/v20.x/deps/v8/include/v8... ideally, they would've patched Node 18.15 with their changes directly and test their patch against 18.15.
In Parsing millions of URLs per Second (2023)
Vitest does not support CommonJS mocking as of today. I switched to Vitest because Jest was giving me flaky coverage results: https://github.com/nodejs/node/issues/51251 And while Vitest' coverage is stable, I had to add an indirection layer to change how I mock out calls to GitHub's API (@github/octokit). Oh, side note: vite-node's --watch functionality does not restart the process. It does hot reloading which is different enough that it requires some rework at how you set up your app structure and callbacks.
In Vitest vs. Jest
> This isn't actually about removing the promise (completion) listener, but the fact that promises are not cancelable in JS. You've made an interesting point about promise cancellation but it's ultimately orthogonal to the Github issue I was responding to. The case in question was one in which a memory leak was triggered specifically by racing a long lived promise with another promise — not simply the existence of the promise — but specifically racing that promise against another promise with a shorter lifetime. You shouldn't have to cancel that long lived promise in order to resolve the memory leak. The user who created the issue was creating a promise that resolved whenever the SIGINT signal was received. Why should you have to cancel this promise early in order to tame the memory usage (and only while racing it against another promise)
Read the rest
? As the Node contributor discovered the reason is because semantically `Promise.race` operates similarly to this [1]: function race<X, Y>(x: PromiseLike<X>, y: PromiseLike<Y>) { return new Promise((resolve, reject) => { x.then(resolve, reject) y.then(resolve, reject) }) } Assuming `x` is our non-settling promise, he was able to resolve the memory leak by monkey patching `x` and replacing its then method with a no-op which ignores the resolve and reject listeners: `x.then = () => {};`. Now of course, ignoring the listeners is obviously not ideal, and if there was a native mechanism for removing the resolve and reject listeners `Promise.race` would've used it (perhaps using `y.finally()`) which would have solved the memory leak. [1] https://github.com/nodejs/node/issues/17469#issuecomment-349...
In Playground Wisdom: Threads Beat Async/Await
This doesn't even really appear to be a flaw in the Promise.race implementation [1], but rather a natural result of the fact that native promises don't have any notion of manual unsubscription. Every time you call the then method on a promise and pass in a callback, the JS engine appends the callback to the list of "reactions" [2]. This isn't too dissimilar to registering a ton of event listeners and never calling `removeEventListener`. Unfortunately, unlike events, promises don't have any manual unsubscription primitive (e.g. a hypothetical `removePromiseListener`), and instead rely on automatic unsubscription when the underlying promise resolves or rejects. You can of course polyfill this missing behavior if you're in the habit of consistently waiting on infinitely non-settling promises, but I would definitely like to see TC39 standardi
Read the rest
In Playground Wisdom: Threads Beat Async/Await
A coding world with more standardization will be better world. I met this week "Standardized Interface for SQL Database Drivers" https://github.com/halvardssm/stdext/pull/6 by example then https://github.com/WICG/proposals/issues too. Huge work to get everybody on the same page (About my previous example, it's not well engaged by example https://github.com/nodejs/node/issues/55419), but when done and right done, it's a huge win for developers. PHP PSR, RFC & co are the way.
In OpenFeature – a vendor-agnostic, community-driven API for feature flagging
The node versioning system makes no sense to me. They release a new major version and their key highlights sound like minor version changes: > Enabling require(esm) by default for Node.js applications > Removing support for Windows 32-bit systems > Stabilizing the node --run command > Enhancements to the test runner, including glob pattern support for coverage files When Java or especially C# increment major versions, they've added some key language or compiler features, large new standard library changes, or breaking changes of some kind. Node uses major versions to announce what more or less sound like housekeeping. Unless they're just bad at writing blog posts, which it seems like they are. Under "Other notable changes", they have: > [83eb4f2855] - (SEMVER-MINOR) deps: V8: cherry-pick cd10ad7cdbe5 (Joyee Cheung) #52535 Which tells me l
Read the rest
iterally nothing about this "notable change", unless I go to the pull request: https://github.com/nodejs/node/pull/52535 > module: implement NODE_COMPILE_CACHE for automatic on-disk code caching #52535 Which still doesn't seem like a major version headline feature. Consider this "notable change": https://github.com/nodejs/node/pull/55086/files > doc: add abmusse to collaborators > + * [abmusse](https://github.com/abmusse) - > + *Abdirahim Musse* <<abdirahim.musse@ibm.com>> I'm guessing they're fully relying on semver to generate their changelogs, but they're not providing any convincing reason to upgrade to 23.0.0 other than to remain up to date as an inherent virtue
In Node.js – v23.0.0
JS concurrency is crap. It should be shot and buried in a lead coffin. Debugging async code is pure hell. With Go, you have a normal debugger that can be used to step over the code. You can get normal stack traces for all threads if needed. There is a race detector that can catch most of unsynchronized object access. With JS? You're on your fucking own. You can't find out the overall state of the system ("the list of all threads"), without getting deep into the guts of React or whatever framework you're using. Debugger is useless, as each `await` call drops you into the event loop. So pretty much every complicated non-trivial JS app ends up with _tons_ of race conditions, by depending on the order of async functions finishing. Speaking of race conditions. Coming from classic multithreading and Go, I tried to use `Promise.race` to simulate
Read the rest
the `select` statement. Turns out that in JS it is actually useless because it LEAKS MEMORY BY DESIGN: https://github.com/nodejs/node/issues/17469 Back to the article. It uses pre-generics Go. In more modern Go, you can use something like Conc to reduce the boilerplate: https://github.com/sourcegraph/conc?tab=readme-ov-file
In Go Concurrency vs. RxJS
At least Node.js has added experimental support that seems to do that: https://github.com/nodejs/node/pull/53725 But this is just an on-the-fly transpile(natively supported). It would be much better if JavaScript would go the Python route. For that they would have to extend the EcmaScript spec (to be safe) I guess. Just using JSDoc is imho not a good alternative. The big benefit of TypeScript is that your compiler checks this all for you. I've seen to much incomplete or wrong JSDoc in my life.. also a nightmare to maintain.
In ts-blank-space is a fast type-stripping compiler

Showing the 15 most recent of 39 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.