<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Node Weekly</title>
    <description>A free, once–weekly e-mail round-up of Node.js news and articles.</description>
    <link>https://nodeweekly.com/</link>
    <item>
      <title>The NodeConf EU 2026 talks are online</title>
      <link>https://nodeweekly.com/issues/644</link>
      <description>

  

    
    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;div&gt;    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;
&lt;td align="left" style="padding-left: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;#​644 — October 15, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;&lt;a href="https://nodeweekly.com/link/191618/rss" style=" color: #20824B;"&gt;Read on the Web&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;📝 We're taking next week off and will be back on Thursday, October 29.&lt;br&gt;__&lt;br&gt;Peter Cooper, your editor&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border="0"&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em; margin: 0; padding: 0;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/v1653576619/lgfqinzbdqttwmhvljxb.png" width="100%" style="    line-height: 100%; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://nodeweekly.com/link/191575/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/hjm5qc2crdbtnm3m0qft.jpg" width="640" style="    line-height: 100%;    "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/191575/rss" title="skia-canvas.org" style=" color: #20824B;   "&gt;Skia Canvas 4.0: A Fast Canvas Environment for Node&lt;/a&gt;&lt;/span&gt; — Based on Google's Skia graphics engine, it produces results similar to Chrome's own canvas. GPU accelerated and can render images, paths, fonts, shapes, etc. both to static images &lt;em&gt;and&lt;/em&gt; live in a native window. &lt;a href="https://nodeweekly.com/link/191576/rss" style=" color: #20824B;   "&gt;v4.0&lt;/a&gt; is faster, lighter, and adds native PDF loading. &lt;a href="https://nodeweekly.com/link/191577/rss" style=" color: #20824B;   "&gt;GitHub repo.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Christian Swinehart &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  &lt;a href="https://nodeweekly.com/link/191574/rss" style=" color: #20824B;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/b4ec5cf1.png" width="110" height="110" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/191574/rss" title="www.warpbuild.com" style=" color: #20824B;   "&gt;Cut Your GitHub Actions Times and Costs in Half&lt;/a&gt;&lt;/span&gt; — Faster Node builds with better hardware, unlimited concurrency, no queueing delays, and no commitments. Change one line and get started with $50 in free credits using code &lt;code&gt;START50&lt;/code&gt;.&lt;/p&gt;
  &lt;p&gt;WarpBuild &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;▶  &lt;a href="https://nodeweekly.com/link/191578/rss" title="www.youtube.com" style=" color: #20824B;   "&gt;The NodeConf EU 2026 Talks&lt;/a&gt;&lt;/span&gt; — &lt;a href="https://nodeweekly.com/link/191579/rss" style=" color: #20824B;   "&gt;NodeConf EU&lt;/a&gt; took place in Italy a few weeks ago and the talks just dropped onto YouTube today, covering topics from Node's &lt;a href="https://nodeweekly.com/link/191580/rss" style=" color: #20824B;   "&gt;new FFI features&lt;/a&gt; and &lt;a href="https://nodeweekly.com/link/191581/rss" style=" color: #20824B;   "&gt;Emscripten and WebAssembly&lt;/a&gt; to &lt;a href="https://nodeweekly.com/link/191582/rss" style=" color: #20824B;   "&gt;V8 heap management&lt;/a&gt; and &lt;a href="https://nodeweekly.com/link/191583/rss" style=" color: #20824B;   "&gt;performance profiling&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;NodeConf EU / YouTube &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/191584/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Deno is joining Cloudflare&lt;/a&gt; to work on folding &lt;a href="https://nodeweekly.com/link/191585/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;celld&lt;/a&gt; into &lt;code&gt;workerd&lt;/code&gt;. Deno itself will get a year of updates before, hopefully, becoming community-maintained.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/191586/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Node.js v26.12.0 (Current)&lt;/a&gt; has been released. &lt;a href="https://nodeweekly.com/link/191587/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Configuration files&lt;/a&gt; are now stable as a way to define runtime, test, watch and permission settings.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/191588/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Node.js v24.22.0 (LTS)&lt;/a&gt; has also been released and brings &lt;a href="https://nodeweekly.com/link/191589/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;&lt;code&gt;util.throttle&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://nodeweekly.com/link/191590/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;&lt;code&gt;util.debounce&lt;/code&gt;&lt;/a&gt; to the LTS release.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔒 &lt;a href="https://nodeweekly.com/link/191591/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Security releases of Node are expected next Wednesday, October 21&lt;/a&gt; across 26.x, 24.x and 22.x release lines to fix at least one 'HIGH' severity issue. Also, Node 24 enters maintenance on October 20, and Node 26 becomes the active LTS line on October 28, the day Node 27's first alpha is expected.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/191592/rss" title="aws.amazon.com" style=" color: #20824B;   "&gt;Using &lt;em&gt;AWS Lambda Web Functions&lt;/em&gt; for Deploying Node Apps&lt;/a&gt;&lt;/span&gt; — Amazon has launched &lt;a href="https://nodeweekly.com/link/191593/rss" style=" color: #20824B;   "&gt;AWS Lambda Web Functions&lt;/a&gt;, a way to run &lt;em&gt;standard&lt;/em&gt; HTTP apps (using Express, Hono, Fastify, etc.) on Lambda without needing to rewrite your code around an event handler.&lt;/p&gt;
  &lt;p&gt;Wood, Wendt, and Karak (Amazon) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;span&gt;📊&lt;/span&gt; &lt;a href="https://nodeweekly.com/link/191594/rss" title="lemire.me" style=" color: #20824B;   "&gt;WebSocket Servers in JavaScript: Node.js vs Bun vs Deno&lt;/a&gt;&lt;/span&gt; — It's great to see a win for Node 26 with uWebSockets.js here, with its results getting close to C's low levels of latency, ahead of Bun and Deno.&lt;/p&gt;
  &lt;p&gt;Daniel Lemire &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/191595/rss" title="clickhouse.com" style=" color: #20824B;   "&gt;Up to 10x Faster Postgres for I/O-Heavy Workloads&lt;/a&gt;&lt;/span&gt; — Managed Postgres on local NVMe, natively integrated with ClickHouse for real-time analytics.&lt;/p&gt;
  &lt;p&gt;ClickHouse Managed Postgres &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/191596/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Zod 4 Got Rid of a Bunch of CPUs for Us&lt;/a&gt; – Up to 31% less CPU after upgrading from Zod 3. &lt;cite&gt;Chris Arderne (Trigger.dev)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/191597/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Fast Node.js is Mostly About Doing Less&lt;/a&gt; &lt;cite&gt;Ishtmeet Singh (NodeBook)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/191598/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;The Disappointing Death of Deno&lt;/a&gt; &lt;cite&gt;Brett Chalupa&lt;/cite&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;🛠 Code &amp;amp; Tools&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/191599/rss" title="tanstack.com" style=" color: #20824B;   "&gt;TanStack Start 1.0: A Full-Stack Framework Reaches Stability&lt;/a&gt;&lt;/span&gt; — The increasingly popular full-stack framework for React and Solid goes stable, bringing typed server functions and streaming SSR to apps deployed on Node, Bun, Cloudflare Workers and other targets. Here's &lt;a href="https://nodeweekly.com/link/191600/rss" style=" color: #20824B;   "&gt;how it compares to Next.js&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Tanner Linsley et al. &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/191601/rss" title="imapkit.com" style=" color: #20824B;   "&gt;ImapKit: A Scriptable IMAP Server for Testing Email Clients&lt;/a&gt;&lt;/span&gt; — An embeddable IMAP server for testing mail clients, with in-memory mailboxes, extensions for numerous IMAP features, and scripted 'faults' to test robustness. Runs inside your tests or can be driven from other languages via a REST API.&lt;/p&gt;
  &lt;p&gt;Postal Systems OÜ &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;span&gt;⭐&lt;/span&gt; &lt;a href="https://nodeweekly.com/link/191604/rss" title="github.com" style=" color: #20824B;   "&gt;Express 5.3 Released&lt;/a&gt;&lt;/span&gt; — No big new features, but a large number of bug fixes and minor improvements, including to security.&lt;/p&gt;
  &lt;p&gt;Express.js Team &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/191605/rss" title="www.bram.us" style=" color: #20824B;   "&gt;caniname: CLI Tool to Check Project Name Availability on Netlify and npm&lt;/a&gt;&lt;/span&gt; — It's also easy to add checks for other systems.&lt;/p&gt;
  &lt;p&gt;Bramus van Damme &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/191606/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;fast-cli 6.0&lt;/a&gt; – Sindre Sorhus's tool to run download/upload speed tests. A neat way to quickly test speeds as you can run it with &lt;code&gt;npx -y fast-cli&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/191607/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;p-queue 10.0&lt;/a&gt; – Promise queue with concurrency control and rate limiting. &lt;a href="https://nodeweekly.com/link/191608/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;v10 has zero dependencies&lt;/a&gt;, becomes an &lt;code&gt;EventTarget&lt;/code&gt;, and runs tasks in the caller's &lt;code&gt;AsyncLocalStorage&lt;/code&gt; context.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/191609/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;&lt;code&gt;actions/setup-node&lt;/code&gt; 7.1&lt;/a&gt; – GitHub's official Action for installing Node in CI workflows. &lt;a href="https://nodeweekly.com/link/191610/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;It can now read the Node version&lt;/a&gt; from a &lt;code&gt;mise.toml&lt;/code&gt; file.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/191611/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Happy DOM 21.0&lt;/a&gt; – JavaScript implementation of a browser without a GUI, popular for testing. &lt;a href="https://nodeweekly.com/link/191612/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;v21 disables external stylesheet and &lt;code&gt;iframe&lt;/code&gt; loading by default&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/191613/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;p-map 7.1&lt;/a&gt; – Library to map over promises concurrently. &lt;a href="https://nodeweekly.com/link/191614/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Now with &lt;code&gt;pMapSettled&lt;/code&gt;&lt;/a&gt;, keyed variants for objects and &lt;code&gt;Map&lt;/code&gt;s, and &lt;code&gt;pMapStop&lt;/code&gt; to break out early.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/191615/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;RandExp.js 0.6&lt;/a&gt; – Library to generate random strings that match a regex.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/191616/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;node-oracledb 26.0&lt;/a&gt; – Oracle's official &lt;em&gt;Oracle Database&lt;/em&gt; driver.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;div style="   margin-top: 14px; margin-bottom: 8px;  "&gt;&lt;/div&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;span style="text-transform: uppercase; font-size: 0.8em; font-weight: bold; color: #009900;"&gt;Overheard on Hacker News&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 20px;"&gt;
  &lt;p&gt;“Why reimplement Node? It works. Marginal performance or UX or security benefits are not enough.”&lt;/p&gt;

  
    &lt;p&gt;___&lt;br&gt;&lt;a href="https://nodeweekly.com/link/191617/rss" style=" color: #20824b !important;"&gt;Ryan Dahl&lt;/a&gt; on the news that Deno is joining Cloudflare.&lt;/p&gt;
  
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;


