<?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>Bun now passes 80.5% of Node's test suite</title>
      <link>https://nodeweekly.com/issues/639</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;#​639 — September 3, 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/189847/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/189810/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/qgfr3ewk2uld85sd6ry6.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/189810/rss" title="trilon.io" style=" color: #20824B;   "&gt;NestJS 12 Released with ESM-First Packages, Rspack and Vitest&lt;/a&gt;&lt;/span&gt; — The progressive framework gets its biggest release in years, going ESM-first (CJS is still an option), replacing webpack with Rspack, adding &lt;a href="https://nodeweekly.com/link/189811/rss" style=" color: #20824B;   "&gt;Standard Schema&lt;/a&gt; support for easy interop with Zod, Valibot and friends, plus structured logging, &lt;a href="https://nodeweekly.com/link/189812/rss" style=" color: #20824B;   "&gt;a brand new homepage&lt;/a&gt;, and more.&lt;/p&gt;
  &lt;p&gt;Kamil Mysliwiec &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/189809/rss" style=" color: #20824B;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/e81c4a7d.png" width="120" height="120" 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/189809/rss" title="www.tigerdata.com" style=" color: #20824B;   "&gt;One Slow Query Starves Your Whole Connection Pool&lt;/a&gt;&lt;/span&gt; — A heavy analytics query holds a connection while everything else waits. TimescaleDB extends Postgres so those queries return fast, freeing the pool. Hypertables, compression, continuous aggregates. One database, not two. &lt;a href="https://nodeweekly.com/link/189809/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/189813/rss" title="bun.com" style=" color: #20824B;   "&gt;Bun 1.4 Now Passes 80% of Node's Test Suite&lt;/a&gt;&lt;/span&gt; — &lt;a href="https://nodeweekly.com/link/189814/rss" style=" color: #20824B;   "&gt;Bun 1.4&lt;/a&gt;'s headline feature is a &lt;a href="https://nodeweekly.com/link/189815/rss" style=" color: #20824B;   "&gt;big jump in Node.js compatibility&lt;/a&gt; as part of its goal of being a &lt;em&gt;"drop-in replacement"&lt;/em&gt;. This page lets you see the project's progress and where Bun is strong and weak.&lt;/p&gt;
  &lt;p&gt;Bun 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;strong&gt;IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Matteo Collina has landed &lt;a href="https://nodeweekly.com/link/189816/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;&lt;code&gt;node:ffi&lt;/code&gt; enabled by default&lt;/a&gt;, so calling into a native C library will no longer need &lt;code&gt;--experimental-ffi&lt;/code&gt;, an addon, or &lt;code&gt;node-gyp&lt;/code&gt;. It remains experimental, warns on first load, and hasn't shipped in a release yet.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Matteo has also added support for &lt;em&gt;Single Executable Applications&lt;/em&gt; to &lt;a href="https://nodeweekly.com/link/189817/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;mount their bundled assets as a read-only virtual file system&lt;/a&gt; by setting &lt;code&gt;"useVfs": true&lt;/code&gt; in the config.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔒 Express has patched &lt;a href="https://nodeweekly.com/link/189818/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;six vulnerabilities across &lt;code&gt;hbs&lt;/code&gt;, &lt;code&gt;multer&lt;/code&gt; and &lt;code&gt;morgan&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Node's issue tracker reaches issue &lt;code&gt;2**16&lt;/code&gt; with &lt;a href="https://nodeweekly.com/link/189819/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;a proposal to remove dual ESM/CJS code samples in the API docs&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/189820/rss" title="www.checklyhq.com" style=" color: #20824B;   "&gt;Rewriting a Node.js Service in Go with AI Agents&lt;/a&gt;&lt;/span&gt; — A very 2026 tale of an overnight porting run, with a focus on doing agentic engineering well. Good takeaways on building a test harness &lt;em&gt;first&lt;/em&gt; and the rollout experience.&lt;/p&gt;
  &lt;p&gt;Edvinas Janusevicius (Checkly) &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/189823/rss" title="blog.sentry.io" style=" color: #20824B;   "&gt;Your Trace Shows the Slow Span. Not the Exception&lt;/a&gt;&lt;/span&gt; — OTLP carries traces and logs, not errors. Sentry's OtlpIntegration connects both in one trace waterfall. &lt;a href="https://nodeweekly.com/link/189823/rss" style=" color: #20824B;   "&gt;Learn more about Sentry’s OTLP&lt;/a&gt;.&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;a href="https://nodeweekly.com/link/189824/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Detecting SQLite Full Table Scans in Node.js&lt;/a&gt; – Did you know SQLite counts the rows scanned by statements and you can read it after the query runs? &lt;cite&gt;CodeSilva&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/189825/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Workers vs Processes in Node&lt;/a&gt; &lt;cite&gt;Ishtmeet Singh&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/189826/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/deovjytt53exk0rla8fs.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/189826/rss" title="drydock.org" style=" color: #20824B;   "&gt;Drydock: Diff Your &lt;code&gt;npm&lt;/code&gt; Tarballs Before You Publish&lt;/a&gt;&lt;/span&gt; — From a Preact core team member comes a tool to diff built npm tarballs against the last published version, flagging install scripts, network access and new binaries. It can then gate your &lt;em&gt;Actions&lt;/em&gt; publish job or watch npm's new staged publishing flow.&lt;/p&gt;
  &lt;p&gt;Jovi De Croock &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;💡 You can get a quick taste without installing anything: &lt;a href="https://nodeweekly.com/link/189827/rss" style=" color: #20824B; font-weight: 600;"&gt;this web-based diff viewer&lt;/a&gt; can compare two versions of an npm package file by file.&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/189828/rss" title="srvx.h3.dev" style=" color: #20824B;   "&gt;srvx 1.0: One &lt;code&gt;fetch&lt;/code&gt; Handler for Node, Deno and Bun&lt;/a&gt;&lt;/span&gt; — You can export a handler that takes a web-standard &lt;code&gt;Request&lt;/code&gt; and returns a &lt;code&gt;Response&lt;/code&gt;, then run it unchanged on Node, Deno or Bun. Includes a CLI with watcher and static serving, and &lt;code&gt;srvx fetch&lt;/code&gt; can hit your handler without starting a server.&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;a href="https://nodeweekly.com/link/189829/rss" title="docs.nvm-windows.com" style=" color: #20824B;   "&gt;NVM for Windows 2.0: Node Version Manager for Windows&lt;/a&gt;&lt;/span&gt; — A modern Node workflow for Windows users with version pinning, native integrations, auto-install of missing versions, and more. v2 is a rewrite that introduces a lighter shim-based mechanism and &lt;em&gt;no longer needs admin privileges&lt;/em&gt;. &lt;a href="https://nodeweekly.com/link/189830/rss" style=" color: #20824B;   "&gt;GitHub repo&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Author Software Inc &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/189831/rss" title="github.com" style=" color: #20824B;   "&gt;Got 16.0: Built-In HTTP/2 and QUERY Method Support&lt;/a&gt;&lt;/span&gt; — The popular Node HTTP client now has a built-in HTTP/2 client, its own DNS cache, fewer dependencies, and support for the newly standardized &lt;a href="https://nodeweekly.com/link/189832/rss" style=" color: #20824B;   "&gt;&lt;code&gt;QUERY&lt;/code&gt; HTTP method&lt;/a&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;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/189833/rss" title="github.com" style=" color: #20824B;   "&gt;SimpleWebAuthn 14.0: Now with Post-Quantum Passkeys&lt;/a&gt;&lt;/span&gt; — The passkeys library now verifies post-quantum ML-DSA passkeys and, on Node 24.7 and up, prefers ML-DSA-44 at registration by default.&lt;/p&gt;
  &lt;p&gt;Matthew Miller &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/189834/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Restify 12.0&lt;/a&gt; – The REST API framework returns after a two and a half year gap with Node 26 support and &lt;code&gt;url.parse()&lt;/code&gt; replaced with WHATWG URL. Existing users have &lt;a href="https://nodeweekly.com/link/189835/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;a few breaking changes&lt;/a&gt; to note.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/189836/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Zod 4.5&lt;/a&gt; – A big performance release for the popular TypeScript-first schema validation library.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/189837/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;np 12.1&lt;/a&gt; – Sindre Sorhus's improved &lt;code&gt;npm publish&lt;/code&gt; workflow gets some speedups.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/189838/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;express-rate-limit 8.7&lt;/a&gt; – Rate-limiting middleware for Express.&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/189839/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/189839/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Try it free&lt;/a&gt;.&lt;/p&gt;
 
