<?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>Node 26.8 reads and writes ZIP files</title>
      <link>https://nodeweekly.com/issues/638</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;#​638 — August 27, 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/189512/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! If you missed us last week, we took a brief summer vacation :-)&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/189477/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/jndmfwg6izjwgqc7sfs9.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/189477/rss" title="nodejs.org" style=" color: #20824B;   "&gt;A Recap of Node.js Interactive 2026&lt;/a&gt;&lt;/span&gt; — &lt;em&gt;Node.js Interactive&lt;/em&gt; returned for the first time since 2019 as part of this month's &lt;em&gt;RenderATL&lt;/em&gt; event with Node contributors and invited speakers tackling Node's near-term roadmap in areas like AI, supply chain security, WinterCG becoming Ecma TC55, work on QUIC and HTTP/3 support, and Node's move to one major release a year.&lt;/p&gt;
  &lt;p&gt;Aviv Keller &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/189476/rss" style=" color: #20824B;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/4509c04e.png" width="130" height="130" 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/189476/rss" title="agentfield.ai" style=" color: #20824B;   "&gt;Open Source Just Out-Reviewed the Commercial Tools&lt;/a&gt;&lt;/span&gt; — PR-AF places #2 of 42 on Martian's Code-Review-Bench, ahead of CodeRabbit, Copilot, and Devin, at ~10x lower cost per review. It plans the review per PR, runs reviewer agents in parallel, and verifies every finding against your source. Self-hosted.&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/189478/rss" title="nodejs.org" style=" color: #20824B;   "&gt;Node.js 26.8.0 (Current) Released&lt;/a&gt;&lt;/span&gt; — Among a variety of additions, Node can &lt;a href="https://nodeweekly.com/link/189479/rss" style=" color: #20824B;   "&gt;read and write ZIP archives&lt;/a&gt; without a third-party dependency. Plus &lt;strong&gt;Node's REPL now has &lt;a href="https://nodeweekly.com/link/189480/rss" style=" color: #20824B;   "&gt;basic syntax highlighting&lt;/a&gt; support.&lt;/strong&gt; &lt;a href="https://nodeweekly.com/link/189481/rss" style=" color: #20824B;   "&gt;v26.8.1&lt;/a&gt; landed hours later to fix a broken version string.&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/189482/rss" style=" color: #20824B; font-weight: 600;"&gt;Node 24.20.0 (LTS)&lt;/a&gt; also landed with several backported features including package maps, permission auditing, &lt;code&gt;node:stream/iter&lt;/code&gt;, and &lt;a href="https://nodeweekly.com/link/189483/rss" style=" color: #20824B; font-weight: 600;"&gt;WebAssembly JSPI&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;&lt;strong&gt;IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;🤚 The &lt;a href="https://nodeweekly.com/link/189484/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;latest annual Node.js user survey&lt;/a&gt; has just launched. As always, your responses help shape the future priorities of the Node.js team.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;💡 Aviv Keller has proposed &lt;a href="https://nodeweekly.com/link/189485/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;reimplementing &lt;code&gt;fs.glob&lt;/code&gt; natively in C++&lt;/a&gt;, calling straight into libuv and benching at over twice the speed of the current version. Not landed yet, but there are some &lt;em&gt;big&lt;/em&gt; names on this thread.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;James Snell is &lt;a href="https://nodeweekly.com/link/189486/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;seeking early feedback&lt;/a&gt; on a proposed Fetch Server API, part of Node's unified HTTP API initiative, offering one handler model for HTTP/1.1, 2 and 3.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/189487/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;TermDOM&lt;/a&gt;, featured in our &lt;a href="https://nodeweekly.com/link/189513/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;last issue&lt;/a&gt;, lets you build TUI apps with HTML and CSS in Node, and &lt;a href="https://nodeweekly.com/link/189488/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;now&lt;/a&gt; supports CSS Grid for layout.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;AWS Lambda has introduced &lt;a href="https://nodeweekly.com/link/189489/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;a new Node.js 26 runtime in preview&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; 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/189490/rss" title="github.com" style=" color: #20824B;   "&gt;Node's Official AI Use Policy and Guidelines&lt;/a&gt;&lt;/span&gt; — Merged into Node's contributing docs after months of debate, PRs with AI code you haven't understood or tested can be closed unreviewed, bot-opened PRs need pre-approval, and more to be aware of. Plus, don't use AI to claim &lt;em&gt;"good first issue"&lt;/em&gt; tasks!&lt;/p&gt;
  &lt;p&gt;Node.js Project &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/189491/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Query Pipelining in node-postgres: 2-3x More Throughput&lt;/a&gt; – More throughput and lower latency from one config change is always worth looking into. &lt;cite&gt;Matteo Collina&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/189492/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;ESM vs CommonJS: What &lt;code&gt;import&lt;/code&gt; and &lt;code&gt;require&lt;/code&gt; Actually Do&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; 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/189493/rss" title="pnpm.io" style=" color: #20824B;   "&gt;pnpm 12: Rewritten in Rust, Same Commands and Lockfile&lt;/a&gt;&lt;/span&gt; — The Rust rewrite is stable, but all of v11's commands, flags and lockfile format carry over with only a &lt;a href="https://nodeweekly.com/link/189494/rss" style=" color: #20824B;   "&gt;handful of changes&lt;/a&gt;. A global &lt;code&gt;node&lt;/code&gt; now follows the version your project pins, too. Note that npm's &lt;code&gt;latest&lt;/code&gt; tag still points to pnpm 11, so you'll need &lt;code&gt;pnpm self-update next-12&lt;/code&gt; to upgrade.&lt;/p&gt;
  &lt;p&gt;Zoltan Kochan &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/189495/rss" title="better-auth.com" style=" color: #20824B;   "&gt;Better Auth 1.7 Ships a Standards-Based OAuth Server&lt;/a&gt;&lt;/span&gt; — A big OAuth provider release with DPoP, per-API token rules and device code flow, plus MCP auth in its own package. Breaking changes make the upgrade guide required reading.&lt;/p&gt;
  &lt;p&gt;Gustavo Valverde &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/189496/rss" title="" style=" color: #20824B;   "&gt;Outgrowing Cron? Meet xyOps for Self-Hosted Ops Automation&lt;/a&gt;&lt;/span&gt; — Schedule jobs, run Node scripts, monitor servers, and automate response. Open source, from the Cronicle team.&lt;/p&gt;
  &lt;p&gt;xyOps &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/189497/rss" title="gtkx.dev" style=" color: #20824B;   "&gt;GTKX: Build Linux Desktop Apps with Node, GTK and React&lt;/a&gt;&lt;/span&gt; — Build Linux desktop apps with real GTK4 and Adwaita widgets with no webview involved. Write JSX and get real widgets in an ordinary Node process with npm package and Fast Refresh support.&lt;/p&gt;
  &lt;p&gt;Eugenio Depalo &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/189498/rss" title="stryker-mutator.io" style=" color: #20824B;   "&gt;Stryker Mutator 10.0: Test Your Tests with Mutation Testing&lt;/a&gt;&lt;/span&gt; — Stryker deliberately &lt;a href="https://nodeweekly.com/link/189499/rss" style=" color: #20824B;   "&gt;changes&lt;/a&gt; your code to see if your test suite catches the mutations. If not, your tests are too lax and need work. Here's &lt;a href="https://nodeweekly.com/link/189500/rss" style=" color: #20824B;   "&gt;how to get started&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Jansen, de Lang, 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/189501/rss" title="svgo.dev" style=" color: #20824B;   "&gt;SVGO 4.1: Node-Powered SVG Optimizer&lt;/a&gt;&lt;/span&gt; — SVGs often contain redundant information. You can use SVGO as a CLI tool or Node library to slim them down. &lt;a href="https://nodeweekly.com/link/189502/rss" style=" color: #20824B;   "&gt;v4.1&lt;/a&gt; has stricter XML validation and security improvements.&lt;/p&gt;
  &lt;p&gt;Kir Belevich &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/189503/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Electron 44&lt;/a&gt; – 32-bit builds are gone, macOS 13+ is now required, &lt;code&gt;clipboard&lt;/code&gt; is aligned with the W3C Clipboard API, &lt;code&gt;net.WebSocket&lt;/code&gt; is added, plus the ability to set window opacity on Linux.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/189504/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;lz4-napi 2.10.0&lt;/a&gt; – N-API bindings for LZ4 compression/decompression, implemented in Rust and backed by &lt;a href="https://nodeweekly.com/link/189505/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;lz4_flex&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🤖 &lt;a href="https://nodeweekly.com/link/189506/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;grammY 1.46.0&lt;/a&gt; – The framework for building Telegram bots from Node now supports the latest &lt;a href="https://nodeweekly.com/link/189507/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Telegram Bot API 10.3&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/189508/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Axios 1.20.0&lt;/a&gt; – The long-standing HTTP client for the browser and Node.js.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/189509/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;node-mongodb-native 7.6&lt;/a&gt; – MongoDB 4.2 support has been dropped entirely.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📺 &lt;a href="https://nodeweekly.com/link/189510/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;YouTube.js 18.0&lt;/a&gt; – JavaScript client for YouTube's internal API.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/189514/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;node-x11 4.1&lt;/a&gt; – Feature-rich X11 protocol client library.&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/638/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://nodeweekly.com/issues/638</guid>
    </item>
    <item>
      <title>Building terminal UIs with HTML and CSS</title>
      <link>https://nodeweekly.com/issues/637</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;#​637 — August 13, 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/189282/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 summer break next week, so will be back in your inbox on August 27.&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/189255/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/k7oreeb8z7biws7m37fb.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/189255/rss" title="termdom.org" style=" color: #20824B;   "&gt;TermDOM: Build Terminal UIs with HTML, CSS and the DOM&lt;/a&gt;&lt;/span&gt; — Like the look of &lt;a href="https://nodeweekly.com/link/189256/rss" style=" color: #20824B;   "&gt;Ink&lt;/a&gt; but don't like React? TermDOM implements a DOM, cascade and layout engine that paints to the terminal, so you can write a TUI with HTML and CSS. Pure JS, no native or WASM dependencies, and the official &lt;a href="https://nodeweekly.com/link/189267/rss" style=" color: #20824B;   "&gt;TodoMVC runs&lt;/a&gt; with only a stylesheet swap. Early days, but I like the idea!&lt;/p&gt;
  &lt;p&gt;Brian Kim &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/189246/rss" style=" color: #20824B;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/fb37fe8e.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/189246/rss" title="master.dev" style=" color: #20824B;   "&gt;Harness Engineering: How to Wrangle Your Agents&lt;/a&gt;&lt;/span&gt; — The models keep changing. The harness is the part you build. Scott Moss (Netflix) shows how: durable execution, sandboxed tool calls, memory systems, and multi-agent handoffs.&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;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/189268/rss" title="github.com" style=" color: #20824B;   "&gt;Fastify 6.0 Enters Alpha&lt;/a&gt;&lt;/span&gt; — It's been two years since &lt;a href="https://nodeweekly.com/link/189269/rss" style=" color: #20824B;   "&gt;Fastify&lt;/a&gt;, the popular low overhead web framework, &lt;a href="https://nodeweekly.com/link/189270/rss" style=" color: #20824B;   "&gt;dropped v5&lt;/a&gt;, but v6 is coming into sight. It's largely shaping up as a 'spring clean' release requiring Node 24 at minimum but should be good for initial testing. &lt;a href="https://nodeweekly.com/link/189271/rss" style=" color: #20824B;   "&gt;More background here&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;The Fastify 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;strong&gt;IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Node maintainer Matteo Collina explains &lt;a href="https://nodeweekly.com/link/189272/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;how he 'triages the AI horde'&lt;/a&gt; when it comes to handling 20-40 security reports each week.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/189273/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Bun&lt;/a&gt; 1.4's release appears to be &lt;em&gt;imminent&lt;/em&gt; with &lt;a href="https://nodeweekly.com/link/189274/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;𝕏 Node.js compatibility teased&lt;/a&gt; as the biggest enhancement. It hasn't dropped as we go to press, but keep an eye &lt;a href="https://nodeweekly.com/link/189275/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;on their blog&lt;/a&gt;, as no doubt it'll land minutes after we hit send! 😂&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/189248/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;&lt;code&gt;node:domain&lt;/code&gt;&lt;/a&gt;, deprecated in the docs since 2015, &lt;a href="https://nodeweekly.com/link/189249/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;could become &lt;em&gt;runtime&lt;/em&gt;-deprecated in Node 27&lt;/a&gt; — if you're still using it, speak up now.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;⚠️ Several teams are &lt;a href="https://nodeweekly.com/link/189250/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;reporting out-of-memory crashes after upgrading from Node 24.18.1 to 24.19.0&lt;/a&gt; (and rolling back fixes it). Nothing confirmed yet, so add your data if affected.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vercel now offers a &lt;a href="https://nodeweekly.com/link/189247/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;one-click Node.js upgrade mechanism&lt;/a&gt; for deprecated Node.js versions (notably new Node 20-based builds will &lt;em&gt;fail&lt;/em&gt; after Oct 1).&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/189251/rss" title="www.inngest.com" style=" color: #20824B;   "&gt;Adding a Second Middleware Broke Our TypeScript Types&lt;/a&gt;&lt;/span&gt; — A TypeScript detective story in which adding a second middleware could collapse a return type to &lt;code&gt;{}&lt;/code&gt;. The culprit was a widely used key-filtering idiom that leaks &lt;code&gt;undefined&lt;/code&gt; when properties are optional.&lt;/p&gt;
  &lt;p&gt;Linell Bonnette (Inngest) &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/189252/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;5 Useful &lt;code&gt;npx&lt;/code&gt; Helpers&lt;/a&gt; – A reminder that &lt;code&gt;npx&lt;/code&gt; makes it easy to run one-off tools. Jens shares five he likes for spell checking, cleaning up JS projects, and more. &lt;cite&gt;Jens Oliver Meiert&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/189253/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Fixing the Dual-Write Problem in Node.js with the Outbox Pattern&lt;/a&gt; – Making your database and message queue agree. &lt;cite&gt;Gabor Koos&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/189254/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;A Deep Dive into How Hono Is Built&lt;/a&gt;  &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;"&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/189276/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/xfcfc6xxiuck4vvkliii.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/189276/rss" title="deepseek.com" style=" color: #20824B;   "&gt;DeepSeek Harness: DeepSeek's New Node-Powered Agent Harness&lt;/a&gt;&lt;/span&gt; — Today, the popular Chinese model lab unveiled its own Claude Code-alike and already racked up 30k stars. It's not a typical CLI harness, though, but runs through a web UI.