&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://nodeweekly.com/open/644/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 15 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://nodeweekly.com/issues/644</guid>
    </item>
    <item>
      <title>When worker threads beat processes for Node efficiency</title>
      <link>https://nodeweekly.com/issues/643</link>
      <description>

  

    
    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;div&gt;    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;
&lt;td align="left" style="padding-left: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;#​643 — October 8, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;&lt;a href="https://nodeweekly.com/link/191306/rss" style=" color: #20824B;"&gt;Read on the Web&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;📝 We're back after taking last week off – you didn't miss an issue :-) If you want one neat thing to check out today, look for the voice synth package below, it's a fun way to relive a bit of 80s nostalgia!&lt;br&gt;__&lt;br&gt;Peter Cooper, your editor&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border="0"&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em; margin: 0; padding: 0;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/v1653576619/lgfqinzbdqttwmhvljxb.png" width="100%" style="    line-height: 100%; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://nodeweekly.com/link/191261/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/etusntxehcije4b6ody0.jpg" width="640" style="    line-height: 100%;    "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/191261/rss" title="medium.com" style=" color: #20824B;   "&gt;How Booking.com Cut the Cost of Its Biggest Node.js Service by 38%&lt;/a&gt;&lt;/span&gt; — The online travel company moved its biggest React SSR service from pm2’s process-based cluster approach to Platformatic’s &lt;a href="https://nodeweekly.com/link/191262/rss" style=" color: #20824B;   "&gt;Watt&lt;/a&gt; and worker threads, then tuned load balancing and V8’s GC to get noteworthy gains.&lt;/p&gt;
  &lt;p&gt;Ilya Malyavin (Booking.com) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  &lt;a href="https://nodeweekly.com/link/191260/rss" style=" color: #20824B;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/195cf43d.png" width="160" height="98" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/191260/rss" title="serpapi.com" style=" color: #20824B;   "&gt;100+ Search Engines. One Simple API&lt;/a&gt;&lt;/span&gt; — Build with real-time search data from Google, YouTube, Amazon, and more. SerpApi delivers structured results in JSON and Markdown for AI agents and your next app. Skip scraping headaches. &lt;a href="https://nodeweekly.com/link/191260/rss" style=" color: #20824B;   "&gt;Start building with a simple API&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;SerpApi &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/191263/rss" title="nodejs.org" style=" color: #20824B;   "&gt;Node.js 26.11.0 (Current) Released&lt;/a&gt;&lt;/span&gt; — A more substantial minor release than usual with a new &lt;a href="https://nodeweekly.com/link/191264/rss" style=" color: #20824B;   "&gt;&lt;code&gt;--process-timeout&lt;/code&gt; flag&lt;/a&gt; that ends a process after a set time (even mid-busy-loop), &lt;code&gt;node:sqlite&lt;/code&gt; gets &lt;a href="https://nodeweekly.com/link/191265/rss" style=" color: #20824B;   "&gt;virtual table support&lt;/a&gt;, &lt;a href="https://nodeweekly.com/link/191266/rss" style=" color: #20824B;   "&gt;&lt;code&gt;Buffer.stringLength()&lt;/code&gt;&lt;/a&gt;, and Alpine (x64) is promoted to tier 2 support.&lt;/p&gt;
  &lt;p&gt;Antoine du Hamel &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;⚠️ 26.11 also rolled out &lt;a href="https://nodeweekly.com/link/191267/rss" style=" color: #20824B; font-weight: 600;"&gt;the new docs design&lt;/a&gt;, but a bug was found that caused the docs to not render to HTML, so &lt;a href="https://nodeweekly.com/link/191268/rss" style=" color: #20824B; font-weight: 600;"&gt;v26.11.1&lt;/a&gt; reverts back to the old docs design for now.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;While we were away last week, VoidZero dropped &lt;a href="https://nodeweekly.com/link/191269/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Vite+ 1.0&lt;/a&gt;, its single command (&lt;code&gt;vp&lt;/code&gt;) Node.js version, package, and frontend toolchain manager. Node's &lt;a href="https://nodeweekly.com/link/191270/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;download page&lt;/a&gt; has already updated to offering Vite+ as an option.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;With &lt;a href="https://nodeweekly.com/link/191271/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;this commit&lt;/a&gt;, future releases of Node should &lt;a href="https://nodeweekly.com/link/191272/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;load most ES modules synchronously&lt;/a&gt;, only taking the async path for top-level &lt;code&gt;await&lt;/code&gt;, loader hooks and the like.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/191273/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;V8 15.5 has landed&lt;/a&gt; on Node's main branch, ahead of Node 27. A big jump from Node 26's V8 14.6.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/191274/rss" title="adventures.nodeland.dev" style=" color: #20824B;   "&gt;Optimizing Objects with &lt;code&gt;null&lt;/code&gt; Prototypes&lt;/a&gt;&lt;/span&gt; — In V8, objects created with &lt;code&gt;{ __proto__: null }&lt;/code&gt; or &lt;code&gt;Object.create(null)&lt;/code&gt; start off in a slower ‘dictionary mode’. Creating a plain object and nulling the prototype afterwards keeps it fast, as Matteo shows.&lt;/p&gt;
  &lt;p&gt;Matteo Collina &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/191275/rss" title="blog.gaborkoos.com" style=" color: #20824B;   "&gt;I Tested 11 HTTP Resilience Libraries&lt;/a&gt;&lt;/span&gt; — &lt;a href="https://nodeweekly.com/link/191276/rss" style=" color: #20824B;   "&gt;ffetch&lt;/a&gt;'s creator tests how a variety of fetch wrappers (like &lt;a href="https://nodeweekly.com/link/191277/rss" style=" color: #20824B;   "&gt;Ky&lt;/a&gt;, &lt;a href="https://nodeweekly.com/link/191278/rss" style=" color: #20824B;   "&gt;ofetch&lt;/a&gt;, and &lt;a href="https://nodeweekly.com/link/191279/rss" style=" color: #20824B;   "&gt;Wretch&lt;/a&gt;) handle retries, timeouts and cancellation, and where those policies interact badly.&lt;/p&gt;
  &lt;p&gt;Gabor Koos &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/191280/rss" title="fandf.co" style=" color: #20824B;   "&gt;Find Auth Gaps in Your Node APIs Before Hackers Do&lt;/a&gt;&lt;/span&gt; — &lt;a href="https://nodeweekly.com/link/191280/rss" style=" color: #20824B;   "&gt;SonarQube Hunter Agent&lt;/a&gt; hunts intent-based vulnerabilities and drops verified findings right into your issue list.&lt;/p&gt;
  &lt;p&gt;SonarSource &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/191281/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Node.js Thread Pools on Busy Machines&lt;/a&gt; – Why sizing the thread pool from the CPU count backfires when other processes share the machine. &lt;cite&gt;Matteo Collina (Platformatic)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/191282/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Maintaining &lt;code&gt;wait-on&lt;/code&gt; at Agent Speed&lt;/a&gt; – &lt;a href="https://nodeweekly.com/link/191283/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;wait-on&lt;/a&gt;'s new co-maintainer reflects on his first week managing things agent-style. &lt;cite&gt;Kevin Old&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/191284/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;How to Compile JavaScript into a Single Executable&lt;/a&gt; – A comparison of the Node, Bun and Deno approaches. &lt;cite&gt;Flavio Copes&lt;/cite&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;🛠 Code &amp;amp; Tools&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://nodeweekly.com/link/191285/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/zl46xknjbzir2w3qx7sk.jpg" width="640" style="    line-height: 100%;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/191285/rss" title="github.com" style=" color: #20824B;   "&gt;DOCX 9.9: Generate Word &lt;code&gt;.docx&lt;/code&gt; Files from JavaScript&lt;/a&gt;&lt;/span&gt; — A comprehensive library for generating &lt;code&gt;docx&lt;/code&gt; files. 9.8 recently added support for charts, shapes and watermarks, and 9.9 adds a way to lay out documents the way Word itself does. &lt;a href="https://nodeweekly.com/link/191286/rss" style=" color: #20824B;   "&gt;Homepage&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Dolan Miu &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/191287/rss" title="h3.dev" style=" color: #20824B;   "&gt;H3 v2: The UnJS HTTP Framework is Rebuilt on Web Standards&lt;/a&gt;&lt;/span&gt; — A minimal HTTP framework best known for powering Nitro and Nuxt’s server layer. v2 is a rewrite around standard &lt;code&gt;Request&lt;/code&gt; and &lt;code&gt;Response&lt;/code&gt;, so one app runs on Node, Bun, Deno and Workers, with &lt;code&gt;URLPattern&lt;/code&gt;-style routing and &lt;code&gt;(event, next)&lt;/code&gt; middleware. &lt;a href="https://nodeweekly.com/link/191288/rss" style=" color: #20824B;   "&gt;More info here&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Pooya Parsa &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;span&gt;🤖&lt;/span&gt; &lt;a href="https://nodeweekly.com/link/191289/rss" title="crashunited.itch.io" style=" color: #20824B;   "&gt;Klattsch: Retro 1980s Vocal Synthesis&lt;/a&gt;&lt;/span&gt; — 1980s-style phonemes to speech in a single npm package! It's very flexible, you can even make it sing, akin to HAL in &lt;em&gt;2001&lt;/em&gt;. Works in Node but you can also run it in the browser.&lt;/p&gt;
  &lt;p&gt;Crash United &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/191290/rss" title="feedsmith.dev" style=" color: #20824B;   "&gt;Feedsmith 3.0: Fast Web Feed Parser and Generator&lt;/a&gt;&lt;/span&gt; — &lt;a href="https://nodeweekly.com/link/191291/rss" style=" color: #20824B;   "&gt;Parse and generate&lt;/a&gt; RSS, Atom, and JSON feeds from JavaScript, in both browsers and Node. v2.x users will find &lt;a href="https://nodeweekly.com/link/191292/rss" style=" color: #20824B;   "&gt;this migration guide&lt;/a&gt; useful.&lt;/p&gt;
  &lt;p&gt;Maciej Lamberski &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/191293/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;pnpm 12.10&lt;/a&gt; – An experimental &lt;code&gt;loaded&lt;/code&gt; linker lets Node load dependencies straight from pnpm's store, skipping &lt;code&gt;node_modules&lt;/code&gt; linking.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/191294/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Hono 5.0 RC&lt;/a&gt; – The web-standards server framework goes ESM-only, requires Node 22.12+, and moves runtime adapters into separate packages.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/191295/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Execa 10.1&lt;/a&gt; – The process execution library fixes behaviors you may have relied on, like &lt;code&gt;extendEnv: false&lt;/code&gt; still inheriting &lt;code&gt;process.env&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/191296/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Effect 4.0&lt;/a&gt; – The TypeScript effect system gets a rewritten dependency-free core and consolidated packages.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;⚠️ &lt;a href="https://nodeweekly.com/link/191297/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Handlebars 4.7.10&lt;/a&gt; – Fixes two critical JavaScript injection flaws. Earlier 4.x releases are affected.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/191298/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;he 2.0&lt;/a&gt; – Mathias Bynens' HTML entity encoder/decoder gets its first release in 8 years and moves to ESM with named exports.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px;"&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📰 Classifieds&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/191299/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;CodeAF&lt;/a&gt; fixed 2x OpenCode's issues and nearly 4x Claude Code's on the same model, at up to 4.8x less per fix. &lt;a href="https://nodeweekly.com/link/191299/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;New release, open source&lt;/a&gt;.&lt;/p&gt;
 