&lt;p&gt;📉 Headout cut chargebacks 90% with Fingerprint. &lt;a href="https://nodeweekly.com/link/189840/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Stop payment fraud&lt;/a&gt; with 100+ signals such as Browser Bot and VPN detection.&lt;/p&gt;
 
&lt;p&gt;🎟️ Join us at &lt;a href="https://nodeweekly.com/link/189848/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Supabase&lt;/a&gt; Select on Oct 2. Learn from the industry’s best builders and meet people building dev tools. &lt;a href="https://nodeweekly.com/link/189848/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;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;/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/189842/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/fcozfyfgnkfzsddwssvn.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/189842/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;htmx 4.0 has landed&lt;/a&gt;, the first major release in two years, with &lt;a href="https://nodeweekly.com/link/189843/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;lots of changes&lt;/a&gt;. It remains a neat way to add interactivity to server-rendered pages without reaching for a frontend framework.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🤔 Upon finding eight versions of &lt;code&gt;glob&lt;/code&gt; across five major version lines in his employer's monorepo, James Healy is &lt;a href="https://nodeweekly.com/link/189844/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;imploring library maintainers&lt;/a&gt; to bump their major versions as rarely as they can.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A developer shares the techniques behind squeezing an implementation of Minesweeper &lt;a href="https://nodeweekly.com/link/189845/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;into just 247 bytes of JavaScript&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🤚 The &lt;a href="https://nodeweekly.com/link/189846/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;2026 Node.js user survey&lt;/a&gt; is still open. Your responses guide the core team and its priorities.&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/639/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 3 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://nodeweekly.com/issues/639</guid>
    </item>
    <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>
  </channel>
</rss>