Curiously, &lt;em&gt;everything&lt;/em&gt; is a plugin, built atop &lt;a href="https://nodeweekly.com/link/189277/rss" style=" color: #20824B;   "&gt;Cordis&lt;/a&gt;, an existing Node plugin system whose author DeepSeek has hired. &lt;a href="https://nodeweekly.com/link/189278/rss" style=" color: #20824B;   "&gt;GitHub repo&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;DeepSeek &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/189279/rss" title="github.com" style=" color: #20824B;   "&gt;unbash: Fast 0-Dependency Bash Parsing Library&lt;/a&gt;&lt;/span&gt; — The parser &lt;a href="https://nodeweekly.com/link/189280/rss" style=" color: #20824B;   "&gt;Knip&lt;/a&gt; uses to make sense of shell scripts, as a standalone library. It turns bash code into a typed AST that can then be used for classification, permission checks, rewriting commands, and more.&lt;/p&gt;
  &lt;p&gt;Lars Kappert &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/189258/rss" title="github.com" style=" color: #20824B;   "&gt;Full-Text Search in Drizzle Without a Second System&lt;/a&gt;&lt;/span&gt; — Try the official ParadeDB integration for Drizzle. Search your live Postgres tables. No ETL, no Elasticsearch cluster.&lt;/p&gt;
  &lt;p&gt;ParadeDB &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/189259/rss" title="github.com" style=" color: #20824B;   "&gt;njsscan 1.0: A Semantic-Aware SAST Tool for Node&lt;/a&gt;&lt;/span&gt; — A &lt;code&gt;pip&lt;/code&gt;-installable, zero-config security scanner that finds insecure patterns in Node apps using ~70 &lt;code&gt;semgrep&lt;/code&gt;-powered rules for XSS, SSRF, &lt;code&gt;eval&lt;/code&gt;, JWT and NoSQL injection.&lt;/p&gt;
  &lt;p&gt;Ajin Abraham (OpenSecurity) &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/189260/rss" title="github.com" style=" color: #20824B;   "&gt;Hucre 1.0: A Zero-Dependency Spreadsheet Engine&lt;/a&gt;&lt;/span&gt; — A library for reading and writing common spreadsheet formats, including things like embedded images, hyperlinks, password protection, and tables.&lt;/p&gt;
  &lt;p&gt;Wind &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/189261/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;NodeBB 4.15.0&lt;/a&gt; – The Node-powered forum software (&lt;a href="https://nodeweekly.com/link/189262/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;demo site here&lt;/a&gt;) gets lots of bug fixes and enhances fediverse support.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/189263/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;smol-toml 1.8&lt;/a&gt; – Small, fast, spec-compliant TOML 1.1 parser/serializer.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/189264/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;BullMQ 6.1&lt;/a&gt; – Fast, reliable Redis- or Postgres-based distributed queue.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/189265/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;swift-node 0.1.2&lt;/a&gt; – Write the native part of a Node module in Swift.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/189281/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Vitest 5.0 Release Candidate&lt;/a&gt;&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; padding: 0px 15px;"&gt;
&lt;p&gt;We'll be back in two weeks on August 27 – see you then! Unless you're a &lt;a href="https://nodeweekly.com/link/189266/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;React Status&lt;/a&gt; subscriber too, in which case… see you tomorrow ;-)&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/637/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 13 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://nodeweekly.com/issues/637</guid>
    </item>
    <item>
      <title>Node.js 26.7, vlt 1.0, and Shai-Hulud Returns</title>
      <link>https://nodeweekly.com/issues/636</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;#​636 — August 6, 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/188934/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/188890/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/bc5keokbeeeetqnie36v.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/188890/rss" title="nodejs.org" style=" color: #20824B;   "&gt;Node.js 26.7.0 (Current) Released&lt;/a&gt;&lt;/span&gt; — Landing just two days after &lt;a href="https://nodeweekly.com/link/188891/rss" style=" color: #20824B;   "&gt;26.6&lt;/a&gt;, coverage reports can now include files your tests didn't touch with &lt;a href="https://nodeweekly.com/link/188892/rss" style=" color: #20824B;   "&gt;&lt;code&gt;--test-coverage-include-all&lt;/code&gt;&lt;/a&gt;, FFI and SQLite pick up crash fixes, and Perfetto tracing support lands, though you'll need a custom build to use it.&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/188893/rss" style=" color: #20824B; font-weight: 600;"&gt;Node v24.19.0 (LTS)&lt;/a&gt; is also a noteworthy update, adding &lt;code&gt;--experimental-import-text&lt;/code&gt;, &lt;code&gt;fs.readFile()&lt;/code&gt; can reuse a buffer you supply, and &lt;code&gt;setKeepAlive&lt;/code&gt; exposes &lt;code&gt;TCP_KEEPINTVL&lt;/code&gt; and &lt;code&gt;TCP_KEEPCNT&lt;/code&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;a href="https://nodeweekly.com/link/188889/rss" style=" color: #20824B;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/2fc0d85b.jpg" width="135" height="135" 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/188889/rss" title="sentry.io" style=" color: #20824B;   "&gt;Join Sentry Live: How Etsy Stays Crash-Free&lt;/a&gt;&lt;/span&gt; — Sentry and Etsy break down how Etsy's engineering team preps for peak traffic, debugs in real time, and ties crashes to revenue impact. Real stories and practical takeaways for teams running services at scale.&lt;/p&gt;
  &lt;p&gt;Sentry &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/188894/rss" title="research.jfrog.com" style=" color: #20824B;   "&gt;Shai-Hulud Strikes Again, Affecting &lt;code&gt;keyv&lt;/code&gt; and 400+ Packages&lt;/a&gt;&lt;/span&gt; — A credential-stealing worm was rolled out as part of a false &lt;a href="https://nodeweekly.com/link/188895/rss" style=" color: #20824B;   "&gt;keyv&lt;/a&gt; 6.0 release this week, and quickly spread. A reminder to check out &lt;a href="https://nodeweekly.com/link/188896/rss" style=" color: #20824B;   "&gt;npm v12&lt;/a&gt;, &lt;a href="https://nodeweekly.com/link/188897/rss" style=" color: #20824B;   "&gt;pnpm&lt;/a&gt;, or vlt (below), all of which block install scripts by default, the mechanism this worm relied on.&lt;/p&gt;
  &lt;p&gt;Shavit Satou (JFrog) &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/188898/rss" title="www.vlt.io" style=" color: #20824B;   "&gt;vlt 1.0: An &lt;code&gt;npm&lt;/code&gt; Alternative With CSS-Like Selectors&lt;/a&gt;&lt;/span&gt; — After two years, Darcy Clarke's drop-in &lt;code&gt;npm&lt;/code&gt; alternative hits 1.0. A key draw is &lt;code&gt;vlt query&lt;/code&gt;, which lets you use 60+ CSS-like selectors over your dependency graph (half of which are security related). vlt also offers hosted private package registries.&lt;/p&gt;
  &lt;p&gt;Darcy Clarke &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;💡 In 2023, Darcy wrote &lt;a href="https://nodeweekly.com/link/188899/rss" style=" color: #20824B; font-weight: 600;"&gt;"The massive bug at the heart of the npm ecosystem"&lt;/a&gt;, a post that was prescient of current packaging headaches.&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;⚠️ The Express team has &lt;a href="https://nodeweekly.com/link/188900/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;announced security releases for &lt;code&gt;body-parser&lt;/code&gt;&lt;/a&gt; to address a DoS vulnerability.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/188901/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;&lt;code&gt;net.BlockList&lt;/code&gt;&lt;/a&gt;, used to prevent network access to/from specified IP addresses and ranges, is &lt;a href="https://nodeweekly.com/link/188902/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;gaining new methods and getting much faster&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;There's a proposal and initial implementation to &lt;a href="https://nodeweekly.com/link/188903/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;bring the HTML spec's &lt;em&gt;Web Worker API&lt;/em&gt; to Node&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/188904/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;ZIP archive support is coming to &lt;code&gt;node:zlib&lt;/code&gt;&lt;/a&gt; in a future release.&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;a href="https://nodeweekly.com/link/188905/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;What's New in Mongoose 9.9: Major Performance Improvements&lt;/a&gt; – &lt;a href="https://nodeweekly.com/link/188906/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Mongoose&lt;/a&gt; is a popular MongoDB object modelling solution. &lt;cite&gt;Valeri Karpov&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/188907/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Debugging Stuck Node.js Processes&lt;/a&gt; – A trick for catching event loop blockers that never yield. &lt;cite&gt;Winona Schroeer-Smith&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/188908/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/kpdqracqa9nmngvovohb.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/188908/rss" title="firecrawl.github.io" style=" color: #20824B;   "&gt;anydoc: Convert 14 Document Formats into Markdown&lt;/a&gt;&lt;/span&gt; — A Rust-powered library (with Node.js and WASM bindings) that converts Word, PowerPoint, Excel, OpenDocument, RTF, EPUB, CSV, and PDF documents into Markdown. I tried it on a 1,600 page PDF and it took less than 2 seconds. There's also an in-browser demo to try it out. &lt;a href="https://nodeweekly.com/link/188909/rss" style=" color: #20824B;   "&gt;GitHub repo&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Firecrawl &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;💡 Firecrawl also has &lt;a href="https://nodeweekly.com/link/188910/rss" style=" color: #20824B; font-weight: 600;"&gt;pdf-inspector&lt;/a&gt; focused specifically on extracting text from PDFs (with positional awareness). &lt;a href="https://nodeweekly.com/link/188911/rss" style=" color: #20824B; font-weight: 600;"&gt;Liteparse&lt;/a&gt; is also worth considering if you want OCR for scanned / non-text PDFs.&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/188912/rss" title="www.tigerdata.com" style=" color: #20824B;   "&gt;You Added a Cache to Hide a Slow Query&lt;/a&gt;&lt;/span&gt; — TimescaleDB makes the query fast in Postgres, so you cache less and serve fresh data. &lt;a href="https://nodeweekly.com/link/188912/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;a href="https://nodeweekly.com/link/188913/rss" title="github.com" style=" color: #20824B;   "&gt;ioredis 6.0: Robust, Full-Featured Redis Client for Node&lt;/a&gt;&lt;/span&gt; — v6.0, the first major release in four years, adds &lt;a href="https://nodeweekly.com/link/188914/rss" style=" color: #20824B;   "&gt;RESP3&lt;/a&gt; and support for new &lt;a href="https://nodeweekly.com/link/188915/rss" style=" color: #20824B;   "&gt;Redis 8.10&lt;/a&gt; features.&lt;/p&gt;
  &lt;p&gt;The ioredis 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/188916/rss" title="github.com" style=" color: #20824B;   "&gt;MicroDiff 1.6: Fast Object and Array Comparison Library&lt;/a&gt;&lt;/span&gt; — Given two objects or arrays, it returns the differences (think &lt;code&gt;diff&lt;/code&gt; but for JS objects). This week's release adds support for Temporal types.&lt;/p&gt;
  &lt;p&gt;Jacob Jackson &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/188917/rss" title="github.com" style=" color: #20824B;   "&gt;Devalue 5.9: Get the Job Done When &lt;code&gt;JSON.stringify&lt;/code&gt; Can't&lt;/a&gt;&lt;/span&gt; — A library from the Svelte project that's like &lt;code&gt;JSON.stringify&lt;/code&gt; but can tackle cyclical and repeated references, regexes, &lt;code&gt;Map&lt;/code&gt;/&lt;code&gt;Set&lt;/code&gt;, and custom types. &lt;a href="https://nodeweekly.com/link/188918/rss" style=" color: #20824B;   "&gt;Try it here&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Svelte &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/188919/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;node-x11 3.8&lt;/a&gt; – An X Window System protocol client library with no dependencies, GLX / OpenGL support, and even the ability to &lt;a href="https://nodeweekly.com/link/188920/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;work in the browser&lt;/a&gt; against a JavaScript X-server emulator.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/188921/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;pnpm 11.20&lt;/a&gt; – Mostly security hardening, but also adds an &lt;code&gt;npmjs:&lt;/code&gt; prefix you can use to more succinctly pin a dependency to the public registry. Note that &lt;a href="https://nodeweekly.com/link/188922/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;pnpm 12.0&lt;/a&gt; has also reached RC stage.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/188923/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Hono 4.13.0&lt;/a&gt; – The small, fast Web standards-based web framework focuses on performance and adds HTTP QUERY method support.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/188924/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;graphql-upload 18.0&lt;/a&gt; – Middleware that adds support for GraphQL multipart requests to Node.js GraphQL servers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/188925/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;cron-parser 5.7&lt;/a&gt; – Library for parsing and manipulating &lt;code&gt;cron&lt;/code&gt; expressions.&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/188926/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/188926/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Try it free&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/188927/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/rsttgpy4jk534dz2b9m8.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;Did you know JavaScript supports a third type of comment (beyond &lt;code&gt;//&lt;/code&gt; and &lt;code&gt;/* */&lt;/code&gt;)? &lt;a href="https://nodeweekly.com/link/188927/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;▶️ Mat Marquis shows off hashbang comments&lt;/a&gt; in a short YouTube video. And yes, &lt;a href="https://nodeweekly.com/link/188928/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;they're in the language spec!&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🤖 Fred K. Schott, of &lt;a href="https://nodeweekly.com/link/188929/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Astro&lt;/a&gt; fame, has &lt;a href="https://nodeweekly.com/link/188930/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;unveiled Flue 2.0&lt;/a&gt;, the latest version of his TypeScript-based open agent framework.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;⚖️ The &lt;em&gt;Deno vs Oracle&lt;/em&gt; JavaScript™ trademark case rumbles on with &lt;a href="https://nodeweekly.com/link/188931/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Deno consenting to a &lt;em&gt;fifth&lt;/em&gt; extension request&lt;/a&gt; as discovery continues.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📺 SQLite's Richard Hipp gave &lt;a href="https://nodeweekly.com/link/188932/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;▶️ a detailed 50-minute talk on SQLite's reliability&lt;/a&gt; and the tools, practices, and design choices that have given it its strong reputation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📊 The &lt;a href="https://nodeweekly.com/link/188933/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;results of the &lt;em&gt;State of CSS 2026&lt;/em&gt; survey&lt;/a&gt; have been released.&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/636/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 6 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://nodeweekly.com/issues/636</guid>
    </item>
    <item>
      <title>npm to scan packages for malware at publish time</title>
      <link>https://nodeweekly.com/issues/635</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;#​635 — July 30, 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/188630/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/188597/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/un7lnngivo4dfpog3r24.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/188597/rss" title="evilmartians.com" style=" color: #20824B;   "&gt;The Secure Way to Release an &lt;code&gt;npm&lt;/code&gt; Package in 2026&lt;/a&gt;&lt;/span&gt; — A practical guide to publishing &lt;code&gt;npm&lt;/code&gt; packages more safely in 2026, written by someone who's released several popular packages (like &lt;a href="https://nodeweekly.com/link/188598/rss" style=" color: #20824B;   "&gt;postcss&lt;/a&gt; and &lt;a href="https://nodeweekly.com/link/188599/rss" style=" color: #20824B;   "&gt;nanoid&lt;/a&gt;). As well as showing &lt;em&gt;how&lt;/em&gt; to use things like staged publishing and trusted publishing, he explains &lt;em&gt;why&lt;/em&gt; and the security benefits of doing so.&lt;/p&gt;
  &lt;p&gt;Andrey Sitnik &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/188596/rss" style=" color: #20824B;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/d4838d18.jpg" width="160" 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/188596/rss" title="dashboard.render.com" style=" color: #20824B;   "&gt;Ship Node and Bun Apps in Minutes&lt;/a&gt;&lt;/span&gt; — Link your repo and Render takes it from there, handling every build, deploy, and SSL cert. Loop in your agent with official Render &lt;code&gt;/plugins&lt;/code&gt; for Codex and Claude Code. Start free and scale from there.&lt;/p&gt;
  &lt;p&gt;Render &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/188600/rss" title="github.blog" style=" color: #20824B;   "&gt;npm to Scan Every Package For Malware at Publish Time&lt;/a&gt;&lt;/span&gt; — The npm registry is beginning to scan packages at publish time, meaning new versions can take several minutes to become installable, and &lt;em&gt;could&lt;/em&gt; be held or blocked.&lt;/p&gt;
  &lt;p&gt;GitHub &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;🔒 The &lt;a href="https://nodeweekly.com/link/188601/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Wednesday, July 29, 2026 Security Releases&lt;/a&gt; of Node are available as &lt;a href="https://nodeweekly.com/link/188602/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Node v26.5.1&lt;/a&gt;, &lt;a href="https://nodeweekly.com/link/188603/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;v24.18.1&lt;/a&gt; and &lt;a href="https://nodeweekly.com/link/188604/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;v22.23.2&lt;/a&gt;. 11 CVEs are tackled, including two HTTP/2 flaws, a Permission Model allowlist bypass, and more.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Microsoft is previewing &lt;a href="https://nodeweekly.com/link/188605/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;a way to call native Windows APIs from Node&lt;/a&gt; (and therefore Electron) &lt;em&gt;without&lt;/em&gt; native addons via a new dynamic Windows Runtime API (WinRT) projection.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/188606/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Amazon's security team has narrowed down&lt;/a&gt; several npm supply chain attacks (such as those on &lt;code&gt;debug&lt;/code&gt; and &lt;code&gt;chalk&lt;/code&gt;) to a single North Korean-linked group.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cloudflare's &lt;code&gt;wrangler&lt;/code&gt; can now &lt;a href="https://nodeweekly.com/link/188607/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;run integration tests against Workers from any Node.js test runner&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; 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/188608/rss" title="nodejs.org" style=" color: #20824B;   "&gt;Check Out Node's New API Documentation Preview&lt;/a&gt;&lt;/span&gt; — Node's official API docs have been getting redesigned (now sharing a design system with &lt;a href="https://nodeweekly.com/link/188609/rss" style=" color: #20824B;   "&gt;nodejs.org&lt;/a&gt; itself) and have a new built-in search feature. You're invited to &lt;a href="https://nodeweekly.com/link/188610/rss" style=" color: #20824B;   "&gt;try the preview here&lt;/a&gt; and report what breaks.&lt;/p&gt;
  &lt;p&gt;Guilherme Araújo (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/188611/rss" title="github.blog" style=" color: #20824B;   "&gt;How GitHub Is Disrupting Supply Chain Attacks on npm and Actions&lt;/a&gt;&lt;/span&gt; — Separate to the scanning news above, GitHub's team explains recent npm and Actions changes designed to mitigate supply chain attack techniques.&lt;/p&gt;
  &lt;p&gt;Ose and Steindler (GitHub) &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/188612/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Finding Eight High-Severity Vulnerabilities in NodeBB in Six Hours&lt;/a&gt;  &lt;cite&gt;Jorian Woltjer (Aikido)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/188613/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Running &lt;code&gt;npm&lt;/code&gt; in a Separate Container When Using Claude&lt;/a&gt;  &lt;cite&gt;Bryan Hogan&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/188614/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Integration Testing with Node and Testcontainers&lt;/a&gt;  &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;"&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/188615/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/q9tikaadsxmsj3f7vkpi.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;"&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/188615/rss" title="scriptc.dev" style=" color: #20824B;   "&gt;scriptc: Vercel's New TypeScript-to-Native Compiler&lt;/a&gt;&lt;/span&gt; — A new entry into the growing field of JS/TS native ahead-of-time compilers that makes the promise that &lt;em&gt;"what compiles behaves byte-for-byte like Node."&lt;/em&gt; Static by default, but you can opt in to a &lt;code&gt;--dynamic&lt;/code&gt; mode which embeds a JavaScript engine for runtime dynamism. &lt;a href="https://nodeweekly.com/link/188616/rss" style=" color: #20824B;   "&gt;GitHub repo&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Vercel Labs &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/188617/rss" title="www.tigerdata.com" style=" color: #20824B;   "&gt;Fast Endpoints Shouldn't Choke on Analytics&lt;/a&gt;&lt;/span&gt; — TimescaleDB extends Postgres so heavy queries stay fast at scale. One database, not two. &lt;a href="https://nodeweekly.com/link/188617/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;a href="https://nodeweekly.com/link/188618/rss" title="tslog.js.org" style=" color: #20824B;   "&gt;tslog 5: Zero-Dependency Logger for Node, Deno, Bun and Browsers&lt;/a&gt;&lt;/span&gt; — A ground-up rewrite that's now ESM-only. Pretty output by default, JSON optionally, plus middleware, file/HTTP/worker transports, secret masking, and error stacks that resolve through source maps to your &lt;code&gt;.ts&lt;/code&gt; code. &lt;a href="https://nodeweekly.com/link/188619/rss" style=" color: #20824B;   "&gt;GitHub repo&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Eugene Terehov &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/188620/rss" title="github.com" style=" color: #20824B;   "&gt;npm-check-updates 23.0: Find Newer Versions of Dependencies&lt;/a&gt;&lt;/span&gt; — Find newer versions than your &lt;code&gt;package.json&lt;/code&gt; allows. Has a &lt;code&gt;-i&lt;/code&gt; interactive mode to look at upgrades and opt in to them one by one. Supports custom cooldown periods. &lt;a href="https://nodeweekly.com/link/188621/rss" style=" color: #20824B;   "&gt;v23&lt;/a&gt; is faster, smaller, and is now a pure ESM package.&lt;/p&gt;
  &lt;p&gt;Raine Revere &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/188622/rss" title="github.com" style=" color: #20824B;   "&gt;jsdom 30.0: Pure JS Implementation of Web Standards for Node&lt;/a&gt;&lt;/span&gt; — The venerable browser-environment emulator used by countless test suites. v30.0 adds &lt;code&gt;CSS.escape()&lt;/code&gt;, &lt;code&gt;CSS.supports()&lt;/code&gt;, &lt;code&gt;background-position-x&lt;/code&gt;/&lt;code&gt;y&lt;/code&gt;, as well as some fixes.&lt;/p&gt;
  &lt;p&gt;Denicola, Insua, 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/188623/rss" title="github.com" style=" color: #20824B;   "&gt;crypto-random-string 6.0: Generate a Cryptographically Strong Random String&lt;/a&gt;&lt;/span&gt; — For example: &lt;code&gt;cryptoRandomString({length: 10})&lt;/code&gt; might return &lt;code&gt;2cf05d94db&lt;/code&gt;. v6.0 improves performance and removes &lt;code&gt;cryptoRandomStringAsync&lt;/code&gt;.&lt;/p&gt;
  &lt;p&gt;Sindre Sorhus &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/188624/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Ada v4&lt;/a&gt; – The WHATWG-compliant URL parser used by Node is now even faster.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/188625/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Wasp v0.25&lt;/a&gt; – The Rails-esque framework for building full-stack webapps with React &amp;amp; Node introduces Vite 8 and React Router 8.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/188626/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;modern-tar 0.8&lt;/a&gt; – Zero-dependency streaming &lt;code&gt;tar&lt;/code&gt; parser and writer.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📋 &lt;a href="https://nodeweekly.com/link/188627/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;tinyclip 1.0&lt;/a&gt; – Cross-platform clipboard utility library.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/188628/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Nub 0.6&lt;/a&gt; – Fast all-in-one toolkit that augments Node.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/188629/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Verdaccio 6.9&lt;/a&gt; – Self-hostable private npm registry.&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/635/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 30 Jul 2026 00:00:00 +0000</pubDate>
      <guid>https://nodeweekly.com/issues/635</guid>
    </item>
  </channel>
</rss>