&lt;p&gt;🚫 Ban the device, not just the account. &lt;a href="https://nodeweekly.com/link/191307/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Fingerprint's visitor ID&lt;/a&gt; catches ban evaders — even incognito or behind a proxy.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;📢  Elsewhere in the ecosystem&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;.node&lt;/code&gt; domains?&lt;/strong&gt; Confused by the huge number of TLDs available to register? Get ready for more as ICANN has unveiled &lt;a href="https://nodeweekly.com/link/191300/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;a whole new round of them&lt;/a&gt; – you can browse &lt;a href="https://nodeweekly.com/link/191301/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;the proposed new gTLDs here&lt;/a&gt; which… includes &lt;code&gt;.node&lt;/code&gt;!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sindre Sorhus, the prolific npm package author, &lt;a href="https://nodeweekly.com/link/191302/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;has disabled outside pull requests&lt;/a&gt; on his repos due to AI, but will keep maintaining them.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Daniel Lemire &lt;a href="https://nodeweekly.com/link/191303/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;timed linking the Node binary&lt;/a&gt; with GNU &lt;code&gt;ld&lt;/code&gt;, &lt;code&gt;gold&lt;/code&gt;, and &lt;code&gt;mold&lt;/code&gt;. Mold won easily, which may be useful if you're rebuilding Node a &lt;em&gt;lot&lt;/em&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Theo Browne's &lt;a href="https://nodeweekly.com/link/191304/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;ts-rust&lt;/a&gt; is an experimental Rust port of the TypeScript 7 compiler, built almost entirely by AI agents.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📊 The &lt;a href="https://nodeweekly.com/link/191305/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;2026 &lt;em&gt;Stack Overflow&lt;/em&gt; Developer Survey results&lt;/a&gt; are out, drawing on 30,903 responses.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;


