<?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>37 CLI best practices for Node devs</title>
      <link>https://nodeweekly.com/issues/631</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;#​631 — July 2, 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/187378/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/187345/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/loqd69ivy01lxicgjmzb.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/187345/rss" title="github.com" style=" color: #20824B;   "&gt;So You Want to Land Your First Node.js Core Contribution?&lt;/a&gt;&lt;/span&gt; — Joyee Cheung has put together a new, official guide for anyone considering making their &lt;em&gt;first&lt;/em&gt; contribution to the Node project, including where to look for issues to work on and how to improve the chances of your work making the cut.&lt;/p&gt;
  &lt;p&gt;Joyee Cheung &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/187346/rss" style=" color: #20824B;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/c0d67c99.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/187346/rss" title="agentfield.ai" style=" color: #20824B;   "&gt;Your Autonomous Engineering Team, in TypeScript&lt;/a&gt;&lt;/span&gt; — One call spins up an orchestrated fleet — planner, architect, coders, QA, reviewers — that plans, builds, tests and ships production-grade PRs. TypeScript SDK, agents as typed APIs, open- and closed-source models.&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/187347/rss" title="github.com" style=" color: #20824B;   "&gt;37 Node CLI App Best Practices&lt;/a&gt;&lt;/span&gt; — A long-standing, but now modernized, set of guidelines for building &lt;em&gt;“successful, empathic and user-friendly”&lt;/em&gt; CLI tools, plus an appendix &lt;a href="https://nodeweekly.com/link/187348/rss" style=" color: #20824B;   "&gt;rounding up the most popular CLI framework options.&lt;/a&gt; Now also includes &lt;a href="https://nodeweekly.com/link/187349/rss" style=" color: #20824B;   "&gt;a SKILL.md file&lt;/a&gt; you can point agents to.&lt;/p&gt;
  &lt;p&gt;Liran Tal &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/187351/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Nub&lt;/a&gt;, a toolkit that &lt;em&gt;adds&lt;/em&gt; useful features to Node (rather than replacing it), is now a single self-contained binary and has &lt;a href="https://nodeweekly.com/link/187352/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;added a web-standard &lt;code&gt;Worker&lt;/code&gt; mechanism&lt;/a&gt; to Node.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔒 &lt;a href="https://nodeweekly.com/link/187353/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;npm now locks 'high impact accounts'&lt;/a&gt; (those maintaining the most popular packages) into a 72-hour read-only mode when they change their email or use a 2FA recovery code.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/187354/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;npm 11.18.0&lt;/a&gt; promotes the &lt;em&gt;linked&lt;/em&gt; install strategy to stable, where packages are installed in &lt;code&gt;node_modules/.store&lt;/code&gt; and linked in place, so code can only reach dependencies it actually declared. &lt;a href="https://nodeweekly.com/link/187355/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;More info here&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/187356/rss" title="www.vlt.io" style=" color: #20824B;   "&gt;Why Drizzle ORM Couldn't Publish New Releases on npm for a Month&lt;/a&gt;&lt;/span&gt; — As well as explaining why &lt;a href="https://nodeweekly.com/link/187357/rss" style=" color: #20824B;   "&gt;the popular ORM&lt;/a&gt; ran into the problem, Evert shares tips to see if you run a similar risk, and how to mitigate it.&lt;/p&gt;
  &lt;p&gt;Evert Pot &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/187358/rss" title="code.visualstudio.com" style=" color: #20824B;   "&gt;Iterating Faster on VS Code with TypeScript 7&lt;/a&gt;&lt;/span&gt; — The tale of how the VS Code team adopted the Go-based TypeScript 7 compiler and got a 7x reduction in type checking time.&lt;/p&gt;
  &lt;p&gt;The VS Code Team (Microsoft) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/187359/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Roll Your Own File-Based Router in Under 50 Lines of Code&lt;/a&gt; – One for users of &lt;a href="https://nodeweekly.com/link/187360/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Wasp&lt;/a&gt;, the Node.js + React + Prisma full-stack framework. &lt;cite&gt;Carlos Precioso (Wasp)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/187361/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Finding Memory Leaks with Heap Snapshot Analysis in N|Solid&lt;/a&gt; – Using the N|Solid extension to capture a heap snapshot to trace a memory leak in VS Code. &lt;cite&gt;Estefany Aguilar (NodeSource)&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/187362/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/kzedvu35x9jp0gdecxg9.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/187362/rss" title="github.com" style=" color: #20824B;   "&gt;Node-GTK 4.0: GTK Bindings for Node&lt;/a&gt;&lt;/span&gt; — Bindings to the popular &lt;a href="https://nodeweekly.com/link/187363/rss" style=" color: #20824B;   "&gt;GTK&lt;/a&gt; desktop widget toolkit for building Linux, macOS and Windows apps. Now supports Node 26 and includes an &lt;code&gt;npx node-gtk create app-name&lt;/code&gt; command to spin up a project. Worked well on macOS once I had the dependencies in place!&lt;/p&gt;
  &lt;p&gt;Rom Grk 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/187364/rss" title="" style=" color: #20824B;   "&gt;Schedule Node.js Scripts Across Your Server Fleet with xyOps&lt;/a&gt;&lt;/span&gt; — Run unlimited Node, Shell, HTTP, and Docker jobs with live logs, alerts, snapshots, and visual workflows. Self-hosted.&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;span&gt;🤖&lt;/span&gt; &lt;a href="https://nodeweekly.com/link/187365/rss" title="vercel.com" style=" color: #20824B;   "&gt;Vercel AI SDK 7: An SDK for Working with AI Model Providers&lt;/a&gt;&lt;/span&gt; — Provider-agnostic library for building AI apps (no Vercel services needed). v7 focuses on &lt;em&gt;agents&lt;/em&gt;, but adds WebSocket sessions for real-time transcription/voice agents, and video generation support for several providers.&lt;/p&gt;
  &lt;p&gt;Martynus, Grammel, Arntz, 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/187366/rss" title="www.electronjs.org" style=" color: #20824B;   "&gt;Electron 43: Faster Startup and V8 15&lt;/a&gt;&lt;/span&gt; — Updates to Chromium 150, Node 24.17, and V8 15, with faster startup via a Node boot snapshot and bytecode-cached preloads. Adds rounded corners on Linux, matching Windows and macOS. v43 is also the final line to ship 32-bit binaries.&lt;/p&gt;
  &lt;p&gt;John Kleinschmidt &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/187367/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Deno 2.9&lt;/a&gt; – The alternative runtime rolls out its new desktop app generator, improves support for npm/pnpm/yarn/Bun lockfiles, improves its test runner substantially, and more.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/187368/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Git 2.55&lt;/a&gt; – Adds &lt;code&gt;git history fixup&lt;/code&gt; for 'fixing up' earlier commits, faster &lt;code&gt;git status&lt;/code&gt; on Linux, and more.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/187369/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;pg-promise 12.7&lt;/a&gt; – Node 26 is now officially supported by the popular Postgres client library.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/187370/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Middy 7.7&lt;/a&gt; – Node.js middleware engine for AWS Lambda. (&lt;a href="https://nodeweekly.com/link/187371/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Release notes&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/187372/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Fastify 5.9&lt;/a&gt; – Lots of bug fixes, and introduces &lt;a href="https://nodeweekly.com/link/187373/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;&lt;code&gt;request.mediaType&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/187374/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Knex 3.3&lt;/a&gt; – Batteries-included, multi-dialect SQL query builder.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/187375/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;JS YAML 5.2&lt;/a&gt; – Fast YAML 1.2 parser and writer library. (&lt;a href="https://nodeweekly.com/link/187376/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Demo.&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;"&gt;
&lt;table border=0 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/187377/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Crystallize is hiring a remote SRE&lt;/a&gt;: Node/TS, GraphQL, AWS, MongoDB, Cloudflare Workers.&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;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://nodeweekly.com/open/631/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 2 Jul 2026 00:00:00 +0000</pubDate>
      <guid>https://nodeweekly.com/issues/631</guid>
    </item>
    <item>
      <title>Node.js 26.4 lands package maps</title>
      <link>https://nodeweekly.com/issues/630</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;#​630 — June 25, 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/187075/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/187035/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/z3a4qdwxuxpfyblgqzw4.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/187035/rss" title="nodejs.org" style=" color: #20824B;   "&gt;Node.js 26.4 Adds Package Maps&lt;/a&gt;&lt;/span&gt; — A minor release whose headline feature is the (experimental) implementation of &lt;a href="https://nodeweekly.com/link/187037/rss" style=" color: #20824B;   "&gt;package maps&lt;/a&gt; (which let Node resolve packages from a static JSON file rather than walking &lt;code&gt;node_modules&lt;/code&gt;). Matteo Collina’s &lt;a href="https://nodeweekly.com/link/187038/rss" style=" color: #20824B;   "&gt;node:vfs subsystem&lt;/a&gt; also &lt;em&gt;begins&lt;/em&gt; to make an appearance.&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/187076/rss" style=" color: #20824B; font-weight: 600;"&gt;Node v24.18.0 (LTS)&lt;/a&gt; and &lt;a href="https://nodeweekly.com/link/187077/rss" style=" color: #20824B; font-weight: 600;"&gt;v22.23.1 (LTS)&lt;/a&gt; have also been released.&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/187034/rss" style=" color: #20824B;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/2c2408da.png" width="140" height="140" 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/187034/rss" title="www.tigerdata.com" style=" color: #20824B;   "&gt;That Analytics Route is Blocking Your Event Loop&lt;/a&gt;&lt;/span&gt; — Crunching big result sets in Node ties up the event loop and stalls other requests. TimescaleDB extends Postgres so the database aggregates instead. Hypertables, 95% compression, continuous aggregates. No second database. &lt;a href="https://nodeweekly.com/link/187034/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/187039/rss" title="nodesource.com" style=" color: #20824B;   "&gt;Blocking Install Scripts is Not a Silver Bullet&lt;/a&gt;&lt;/span&gt; — &lt;a href="https://nodeweekly.com/link/187040/rss" style=" color: #20824B;   "&gt;npm v12&lt;/a&gt; won't run install scripts by default, but Ulises argues that only removes one attack trigger, not a capability, since a compromised dependency’s code still runs on import! He shows why, even then, Node's &lt;a href="https://nodeweekly.com/link/187041/rss" style=" color: #20824B;   "&gt;permissions model&lt;/a&gt; and sandboxing are the layers that actually limit what that code can do.&lt;/p&gt;
  &lt;p&gt;Ulises Gascon &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/187042/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;first preview release of &lt;code&gt;npm&lt;/code&gt; 12 is here&lt;/a&gt; if you want to get testing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/187043/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Deno&lt;/a&gt; has begun to show off a &lt;a href="https://nodeweekly.com/link/187044/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;new feature to create cross-platform desktop apps&lt;/a&gt;. Think Electron-style apps, but on top of Deno with cross-compilation, framework auto-detection, and a choice between bundling a Chromium runtime or using the system's WebView.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vercel has opened &lt;a href="https://nodeweekly.com/link/187045/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;a public beta of WebSockets support&lt;/a&gt; in Vercel Functions. You can write normal Node.js code using &lt;code&gt;ws&lt;/code&gt; with no extra setup.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;code&gt;pnpm&lt;/code&gt; project is &lt;a href="https://nodeweekly.com/link/187046/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;working on &lt;code&gt;pnpr&lt;/code&gt;&lt;/a&gt;, an experimental pnpm-compatible npm registry server, written in Rust.&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/187047/rss" title="www.jasnell.me" style=" color: #20824B;   "&gt;What If npm Ran on AT Protocol?&lt;/a&gt;&lt;/span&gt; — James, a long-standing Node core contributor, ponders what a package system built atop the protocol Bluesky uses could look like: &lt;em&gt;“It’s just an idea I couldn’t get out of my head until I wrote it down.”&lt;/em&gt;&lt;/p&gt;
  &lt;p&gt;James M Snell &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/187048/rss" title="evilmartians.com" style=" color: #20824B;   "&gt;Benchmarking 5 WebSocket Servers for Node.js&lt;/a&gt;&lt;/span&gt; — A banned IP, a lying load generator, and a 20× latency illusion turned a routine benchmark run into quite the detective story.&lt;/p&gt;
  &lt;p&gt;Irina Nazarova &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/187049/rss" title="www.appsignal.com" style=" color: #20824B;   "&gt;Your Node App Has an N+1 Problem. AppSignal Shows You Where&lt;/a&gt;&lt;/span&gt; — Auto-detects N+1 queries in Prisma, Express, and Koa. One install, minutes to first trace. &lt;a href="https://nodeweekly.com/link/187049/rss" style=" color: #20824B;   "&gt;Free 30-day trial, no card&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;AppSignal &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/187050/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;JavaScript Still Can't Ship a 'Full-Stack Module'&lt;/a&gt; – Thoughts on modules which provide frontend and backend code ready to go, as you might see in ecosystems like Rails and Laravel. &lt;cite&gt;Mihovil Ilakovac&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📊 &lt;a href="https://nodeweekly.com/link/187051/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;The Performance of WebAssembly Runtimes in 2026&lt;/a&gt; – Mostly focused on dedicated options, but also including Node/V8. &lt;cite&gt;Frank Denis&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/187052/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/b1kuykh8i2jmbor2kxdh.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;span&gt;🤖&lt;/span&gt; &lt;a href="https://nodeweekly.com/link/187052/rss" title="vercel.com" style=" color: #20824B;   "&gt;Eve: A Next.js-Style Framework for Building Agents&lt;/a&gt;&lt;/span&gt; — A new framework from Vercel that provides Next.js-esque structure for building AI-powered agents using TypeScript and Markdown. It's quite Vercel-flavored by default, but I found you can run it entirely independently of Vercel with a few settings tweaks and your own keys. &lt;a href="https://nodeweekly.com/link/187053/rss" style=" color: #20824B;   "&gt;Project homepage.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Vercel &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/187054/rss" title="devblogs.microsoft.com" style=" color: #20824B;   "&gt;TypeScript 7.0 Release Candidate&lt;/a&gt;&lt;/span&gt; — A step closer for the Go-powered TypeScript compiler that promises ~10x faster build performance. A reminder that &lt;code&gt;moduleResolution: node&lt;/code&gt; / &lt;code&gt;node10&lt;/code&gt; are no longer supported and &lt;code&gt;@types&lt;/code&gt; packages you need have to be listed explicitly.&lt;/p&gt;
  &lt;p&gt;Daniel Rosenwasser (Microsoft) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;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/187055/rss" title="onury.io" style=" color: #20824B;   "&gt;AccessControl 3.0: Role and Attribute-based Access Control&lt;/a&gt;&lt;/span&gt; — A role and attribute-based (RBAC/ABAC) access control library that, &lt;a href="https://nodeweekly.com/link/187056/rss" style=" color: #20824B;   "&gt;as of v3&lt;/a&gt;, now has a real policy engine available to apply conditions to grants, enforced ownership, mandatory restriction gates, audit hooks, and more. &lt;a href="https://nodeweekly.com/link/187057/rss" style=" color: #20824B;   "&gt;GitHub repo&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Onur Yıldırım &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/187058/rss" title="github.com" style=" color: #20824B;   "&gt;Camaro 6.5: A High Performance XML to JSON Converter&lt;/a&gt;&lt;/span&gt; — Uses bindings to &lt;a href="https://nodeweekly.com/link/187059/rss" style=" color: #20824B;   "&gt;pugixml&lt;/a&gt;, a fast C++ XML parser.&lt;/p&gt;
  &lt;p&gt;Tuan Anh Tran &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/187060/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Tedious 20.0&lt;/a&gt; – TDS module for connecting to SQL Server. A related release is the SQL Server client library &lt;a href="https://nodeweekly.com/link/187061/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;node-mssql 12.6&lt;/a&gt; which uses Tedious (or &lt;a href="https://nodeweekly.com/link/187062/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;msnodesqlv8&lt;/a&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/187063/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Chardet 2.2&lt;/a&gt; – Character encoding detection library that uses statistical methods to detect &lt;a href="https://nodeweekly.com/link/187064/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;around 30 different encodings&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/187065/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;cookie 2.0&lt;/a&gt; – HTTP cookie parser and serializer library. Now faster and ESM only.&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;🧐 Where to host? Judoscale’s &lt;a href="https://nodeweekly.com/link/187066/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;cost comparison calculator&lt;/a&gt; puts the PaaS alternatives head-to-head.&lt;/p&gt;
 
&lt;p&gt;⚙️ Run AI agents like microservices — every agent an auto-generated API: schemas, versioning, no glue code. 100+ recipes, TypeScript SDK. &lt;a href="https://nodeweekly.com/link/187067/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;→ Star on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;📢  Elsewhere in the ecosystem&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;A roundup of some other interesting stories in the broader landscape:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Cloudflare has added the ability to &lt;a href="https://nodeweekly.com/link/187068/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;create and deploy Workers on 'temporary accounts'&lt;/a&gt;. Ostensibly 'for AI agents', but you can use them yourself too, and get a Worker (which have &lt;a href="https://nodeweekly.com/link/187070/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;increased Node.js compatibility&lt;/a&gt; nowadays) running for 60 minutes with no strings attached.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The Bun team has proposed &lt;a href="https://nodeweekly.com/link/187071/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;adding shared-memory threads to JavaScriptCore&lt;/a&gt; (a more traditional threading approach versus &lt;a href="https://nodeweekly.com/link/187072/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;worker threads&lt;/a&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔒 GitHub has &lt;a href="https://nodeweekly.com/link/187073/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;released &lt;code&gt;actions/checkout&lt;/code&gt; v7&lt;/a&gt; that &lt;em&gt;"refuses common pwn request patterns by default"&lt;/em&gt; including refusing to fetch fork pull request code in &lt;code&gt;pull_request_target&lt;/code&gt; and &lt;code&gt;workflow_run&lt;/code&gt; workflows.&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/630/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 25 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://nodeweekly.com/issues/630</guid>
    </item>
    <item>
      <title>Extending Node instead of replacing it</title>
      <link>https://nodeweekly.com/issues/629</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;#​629 — June 18, 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/186722/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/186724/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/xi9civhxd1figdg9lyae.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/186724/rss" title="nubjs.com" style=" color: #20824B;   "&gt;Nub: An All-in-One Toolkit That &lt;em&gt;Augments&lt;/em&gt; Node&lt;/a&gt;&lt;/span&gt; — While Bun and Deno try to replace Node, this project from Zod’s creator (and a former Bun employee) &lt;em&gt;extends&lt;/em&gt; your existing Node and package manager with  nice-to-haves, like fuller TypeScript support (beyond what type stripping offers), faster and more secure package installation, and fuller &lt;code&gt;.env&lt;/code&gt; handling.&lt;/p&gt;
  &lt;p&gt;Colin McDonnell 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;a href="https://nodeweekly.com/link/186723/rss" style=" color: #20824B;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/eea49560.jpg" width="110" height="110" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/186723/rss" title="frontendmasters.com" style=" color: #20824B;   "&gt;Free Claude Code Course from Anthropic + Master.Dev&lt;/a&gt;&lt;/span&gt; — Coding is changing fast, and the engineers who thrive will be the ones who direct AI instead of guessing at it. Lydia Hallie from Anthropic teaches exactly that in our Claude Code course, &lt;a href="https://nodeweekly.com/link/186723/rss" style=" color: #20824B;   "&gt;now free for everyone&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Master.dev &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/186725/rss" title="nodejs.org" style=" color: #20824B;   "&gt;Node.js 26.3.1, 24.17.0, and 22.23.0 Released&lt;/a&gt;&lt;/span&gt; — The latest &lt;a href="https://nodeweekly.com/link/186726/rss" style=" color: #20824B;   "&gt;round of security releases&lt;/a&gt; is here, with &lt;a href="https://nodeweekly.com/link/186725/rss" style=" color: #20824B;   "&gt;26.3.1 (Current)&lt;/a&gt;, &lt;a href="https://nodeweekly.com/link/186727/rss" style=" color: #20824B;   "&gt;24.17.0 (LTS)&lt;/a&gt;, and &lt;a href="https://nodeweekly.com/link/186728/rss" style=" color: #20824B;   "&gt;22.23.0 (LTS)&lt;/a&gt; fixing &lt;em&gt;eleven&lt;/em&gt; vulnerabilities. Two are of 'high' severity: one around &lt;a href="https://nodeweekly.com/link/186729/rss" style=" color: #20824B;   "&gt;normalizing hostnames for server identity checks&lt;/a&gt; in &lt;code&gt;tls&lt;/code&gt;, and the other in &lt;a href="https://nodeweekly.com/link/186730/rss" style=" color: #20824B;   "&gt;WebCrypto&lt;/a&gt;.&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;🔒 The releases above also include &lt;a href="https://nodeweekly.com/link/186763/rss" style=" color: #20824B; font-weight: 600;"&gt;Undici 8.5.0&lt;/a&gt; which has addressed some security advisories of its own.&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;As &lt;a href="https://nodeweekly.com/link/186731/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;npm prepares to disable install scripts&lt;/a&gt; by default, Andrew Nesbitt looks at &lt;a href="https://nodeweekly.com/link/186732/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;how other tools and ecosystems handle install-script allow-listing&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/186733/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Iroh 1.0&lt;/a&gt; is a peer-to-peer encrypted networking stack that punches through NAT and firewalls. It's built in Rust but has &lt;a href="https://nodeweekly.com/link/186734/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;official Node.js bindings&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/186735/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Babel 8.0 has been released&lt;/a&gt;: no new features, but with a focus on modernization. It's ESM-only, ships TypeScript types, and no longer compiles to ES5 and CommonJS by default.&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/186736/rss" title="neon.com" style=" color: #20824B;   "&gt;Shipping &lt;code&gt;psql&lt;/code&gt; Without &lt;code&gt;psql&lt;/code&gt;: A Pure-TypeScript Postgres Client&lt;/a&gt;&lt;/span&gt; — Postgres platform &lt;em&gt;Neon&lt;/em&gt; wanted the experience of Postgres’ &lt;code&gt;psql&lt;/code&gt; client in their own Node-powered CLI, without the binary dependency. Here’s how they did it using AI, a strong conformance harness, and a security review.&lt;/p&gt;
  &lt;p&gt;Vadim Kharitonov (Neon) &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/186737/rss" title="roman.pt" style=" color: #20824B;   "&gt;A Backdoor in a LinkedIn Job Offer&lt;/a&gt;&lt;/span&gt; — A hacker, posing as a recruiter on LinkedIn, asked the author to diagnose an issue in a Node project, but the dependencies had a backdoor included. Both the recruiter and the git repo involved also used real identities of people unrelated to the scam.&lt;/p&gt;
  &lt;p&gt;Roman Imankulov &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/186738/rss" title="www.youtube.com" style=" color: #20824B;   "&gt;How LinkedIn Unlocked 18x Code Review Throughput&lt;/a&gt;&lt;/span&gt; — See how LinkedIn used Orkes and multi-agent workflows to scale code reviews 18x.&lt;/p&gt;
  &lt;p&gt;Orkes &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/186739/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;What are Git Worktrees, And Why Should I Use Them?&lt;/a&gt; – A decade-old &lt;code&gt;git&lt;/code&gt; feature that's seen a boost in the AI agent era. &lt;cite&gt;Cassidy Williams (GitHub)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/186740/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Setting Node and &lt;code&gt;pnpm&lt;/code&gt; Versions in Cloudflare Workers Programmatically&lt;/a&gt; – &lt;em&gt;“I’ve wasted a couple of hours so you don’t have to.”&lt;/em&gt; &lt;cite&gt;Sen Hongo&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/186741/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Wasp Now Lets You Write Your Full-Stack Logic as a Spec in TypeScript&lt;/a&gt; – Say goodbye to the React + Node.js + Prisma full-stack framework’s custom &lt;code&gt;.wasp&lt;/code&gt; DSL. &lt;cite&gt;Martin Sosic (Wasp)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/186742/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Why pnpm No Longer Expands Environment Variables in &lt;code&gt;.npmrc&lt;/code&gt;&lt;/a&gt;  &lt;cite&gt;Zoltan Kochan&lt;/cite&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

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

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;span&gt;✉️&lt;/span&gt; &lt;a href="https://nodeweekly.com/link/186743/rss" title="nodemailer.com" style=" color: #20824B;   "&gt;Nodemailer 9.0: Easily Send Emails from Node.js&lt;/a&gt;&lt;/span&gt; — A long-standing, popular way to send emails over SMTP, through SES, or Sendmail. v9.0 now validates TLS connections by default when fetching remote content.&lt;/p&gt;
  &lt;p&gt;Andris Reinman &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/186744/rss" title="github.com" style=" color: #20824B;   "&gt;zod-compiler: Compile Zod Schemas Into Zero-Overhead Validators&lt;/a&gt;&lt;/span&gt; — A build-time compiler that plugs into Vite, webpack, et al. and rewrites existing schemas into optimized, tree-shakeable validators, with the full Zod API preserved.&lt;/p&gt;
  &lt;p&gt;Gajus Kuizinas &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/186745/rss" title="github.com" style=" color: #20824B;   "&gt;Node Telegram Bot API 1.0/1.1&lt;/a&gt;&lt;/span&gt; — Interact with the official &lt;a href="https://nodeweekly.com/link/186746/rss" style=" color: #20824B;   "&gt;Telegram Bot API&lt;/a&gt; from Node. Now modernized, rewritten in TypeScript, and ESM-only, with Telegram Bot API 10.1 support.&lt;/p&gt;
  &lt;p&gt;Yago &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/186747/rss" title="github.com" style=" color: #20824B;   "&gt;eslint-plugin-unicorn 67.0: 200+ Powerful Linting Rules&lt;/a&gt;&lt;/span&gt; — Sindre’s set of rules that will seriously challenge (and improve) your code, whether it's &lt;a href="https://nodeweekly.com/link/186748/rss" style=" color: #20824B;   "&gt;comments&lt;/a&gt;, &lt;a href="https://nodeweekly.com/link/186749/rss" style=" color: #20824B;   "&gt;the depth of nested calls&lt;/a&gt;, &lt;a href="https://nodeweekly.com/link/186750/rss" style=" color: #20824B;   "&gt;preferring &lt;code&gt;Temporal&lt;/code&gt; over &lt;code&gt;Date&lt;/code&gt;&lt;/a&gt;, and more.&lt;/p&gt;
  &lt;p&gt;Sindre Sorhus 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;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 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/186751/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;&lt;code&gt;clerk deploy&lt;/code&gt; walks your app to production&lt;/a&gt;: instance clone, DNS setup, OAuth credentials, SSL check. Guided, resumable, and &lt;a href="https://nodeweekly.com/link/186751/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;available now&lt;/a&gt;.&lt;/p&gt;
 
&lt;p&gt;AI writes a growing share of Node services, but your reviewer hasn't caught up to its mistakes. &lt;a href="https://nodeweekly.com/link/186752/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;pr-af is AgentField's multi-agent low cost reviewer&lt;/a&gt;: compiled per PR, runs on open/closed models. &lt;a href="https://nodeweekly.com/link/186752/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;→ Star &amp;amp; deploy&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: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/186753/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;XO 3.0&lt;/a&gt; – Opinionated ESLint wrapper that enforces strict and readable code with zero configuration. Includes &lt;a href="https://nodeweekly.com/link/186747/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;eslint-plugin-unicorn&lt;/a&gt; &lt;em&gt;(above)&lt;/em&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/186754/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Playwright 1.61&lt;/a&gt; – You can now register and test passkeys, as well as read/write to &lt;code&gt;localStorage&lt;/code&gt; and &lt;code&gt;sessionStorage&lt;/code&gt; via a new &lt;a href="https://nodeweekly.com/link/186755/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;WebStorage&lt;/a&gt; API.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/186756/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;ESLint v10.5.0&lt;/a&gt; – Five core rules now highlight smaller ranges of code to avoid shadowing other problems in editors.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/186757/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Axios 1.18.0&lt;/a&gt; – Security fixes and hardening for the promise-based HTTP client.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/186758/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;node-gyp 13.0&lt;/a&gt; – Cross-platform tool for compiling native addon modules.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/186759/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;graphql-js 17.0&lt;/a&gt; – Official reference implementation of GraphQL for JavaScript.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/186760/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Faker 10.5&lt;/a&gt; – Generate realistic but fake data for testing and development.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/186761/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Nx 23.0&lt;/a&gt; – Build system for TypeScript and polyglot monorepos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/186762/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;BSON Parser 7.3&lt;/a&gt; – BSON parser 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/629/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://nodeweekly.com/issues/629</guid>
    </item>
    <item>
      <title>npm install is (finally) getting safer</title>
      <link>https://nodeweekly.com/issues/628</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;#​628 — June 11, 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/186404/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/186406/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/pluqg2zqfojqzsc4l3vl.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/186406/rss" title="github.blog" style=" color: #20824B;   "&gt;npm v12 to Stop Running Install Scripts by Default&lt;/a&gt;&lt;/span&gt; — After a year of supply chain attacks, npm v12 will no longer execute &lt;code&gt;preinstall&lt;/code&gt;, &lt;code&gt;install&lt;/code&gt;, or &lt;code&gt;postinstall&lt;/code&gt; scripts, unless you allow them with a new &lt;code&gt;npm approve-scripts&lt;/code&gt; workflow. &lt;strong&gt;You can prepare today&lt;/strong&gt; by upgrading to &lt;a href="https://nodeweekly.com/link/186407/rss" style=" color: #20824B;   "&gt;npm 11.16.0&lt;/a&gt; which prints warnings about anything v12 &lt;em&gt;would&lt;/em&gt; block.&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;code&gt;npm install&lt;/code&gt; will no longer resolve git or remote URLs by default either – these can be switched on using &lt;code&gt;--allow-git&lt;/code&gt; and &lt;code&gt;--allow-remote&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/186405/rss" style=" color: #20824B;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/24157603.png" width="142" 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/186405/rss" title="posetteconf.com" style=" color: #20824B;   "&gt;Come for Great PostgreSQL Talks – Virtual and Free&lt;/a&gt;&lt;/span&gt; — Attend talks about PostgreSQL backed app development at POSETTE: An Event for Postgres 2026 (16-18 June). Join live and chat directly with PostgreSQL speakers, other developers and users. There is also swag waiting for you. &lt;a href="https://nodeweekly.com/link/186405/rss" style=" color: #20824B;   "&gt;Register for updates&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Microsoft | AMD &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/186408/rss" title="nodejsdesignpatterns.com" style=" color: #20824B;   "&gt;Node's New Release Schedule and Version Numbers Explained&lt;/a&gt;&lt;/span&gt; — Node’s moving to a one major release per year cadence as of Node 27 and adding a new ‘alpha’ channel for testing and experimentation. Luciano goes deep into how it’s happening, when, and why.&lt;/p&gt;
  &lt;p&gt;Luciano Mammino &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;🔒 &lt;a href="https://nodeweekly.com/link/186409/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;New versions of Node.js v26.x, 24.x, and 22.x&lt;/a&gt; will be released on, or shortly after, Wednesday, June 17 to address security issues – the highest severity of which is 'HIGH'.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔒 As the &lt;a href="https://nodeweekly.com/link/186410/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;npm worms/supply chain attacks continue&lt;/a&gt;, I was intrigued to see &lt;a href="https://nodeweekly.com/link/186411/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;this vulnerability report from 2016&lt;/a&gt; which predicted our current woes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;a href="https://nodeweekly.com/link/186412/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Drizzle ORM&lt;/a&gt; team is &lt;a href="https://nodeweekly.com/link/186413/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;𝕏 unable to publish new releases to npm&lt;/a&gt; due to the registry's 100MB metadata limit. Their package currently has &lt;a href="https://nodeweekly.com/link/186414/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;1,397 versions published&lt;/a&gt; and will need some cleanup.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In less alarming registry news, an npm tooling bug briefly &lt;a href="https://nodeweekly.com/link/186415/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;marked several packages with one-character names as ‘security holders’&lt;/a&gt; (including &lt;code&gt;c&lt;/code&gt;, &lt;code&gt;i&lt;/code&gt;, &lt;code&gt;n&lt;/code&gt; and &lt;code&gt;x&lt;/code&gt;) by mistake. A rollback is underway.&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/186416/rss" title="github.com" style=" color: #20824B;   "&gt;ESM Provision by Popular npm Packages Sees a Big Jump&lt;/a&gt;&lt;/span&gt; — Titus’s twice-yearly look at what popular packages ship finds 38% now expose ESM (and 16% are ESM &lt;em&gt;only&lt;/em&gt;), up from 33.4% six months ago.&lt;/p&gt;
  &lt;p&gt;Titus Wormer &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/186417/rss" title="www.tigerdata.com" style=" color: #20824B;   "&gt;Your Event-Driven Service Deserves an Event-Ready Database&lt;/a&gt;&lt;/span&gt; — TimescaleDB is Postgres built for time-ordered data. Hypertables, 95% compression, continuous aggregates. &lt;a href="https://nodeweekly.com/link/186417/rss" style=" color: #20824B;   "&gt;$1000 credit&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;a href="https://nodeweekly.com/link/186418/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Uncovering the Magic Behind Playwright's Fixtures API&lt;/a&gt; – Learn how Playwright knows which fixtures your test needs just from its function signature. &lt;cite&gt;Vladimir Ivakin&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/186419/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;I Wish Deno Would Keep Doing What It Does Best&lt;/a&gt; – &lt;em&gt;“Early Deno set the agenda (…) What Deno is doing now runs in the opposite direction, catching up to what the ecosystem already has.”&lt;/em&gt; &lt;cite&gt;Hong Minhee&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/186420/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Creating a VS Code Agent Hook to Respond to File Changes&lt;/a&gt;  &lt;cite&gt;Nicholas C. Zakas&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/186421/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ozu5oizurtbtf0o8rtv6.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/186421/rss" title="nodered.org" style=" color: #20824B;   "&gt;Node-RED 5.0: The Biggest Editor Overhaul in the Project's History&lt;/a&gt;&lt;/span&gt; — The Node.js &lt;em&gt;and&lt;/em&gt; 'node'-based low-code environment gets &lt;em&gt;"the biggest change to the editor experience in [its] history"&lt;/em&gt;: updated sidebars, dark theme &lt;em&gt;(above)&lt;/em&gt;, pausable debug output, and the ability to call Link nodes from Function nodes.&lt;/p&gt;
  &lt;p&gt;Nick O'Leary &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/186422/rss" title="danfry1.github.io" style=" color: #20824B;   "&gt;Bonsai: A Safe Expression Language for User-Defined Rules&lt;/a&gt;&lt;/span&gt; — A fast, sandboxed expression language for when you need to evaluate user-supplied rules, filters, or templates without reaching for &lt;code&gt;eval&lt;/code&gt;. &lt;a href="https://nodeweekly.com/link/186423/rss" style=" color: #20824B;   "&gt;Try the playground.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Daniel Fry &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/186424/rss" title="depsguard.com" style=" color: #20824B;   "&gt;DepsGuard: A Tool to Harden npm, pnpm, Yarn and Bun Configs&lt;/a&gt;&lt;/span&gt; — Can't wait for npm v12's safer defaults? This Rust-based tool audits and rewrites your package manager config, disabling install scripts, enforcing cooldowns, and blocking provenance downgrades.&lt;/p&gt;
  &lt;p&gt;Arnica &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/186425/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Commander.js 15.0&lt;/a&gt; – The popular CLI framework is now ESM-only. v14 will be maintained till May 2027 in case you have trouble migrating.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🎬 &lt;a href="https://nodeweekly.com/link/186426/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;NodeAV 6.0&lt;/a&gt; – Direct access to FFmpeg's C APIs with minimal abstractions for working with codecs, filters, streams, and more.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/186427/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Neutralinojs 6.8&lt;/a&gt; – The lightweight cross-platform app framework gets improved native file drag and drop, and a new default window policy to handle &lt;code&gt;target="_blank"&lt;/code&gt; links better.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/186428/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Juice 12.1&lt;/a&gt; – Automattic's library to inline CSS stylesheets into HTML. A common HTML email production task, &lt;a href="https://nodeweekly.com/link/186429/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;as used by&lt;/a&gt; MJML and &lt;code&gt;node-email-templates&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/186430/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Cucumber.js 13.0&lt;/a&gt; – The BDD test framework rebuilds its parallel runtime atop worker threads.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/186431/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Kanel 4.0&lt;/a&gt; – Generate TypeScript types from a live Postgres database.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/186432/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Envalid 8.2&lt;/a&gt; – Environment variable validation 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; 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;💘 Dyno Sniper has landed! &lt;a href="https://nodeweekly.com/link/186433/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Judoscale’s latest feature&lt;/a&gt; solves the noisy neighbor problem for good.&lt;/p&gt;
 
&lt;p&gt;📬 Debug transactional email without leaving your dashboard. &lt;a href="https://nodeweekly.com/link/186434/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Clerk Email Logs (beta)&lt;/a&gt; shows delivery status, bounce reasons, and open/click events.&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;🕹️  &lt;code&gt;node_modules&lt;/code&gt;, Now in 3D!&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/186435/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/mba2wbppbfx8s4vbh1iw.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/186435/rss" title="nesbitt.io" style=" color: #20824B;   "&gt;Wander Around a Heap of Packages in &lt;code&gt;node_modules&lt;/code&gt;&lt;/a&gt;&lt;/span&gt; — An interactive browser experience where you can navigate around a &lt;code&gt;node_modules&lt;/code&gt; folder FPS-style. Which, why, how? I don’t know, but when something is by packaging expert Andrew Nesbitt of &lt;a href="https://nodeweekly.com/link/186436/rss" style=" color: #20824B;   "&gt;ecosyste.ms&lt;/a&gt;, I check it out.&lt;/p&gt;
  &lt;p&gt;Andrew Nesbitt &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/628/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://nodeweekly.com/issues/628</guid>
    </item>
  </channel>
</rss>