&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://nodeweekly.com/open/643/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 8 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://nodeweekly.com/issues/643</guid>
    </item>
    <item>
      <title>12 Node built-ins that replace npm packages</title>
      <link>https://nodeweekly.com/issues/642</link>
      <description>

  

    
    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;div&gt;    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;
&lt;td align="left" style="padding-left: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;#​642 — September 24, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;&lt;a href="https://nodeweekly.com/link/190799/rss" style=" color: #20824B;"&gt;Read on the Web&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;⚠️ We're taking a week off next week, so we'll be back on Thursday, October 8.&lt;br&gt;__&lt;br&gt;&lt;em&gt;Your editor, Peter Cooper&lt;/em&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border="0"&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em; margin: 0; padding: 0;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/v1653576619/lgfqinzbdqttwmhvljxb.png" width="100%" style="    line-height: 100%; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://nodeweekly.com/link/190758/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/rjkg96w3qff4rlobgivq.jpg" width="640" style="    line-height: 100%;    "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/190758/rss" title="flaviocopes.com" style=" color: #20824B;   "&gt;Node.js Built-ins That Replaced npm Packages&lt;/a&gt;&lt;/span&gt; — A practical tour of 12 Node built-ins that replace packages like &lt;code&gt;axios&lt;/code&gt;, &lt;code&gt;dotenv&lt;/code&gt;, &lt;code&gt;nodemon&lt;/code&gt; and &lt;code&gt;chalk&lt;/code&gt;. Each is explained with its stability level in Node 24 LTS and gotchas that might make you want to stick with your existing dependency anyway.&lt;/p&gt;
  &lt;p&gt;Flavio Copes &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  &lt;a href="https://nodeweekly.com/link/190757/rss" style=" color: #20824B;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/9a068ba0.jpg" width="110" height="110" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/190757/rss" title="agentfield.ai" style=" color: #20824B;   "&gt;CodeAF: The Open-Source Software Factory for Open Models&lt;/a&gt;&lt;/span&gt; — Instead of juggling a terminal for every agent, you get one window for every project. Hand work off: it splits it into parts, runs them in parallel, tests what comes back and merges what passes. Many models, one session: the right one for each call.&lt;/p&gt;
  &lt;p&gt;AgentField.ai &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/190759/rss" title="nodejs.org" style=" color: #20824B;   "&gt;Node.js 26.10.0 (Current) Released&lt;/a&gt;&lt;/span&gt; — Built-in, promise-based &lt;a href="https://nodeweekly.com/link/190760/rss" style=" color: #20824B;   "&gt;&lt;code&gt;util.debounce()&lt;/code&gt; and &lt;code&gt;util.throttle()&lt;/code&gt;&lt;/a&gt; arrive, complete with &lt;code&gt;AbortSignal&lt;/code&gt; support. There’s also &lt;code&gt;&lt;a href="https://nodeweekly.com/link/190761/rss" style=" color: #20824B;   "&gt;util.markPromiseAsHandled()&lt;/a&gt;&lt;/code&gt; to help retire &lt;code&gt;.catch(() =&amp;gt; {})&lt;/code&gt; hacks. Plus a little more besides.&lt;/p&gt;
  &lt;p&gt;Antoine du Hamel &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 &lt;a href="https://nodeweekly.com/link/190762/rss" style=" color: #20824B; font-weight: 600;"&gt;Node v22.23.3 (LTS)&lt;/a&gt; also landed with updated root certificates and dependencies (OpenSSL, npm, and Undici) plus minor fixes.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;From Node.js 27, &lt;a href="https://nodeweekly.com/link/190763/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Intel Macs drop to only having 'experimental' support&lt;/a&gt;, meaning no official x64 macOS builds and an arm64-only installer.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;James Snell has proposed &lt;a href="https://nodeweekly.com/link/190764/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;a &lt;code&gt;--process-timeout&lt;/code&gt; flag&lt;/a&gt; that kills a stuck process, even one in a tight loop, and reports what kept it alive.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;GitHub Actions has &lt;a href="https://nodeweekly.com/link/190765/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;removed Node 20 from its runners&lt;/a&gt; so if you maintain an action, switch &lt;code&gt;runs.using&lt;/code&gt; to &lt;code&gt;node24&lt;/code&gt; and publish a new release.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Yagiz Nizipli has opened &lt;a href="https://nodeweekly.com/link/190766/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;a PR that shrinks the &lt;code&gt;node&lt;/code&gt; binary by about a third&lt;/a&gt; (147MB to 95MB on macOS arm64) using extra compression and stripping symbols. Notably, 𝕏 &lt;a href="https://nodeweekly.com/link/190767/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Grok was used&lt;/a&gt; to do this work.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Daniel Lemire explains how AI-assisted experimentation &lt;a href="https://nodeweekly.com/link/190768/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;made several libraries that ship in Node faster&lt;/a&gt;, including Ada, simdjson and simdutf.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/190769/rss" title="github.blog" style=" color: #20824B;   "&gt;npm Tokens Can Now Stage Releases Without Publishing Them&lt;/a&gt;&lt;/span&gt; — A new token permission lets CI stage npm releases but not publish them, with a maintainer approving each staged version with 2FA. It offers a migration path ahead of npm's planned ending of direct publishing using bypass-2FA tokens in January 2027 if you can’t use &lt;a href="https://nodeweekly.com/link/190770/rss" style=" color: #20824B;   "&gt;trusted publishing&lt;/a&gt; yet.&lt;/p&gt;
  &lt;p&gt;GitHub / npm team &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/190771/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;How I Traced a Node.js Streams Bug in &lt;code&gt;Duplex.from()&lt;/code&gt;&lt;/a&gt; – A first-time core contributor's path from issue to PR. &lt;cite&gt;Aman Chadha&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/190772/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Publishing a Subfolder to npm for Cleaner Package Paths&lt;/a&gt; – How to keep &lt;code&gt;dist/&lt;/code&gt; (or &lt;code&gt;src/&lt;/code&gt;) out of your package's import paths. &lt;cite&gt;Bramus&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/190773/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Faster SSE Responses with Async Generators and &lt;code&gt;Promise.race()&lt;/code&gt;&lt;/a&gt; &lt;cite&gt;Valeri Karpov&lt;/cite&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;🛠 Code &amp;amp; Tools&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://nodeweekly.com/link/190774/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ooj579buk2rduxf6awis.jpg" width="640" style="    line-height: 100%;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/190774/rss" title="blog.platformatic.dev" style=" color: #20824B;   "&gt;secure-eval-worker: A Safer &lt;code&gt;eval()&lt;/code&gt; via Node's Permission Model&lt;/a&gt;&lt;/span&gt; — A new way to run untrusted (or AI-generated) JavaScript in a locked-down worker with timeouts, memory caps, and access only to the host functions you choose. Node 26 only, and not a true sandbox.&lt;/p&gt;
  &lt;p&gt;Matteo Collina and Luca Maraschi &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;span&gt;🔒&lt;/span&gt; &lt;a href="https://nodeweekly.com/link/190775/rss" title="owasp.github.io" style=" color: #20824B;   "&gt;CVE Lite CLI: Scan Your Lockfile, Get the Upgrades to Run&lt;/a&gt;&lt;/span&gt; — An OWASP-backed scanner that reads your lockfile, checks it against OSV and npm’s advisories, and gives you npm/pnpm/Yarn/Bun commands to use, including which parent package(s) to bump for transitive issues.&lt;/p&gt;
  &lt;p&gt;Sonu Kapoor and OWASP &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/190776/rss" title="www.tigerdata.com" style=" color: #20824B;   "&gt;Your Nightly Rollup Job Is a Query That Got Too Big&lt;/a&gt;&lt;/span&gt; — TimescaleDB extends Postgres with continuous aggregates to keep rollups fresh. No batch job. &lt;a href="https://nodeweekly.com/link/190776/rss" style=" color: #20824B;   "&gt;Get $1000 credit to start&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Tiger Data (creators of TimescaleDB) &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;span&gt;🤖&lt;/span&gt; &lt;a href="https://nodeweekly.com/link/190777/rss" title="github.com" style=" color: #20824B;   "&gt;Transformers.js v4.3: Run AI Models from JavaScript&lt;/a&gt;&lt;/span&gt; — Adds support for structured output (e.g. JSON), using WebGPU on Safari 26+, and DeepSeek v4. &lt;a href="https://nodeweekly.com/link/190778/rss" style=" color: #20824B;   "&gt;The docs&lt;/a&gt; have had an overhaul and there’s now an &lt;a href="https://nodeweekly.com/link/190779/rss" style=" color: #20824B;   "&gt;agent skill&lt;/a&gt; you can use.&lt;/p&gt;
  &lt;p&gt;Hugging Face &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/190780/rss" title="ben3d.ca" style=" color: #20824B;   "&gt;vitest-gpu and jest-gpu: Test WebGL and WebGPU Code Without a Browser&lt;/a&gt;&lt;/span&gt; — Vitest and Jest environments that give tests WebGL and WebGPU contexts in Node, so you can compile shaders, run compute passes, or diff frames against baselines &lt;em&gt;sans&lt;/em&gt; browser.&lt;/p&gt;
  &lt;p&gt;Ben Houston &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://nodeweekly.com/link/190781/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/lsy7rbj3vk6l9lzqxhgd.jpg" width="640" style="    line-height: 100%;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/190782/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Superdiff 4.3&lt;/a&gt; – A library that produces diffs of objects, arrays and text. &lt;a href="https://nodeweekly.com/link/190781/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;v4.3 can now diff code&lt;/a&gt; by line and token too &lt;em&gt;(above)&lt;/em&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/190783/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;dotenv 18.0&lt;/a&gt; – The popular &lt;code&gt;.env&lt;/code&gt; file loader. &lt;a href="https://nodeweekly.com/link/190784/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;v18 adds a CLI&lt;/a&gt; and a faster opt-in parser, but drops &lt;code&gt;-r dotenv/config&lt;/code&gt; preloading in favor of &lt;code&gt;dotenv run --&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/190785/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Tinypool 2.2&lt;/a&gt; – Minimal worker thread pool and Piscina fork. Now &lt;a href="https://nodeweekly.com/link/190786/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;accepts a &lt;code&gt;URL&lt;/code&gt; instance&lt;/a&gt; as the filename.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/190787/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;NestJS 12.1&lt;/a&gt; – Now with &lt;a href="https://nodeweekly.com/link/190788/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;built-in cookie support&lt;/a&gt;, &lt;a href="https://nodeweekly.com/link/190789/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;CSRF&lt;/a&gt; protection, and security headers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/190790/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;mongodb-memory-server 11.3&lt;/a&gt; – Spin up real MongoDB servers for tests.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/190791/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;SuperTest 7.3&lt;/a&gt; – Library for testing Node HTTP servers using a fluent API.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/190792/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;SQL Formatter 15.9&lt;/a&gt; – Library for pretty-printing SQL queries.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px;"&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📰 Classifieds&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;🚫 Ban the device, not just the account. &lt;a href="https://nodeweekly.com/link/190793/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Fingerprint's visitor ID&lt;/a&gt; catches ban evaders — even incognito or behind a proxy.&lt;/p&gt;
 
&lt;p&gt;🎟️ Join us at &lt;a href="https://nodeweekly.com/link/190794/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Supabase Select&lt;/a&gt; on October 2. Get first-hand information about what's coming soon in Supabase. &lt;a href="https://nodeweekly.com/link/190794/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Apply to attend with 25% off: SUPAWEEKLY&lt;/a&gt;.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;📢  Elsewhere in the ecosystem&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/190795/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;pnpm 12.6&lt;/a&gt; can now dedupe dependency versions across a workspace as it installs, keeps &lt;code&gt;node_modules&lt;/code&gt; working after a project is moved (macOS and Linux only), and adds &lt;code&gt;--save-types&lt;/code&gt; for &lt;code&gt;@types/*&lt;/code&gt; packages.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Coding agents quadrupled Linear's test suite, so &lt;a href="https://nodeweekly.com/link/190796/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;its team reworked their CI&lt;/a&gt; to get costs down: rewriting type-aware ESLint rules as plain AST checks cut lint time 55%, and selectively disabling Vitest's isolation saved a further 17% a month.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cloudflare's Sunil Pai wrote about &lt;a href="https://nodeweekly.com/link/190797/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;the senior engineer 'death spiral'&lt;/a&gt;, where you go quiet for weeks to prove yourself in a new role and end up burning out.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🧪 &lt;a href="https://nodeweekly.com/link/190798/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;A 'periodic table' of all 115 standard HTML elements!&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;


&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://nodeweekly.com/open/642/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 24 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://nodeweekly.com/issues/642</guid>
    </item>
    <item>
      <title>Node 26.9 turns on FFI by default</title>
      <link>https://nodeweekly.com/issues/641</link>
      <description>

  

    
    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;div&gt;    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;
&lt;td align="left" style="padding-left: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;#​641 — September 17, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;&lt;a href="https://nodeweekly.com/link/190547/rss" style=" color: #20824B;"&gt;Read on the Web&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border="0"&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em; margin: 0; padding: 0;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/v1653576619/lgfqinzbdqttwmhvljxb.png" width="100%" style="    line-height: 100%; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://nodeweekly.com/link/190504/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/p1qsibnkmb1pqggvhpdk.jpg" width="640" style="    line-height: 100%;    "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/190504/rss" title="github.blog" style=" color: #20824B;   "&gt;Why (and How) GitHub Ported Copilot's Runtime from Node to Rust&lt;/a&gt;&lt;/span&gt; — GitHub's &lt;em&gt;Copilot&lt;/em&gt; runtime moved to Rust, ported in pieces behind &lt;a href="https://nodeweekly.com/link/190505/rss" style=" color: #20824B;   "&gt;napi-rs&lt;/a&gt; shims while shipping daily. Startup times and memory usage inspired the move, but the gold for porters is in the regressions they hit involving number types, &lt;code&gt;||&lt;/code&gt; semantics, and blocking the event loop.&lt;/p&gt;
  &lt;p&gt;Stephen Toub (Microsoft) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  &lt;a href="https://nodeweekly.com/link/190503/rss" style=" color: #20824B;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/fe329987.png" width="110" height="110" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/190503/rss" title="www.tigerdata.com" style=" color: #20824B;   "&gt;That p99 Spike Is One Slow Analytics Query&lt;/a&gt;&lt;/span&gt; — One endpoint runs an analytics query over millions of rows, and latency spikes for everyone. TimescaleDB extends Postgres so that query returns in milliseconds at scale. Hypertables, compression, continuous aggregates. &lt;a href="https://nodeweekly.com/link/190503/rss" style=" color: #20824B;   "&gt;Get $1000 credit to start&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Tiger Data (creators of TimescaleDB) &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Node is to get &lt;a href="https://nodeweekly.com/link/190506/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;&lt;code&gt;util.debounce()&lt;/code&gt; and &lt;code&gt;util.throttle()&lt;/code&gt; functions&lt;/a&gt;, two staples of utility libraries. They've landed on main for a future release.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔒 &lt;a href="https://nodeweekly.com/link/190507/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Moment.js 2.31.0&lt;/a&gt; is a key update. The date library is in 'maintenance mode', but gets 25M downloads a week, and v2.31.0 &lt;a href="https://nodeweekly.com/link/190508/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;fixes a path traversal vulnerability&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The Node.js Web Team's &lt;a href="https://nodeweekly.com/link/190509/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;redesigned API docs&lt;/a&gt; have &lt;a href="https://nodeweekly.com/link/190510/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;been merged&lt;/a&gt; and should reach &lt;code&gt;nodejs.org/api&lt;/code&gt; alongside a release soon.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In Node 27, the HTTP client will &lt;a href="https://nodeweekly.com/link/190511/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;reject responses with more headers than &lt;code&gt;request.maxHeadersCount&lt;/code&gt;&lt;/a&gt; (1000 by default right now) instead of just truncating them.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/190512/rss" title="nodejs.org" style=" color: #20824B;   "&gt;Node.js 26.9.0 (Current) Released&lt;/a&gt;&lt;/span&gt; — A reasonably significant minor release that brings a few new things to the table:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://nodeweekly.com/link/190513/rss" style=" color: #20824B;   "&gt;&lt;code&gt;node:ffi&lt;/code&gt;&lt;/a&gt; is enabled by default (but still &lt;em&gt;experimental&lt;/em&gt;), so you can call functions in native libraries without writing an addon.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nodeweekly.com/link/190514/rss" style=" color: #20824B;   "&gt;&lt;code&gt;node:bench&lt;/code&gt;&lt;/a&gt; is a new benchmarking module modeled on &lt;code&gt;node:test&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nodeweekly.com/link/190515/rss" style=" color: #20824B;   "&gt;Web Workers now have an experimental implementation&lt;/a&gt; (behind a flag), so browser-style &lt;code&gt;new Worker()&lt;/code&gt; and &lt;code&gt;postMessage&lt;/code&gt;, etc. can be used.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nodeweekly.com/link/190516/rss" style=" color: #20824B;   "&gt;Worker threads start up to twice as fast&lt;/a&gt; (per initial benchmarks) and use less memory, as they now start from Node's &lt;a href="https://nodeweekly.com/link/190517/rss" style=" color: #20824B;   "&gt;built-in snapshot&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;Antoine du Hamel (Node.js Team) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/190518/rss" title="master.dev" style=" color: #20824B;   "&gt;Stay Sharp in the Age of AI&lt;/a&gt;&lt;/span&gt; — Master.dev instructors build at Anthropic, OpenAI, Netflix, Google, and Stripe. Learn from them via courses, workshops, and AI learning paths. &lt;a href="https://nodeweekly.com/link/190518/rss" style=" color: #20824B;   "&gt;New members get $100 off a yearly membership&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Master.dev &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/190519/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Connection Reuse is the Money&lt;/a&gt; – How a webhook sender cut its repeat TLS handshakes with one Undici &lt;a href="https://nodeweekly.com/link/190520/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Agent&lt;/a&gt; per destination. &lt;cite&gt;Mike Murray&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/190521/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Email, Decoupled from Where and How&lt;/a&gt; – The design behind &lt;a href="https://nodeweekly.com/link/190522/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Upyo&lt;/a&gt;, a web-standards-based email library for Node, Deno, Bun and edge runtimes that works with many providers. &lt;cite&gt;Hong Minhee&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/190523/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;A Deep Dive into JavaScript Engines: Writing Code That Makes V8 Happy&lt;/a&gt; &lt;cite&gt;Audrey Doyen&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/190524/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Five Software Engineering Roles for Working with AI&lt;/a&gt; &lt;cite&gt;Nicholas C. Zakas&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/190525/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;How to Implement a Distributed Circuit Breaker&lt;/a&gt; &lt;cite&gt;Gabor Koos&lt;/cite&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;🛠 Code &amp;amp; Tools&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://nodeweekly.com/link/190526/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/wyik6kkj35wmos4bkr2r.jpg" width="640" style="    line-height: 100%;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/190526/rss" title="www.eraser.io" style=" color: #20824B;   "&gt;Eraser Diagrams: Diagrams as Code, Minus the Layout Engine&lt;/a&gt;&lt;/span&gt; — A Node API/CLI for rendering JSON diagrams to PNG or HTML. Unlike Mermaid or D2, there's no auto-layout engine, so you (or your LLM!) get to control just where things go, while connection routing, icons and styling are handled for you.&lt;/p&gt;
  &lt;p&gt;Eraser &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/190527/rss" title="blog.platformatic.dev" style=" color: #20824B;   "&gt;&lt;code&gt;@platformatic/memcached&lt;/code&gt;: A Faster memcached Client&lt;/a&gt;&lt;/span&gt; — A zero-dependency &lt;a href="https://nodeweekly.com/link/190528/rss" style=" color: #20824B;   "&gt;memcached&lt;/a&gt; client built on the modern meta protocol, pipelining over a single connection. Claims to be "roughly 3x" the speed of alternatives.&lt;/p&gt;
  &lt;p&gt;Matteo Collina (Platformatic) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/190529/rss" title="github.com" style=" color: #20824B;   "&gt;jsdom 30.1: The Release That's 'Feeling the AGI'&lt;/a&gt;&lt;/span&gt; — The pure-JS DOM implementation gets faster DOM construction, mutations, &lt;code&gt;getComputedStyle()&lt;/code&gt; and event dispatch, plus lower memory use. Much of it came from Scott's Codex-assisted PRs, which Domenic praises for being carefully curated.&lt;/p&gt;
  &lt;p&gt;Domenic Denicola and Scott Cooper &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/190530/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;XO 5.0&lt;/a&gt; – The zero-config ESLint wrapper now lints &lt;code&gt;package.json&lt;/code&gt; files and enforces import file extensions in TypeScript.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/190531/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;officeParser 8.0&lt;/a&gt; – Parse Office files (&lt;code&gt;docx&lt;/code&gt;, &lt;code&gt;pptx&lt;/code&gt;, &lt;code&gt;xlsx&lt;/code&gt;, etc.) and PDFs into an AST. Now with a rewritten PDF extractor.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/190532/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;oclif 6.0&lt;/a&gt; – Salesforce's framework for building Node CLIs drops support for installing legacy plugins.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/190533/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;pg-boss 12.33&lt;/a&gt; – The Postgres-backed job queue adds a &lt;code&gt;TestClock&lt;/code&gt; so tests needn't wait on timers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/190534/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Aedes 1.2&lt;/a&gt; – Barebone MQTT broker that runs on any stream server.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔒 &lt;a href="https://nodeweekly.com/link/190535/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Express 4.22.3&lt;/a&gt; – A security release for those on Express 4.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px;"&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📰 Classifieds&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;⚡ &lt;a href="https://nodeweekly.com/link/190536/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Zuplo&lt;/a&gt; puts every API, AI, and MCP request behind one gateway. Route traffic, guard your MCP servers, and cap your AI costs. &lt;a href="https://nodeweekly.com/link/190536/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Try it free&lt;/a&gt;.&lt;/p&gt;
 
&lt;p&gt;🛡️ Not all bots deserve blocking. &lt;a href="https://nodeweekly.com/link/190537/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Fingerprint Bot Detection&lt;/a&gt; stops content scrapers while letting legit AI agents through. &lt;a href="https://nodeweekly.com/link/190537/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Try for free&lt;/a&gt;.&lt;/p&gt;
 
&lt;p&gt;🎟️ Join us at &lt;a href="https://nodeweekly.com/link/190538/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Supabase Select&lt;/a&gt; on October 2. Bring your hardest questions to the engineers building Supabase at the Ask Supabase booth. &lt;a href="https://nodeweekly.com/link/190538/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Apply to attend with 25% off: SUPAWEEKLY&lt;/a&gt;.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;📢  Elsewhere in the ecosystem&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://nodeweekly.com/link/190539/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ztdu0xshlulicymdyo7u.jpg" width="640" style="    line-height: 100%;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/190539/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;npmchart.com&lt;/a&gt; &lt;em&gt;(above)&lt;/em&gt; is a new option for tracking download trends and repo activity of npm packages. &lt;a href="https://nodeweekly.com/link/190540/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Here's the chart for &lt;code&gt;express&lt;/code&gt;&lt;/a&gt;, for example.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/190541/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;A review of sixteen weeks of package manager releases&lt;/a&gt; across ecosystems finds similar new defences rolling out, like cooldowns, blocking install scripts (as in &lt;a href="https://nodeweekly.com/link/190542/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;npm 12&lt;/a&gt;), and publish-time scans, which &lt;a href="https://nodeweekly.com/link/190543/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;npm has done since July&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Those npm 12 defaults won't reach current Node lines, though. Last month, the Release WG &lt;a href="https://nodeweekly.com/link/190544/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;decided npm 12 is &lt;em&gt;"far too disruptive"&lt;/em&gt;&lt;/a&gt; for Node 22, 24 or 26, so it'll arrive in Node 27.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;GitHub Actions has &lt;a href="https://nodeweekly.com/link/190545/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;a new &lt;code&gt;cache-mode&lt;/code&gt; setting&lt;/a&gt; to limit cache access per workflow or job, a defence against the kind of cache poisoning that &lt;a href="https://nodeweekly.com/link/190546/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;compromised TanStack's npm packages in May&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;


&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://nodeweekly.com/open/641/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 17 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://nodeweekly.com/issues/641</guid>
    </item>
  </channel>
</rss>
