<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Node Weekly</title>
    <description>A free, once–weekly e-mail round-up of Node.js news and articles.</description>
    <link>https://nodeweekly.com/</link>
    <item>
      <title>The life of a ~200ms HTTP request to a Node app</title>
      <link>https://nodeweekly.com/issues/633</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;#​633 — July 16, 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/188021/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/187974/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/dilnllzd34vzt8qhuhgu.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/187974/rss" title="200ms.thenodebook.com" style=" color: #20824B;   "&gt;Follow a Single HTTP Request Through Its ~200ms Life&lt;/a&gt;&lt;/span&gt; — From the creator of &lt;a href="https://nodeweekly.com/link/187975/rss" style=" color: #20824B;   "&gt;NodeBook&lt;/a&gt;, a thorough guide to Node's internals, comes a scroll-driven visualization following &lt;em&gt;every step&lt;/em&gt; a single HTTP POST request takes from the user's click to Node's event loop and on to a database behind it.&lt;/p&gt;
  &lt;p&gt;Ishtmeet Singh &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/187973/rss" style=" color: #20824B;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/d17bc7e7.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/187973/rss" title="master.dev" style=" color: #20824B;   "&gt;The Best Harness Wins, Not the Best Model. Learn Harness Engineering&lt;/a&gt;&lt;/span&gt; — Scott Moss (Netflix) teaches you to wrap an LLM in a production-grade harness. Learn durable execution, sandboxing, memory, and multi-agent orchestration.&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/187976/rss" title="www.jasnell.me" style=" color: #20824B;   "&gt;Fetch Needs Error Codes&lt;/a&gt;&lt;/span&gt; — &lt;code&gt;e.cause.code&lt;/code&gt; lets you find out why a &lt;code&gt;fetch()&lt;/code&gt; failed in Node, but the spec says failures are just bare &lt;code&gt;TypeError&lt;/code&gt;s, so HTTP/2/3 typed signals like &lt;em&gt;"safe to retry this POST"&lt;/em&gt; go missing. James, who created Node's error code convention, is pushing a TC39 proposal to standardize a fix.&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;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/187977/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Ant&lt;/a&gt; is a new entry to the growing field of JavaScript runtimes. This time, it's an independent engine written in C packed into a 9MB binary that boasts very low cold start times and can run Hono apps.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you're considering using Go at all, &lt;a href="https://nodeweekly.com/link/187978/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;this 'from Express to Fiber' guide&lt;/a&gt; with examples in both JavaScript and Go (on the Express-inspired &lt;a href="https://nodeweekly.com/link/187979/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Fiber&lt;/a&gt; framework) could be helpful.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🇮🇹 &lt;a href="https://nodeweekly.com/link/187980/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;NodeConf EU 2026&lt;/a&gt; takes place this September 29-30 in Italy. &lt;a href="https://nodeweekly.com/link/187981/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Tickets&lt;/a&gt; are still available.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/187982/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Vercel is deprecating Node 20&lt;/a&gt; for &lt;em&gt;Builds&lt;/em&gt; and &lt;em&gt;Functions&lt;/em&gt; on October 1, 2026.&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/187983/rss" title="piccalil.li" style=" color: #20824B;   "&gt;&lt;code&gt;Proxy&lt;/code&gt; and &lt;code&gt;Reflect&lt;/code&gt;: Redefining How Objects Fundamentally Work&lt;/a&gt;&lt;/span&gt; — A deep dive into intercepting the internal operations of JavaScript objects, covering why &lt;code&gt;Reflect&lt;/code&gt; exists at all, and ending with a small reactive state system.&lt;/p&gt;
  &lt;p&gt;Mat Marquis &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/187984/rss" title="core.telegram.org" style=" color: #20824B;   "&gt;Telegram Serverless: Run Telegram Bots on Telegram's Servers&lt;/a&gt;&lt;/span&gt; — Creating a bot for Telegram is easy (it has &lt;a href="https://nodeweekly.com/link/187985/rss" style=" color: #20824B;   "&gt;a &lt;em&gt;great&lt;/em&gt; API&lt;/a&gt;) with libraries like &lt;a href="https://nodeweekly.com/link/187986/rss" style=" color: #20824B;   "&gt;node-telegram-bot-api&lt;/a&gt;, but it's starting to support running them on its &lt;em&gt;own&lt;/em&gt; servers.&lt;/p&gt;
  &lt;p&gt;Telegram &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 serverless program is in beta, so not all users will have access to it yet.&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/187987/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;A Gentle Introduction to Git Worktrees&lt;/a&gt; – For when you need to check out multiple branches into separate directories simultaneously. &lt;cite&gt;Nicholas C. Zakas&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/187988/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Playwright on GitHub Actions: A Setup That Actually Runs Fast&lt;/a&gt; – How to cut Playwright CI time by caching browser binaries, lifting the scaffold's one-worker cap, and more. &lt;cite&gt;Jakob Norlin&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/187989/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;6 Security Settings Every GitHub Maintainer Should Enable This Week&lt;/a&gt;  &lt;cite&gt;Joseph Katsioloudes (GitHub)&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/187990/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/p3ow0hsqzactzle7wsgv.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/187990/rss" title="github.com" style=" color: #20824B;   "&gt;LiteParse 2: Fast, Light PDF Document Parsing&lt;/a&gt;&lt;/span&gt; — A PDF parser built in Rust with bindings for Node (plus WASM, Rust, and Python) — it worked great in my testing. It includes OCR, handles layouts/is spatially aware, and is fast (a complex 140-page PDF took ~10 seconds). &lt;a href="https://nodeweekly.com/link/187991/rss" style=" color: #20824B;   "&gt;Here's how to get started from Node&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;LlamaIndex &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/187994/rss" title="www.tigerdata.com" style=" color: #20824B;   "&gt;One Postgres for Your API and Your Analytics&lt;/a&gt;&lt;/span&gt; — TimescaleDB extends Postgres so your app and analytics run in one database at scale. &lt;a href="https://nodeweekly.com/link/187994/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/187992/rss" title="github.com" style=" color: #20824B;   "&gt;&lt;code&gt;actions/setup-node@v7&lt;/code&gt;: Install Node in GitHub Actions&lt;/a&gt;&lt;/span&gt; — The popular way to set up an Actions workflow with a version of Node brings changes supporting GitHub's cache-poisoning defenses, inspired by recent exploits. There are also &lt;a href="https://nodeweekly.com/link/187993/rss" style=" color: #20824B;   "&gt;new docs&lt;/a&gt; on publishing to npm with Trusted Publisher (OIDC).&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;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/187995/rss" title="mediabunny.dev" style=" color: #20824B;   "&gt;Mediabunny: A Full Media Toolkit for JavaScript&lt;/a&gt;&lt;/span&gt; — It's been a year since we mentioned this library for reading/writing/converting media formats (MP4, MP3, &lt;a href="https://nodeweekly.com/link/187996/rss" style=" color: #20824B;   "&gt;and more&lt;/a&gt;). Since then, it's added Apple ProRes, HLS read/write, and &lt;a href="https://nodeweekly.com/link/187997/rss" style=" color: #20824B;   "&gt;a new &lt;code&gt;server&lt;/code&gt; package&lt;/a&gt; that makes it all even easier to use from Node.&lt;/p&gt;
  &lt;p&gt;Vanilagy &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/187998/rss" title="www.tinbase.dev" style=" color: #20824B;   "&gt;Tinbase: A Supabase-Compatible Backend in a Single Binary&lt;/a&gt;&lt;/span&gt; — Provides a local Supabase-like dev experience using a JS backend built atop &lt;a href="https://nodeweekly.com/link/187999/rss" style=" color: #20824B;   "&gt;PGlite&lt;/a&gt; and &lt;a href="https://nodeweekly.com/link/188000/rss" style=" color: #20824B;   "&gt;pg-mem&lt;/a&gt;. A sort of mini, local-only Postgres wrapped in the same APIs as Supabase, so &lt;code&gt;supabase-js&lt;/code&gt; works unchanged.&lt;/p&gt;
  &lt;p&gt;Sanket Sahu &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/188001/rss" title="neon.com" style=" color: #20824B;   "&gt;&lt;code&gt;@neon/sdk&lt;/code&gt;: Neon's New TypeScript Client Library&lt;/a&gt;&lt;/span&gt; — For users of the &lt;a href="https://nodeweekly.com/link/188002/rss" style=" color: #20824B;   "&gt;Neon&lt;/a&gt; Postgres platform to manage projects, branches, and databases from code.&lt;/p&gt;
  &lt;p&gt;Andre Landgraf (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;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/188003/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Nano ID 6.0&lt;/a&gt; – Generate tiny URL-friendly unique string identifiers. Now 4x faster and drops Node 18/20 support.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/188004/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;c8 12.0&lt;/a&gt; – Istanbul-compatible coverage reports using Node's built-in V8 data. Node's test runner also has its own &lt;a href="https://nodeweekly.com/link/188005/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;experimental code coverage reporting&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/188006/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;np 12.0&lt;/a&gt; – Sindre Sorhus's "better &lt;code&gt;npm publish&lt;/code&gt;" adds support for npm 12 and staged publishing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/188007/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;HyperExpress 7.0&lt;/a&gt; – A high performance Node server powered by uWebSockets.js.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/188008/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Helmet 8.3&lt;/a&gt; – HTTP security header hardening for Express apps.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/188009/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;node-auth0 6.0&lt;/a&gt; – One for &lt;a href="https://nodeweekly.com/link/188010/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Auth0&lt;/a&gt; users.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/188011/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;ESLint 10.7&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;📢  Elsewhere in the ecosystem&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;TypeScript-using AWS SDK for JavaScript v3 users need to be aware of &lt;a href="https://nodeweekly.com/link/188012/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;changes to the library's support for TypeScript versions&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;GitHub's &lt;a href="https://nodeweekly.com/link/188013/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Dependabot is now giving packages a three-day default cooldown&lt;/a&gt; before opening version update PRs, though security fixes are exempt.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;TC39's 115th meeting takes place next week. &lt;a href="https://nodeweekly.com/link/188014/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Here's the agenda&lt;/a&gt;, including &lt;a href="https://nodeweekly.com/link/188015/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Await Dictionary&lt;/a&gt; aiming for Stage 3, plus &lt;a href="https://nodeweekly.com/link/188016/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Decimal&lt;/a&gt;, Import Defer, and &lt;a href="https://nodeweekly.com/link/188017/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Map.take&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📁 &lt;a href="https://nodeweekly.com/link/188018/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Cloudflare has launched 'Drop'&lt;/a&gt;, a way to quickly get a site live by dropping a folder or ZIP onto a page, similar to &lt;a href="https://nodeweekly.com/link/188019/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Netlify's service of the same name&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/188020/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;plx&lt;/a&gt; is a transpiler for Postgres stored functions that converts JavaScript, PHP, Python, Ruby, and even COBOL, to Postgres's own PL/pgSQL language.&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/633/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 16 Jul 2026 00:00:00 +0000</pubDate>
      <guid>https://nodeweekly.com/issues/633</guid>
    </item>
    <item>
      <title>npm v12 and TypeScript 7 released</title>
      <link>https://nodeweekly.com/issues/632</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;#​632 — July 9, 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/187675/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/187640/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/yl9a45qyggteictlikwu.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/187640/rss" title="github.blog" style=" color: #20824B;   "&gt;npm v12 Ships with Install Scripts Off by Default&lt;/a&gt;&lt;/span&gt; — npm 12 is now GA with &lt;a href="https://nodeweekly.com/link/187641/rss" style=" color: #20824B;   "&gt;many breaking changes&lt;/a&gt;. The headline change is lifecycle scripts and implicit &lt;code&gt;node-gyp&lt;/code&gt; builds no longer run by default. Socket’s Sarah Gooding &lt;a href="https://nodeweekly.com/link/187642/rss" style=" color: #20824B;   "&gt;writes more about the practical implications&lt;/a&gt; including, thankfully, that unknown &lt;code&gt;.npmrc&lt;/code&gt; keys will now only &lt;a href="https://nodeweekly.com/link/187643/rss" style=" color: #20824B;   "&gt;&lt;em&gt;warn&lt;/em&gt; rather than error&lt;/a&gt; as they did in the pre-releases.&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;a href="https://nodeweekly.com/link/187639/rss" style=" color: #20824B;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/b3c40c31.jpg" width="160" height="80" 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/187639/rss" title="blog.sentry.io" style=" color: #20824B;   "&gt;Your Next.js App Is Already Tracing. Now Make It Useful&lt;/a&gt;&lt;/span&gt; — When a Next.js page is slow, the hard part is finding which part is responsible: middleware, SSR, an API route, a query, or a fetch call. 🔍 Next.js is already tracing all of it. &lt;a href="https://nodeweekly.com/link/187639/rss" style=" color: #20824B;   "&gt;Here's how to actually see it and put it to use&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;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/187644/rss" title="nodejs.org" style=" color: #20824B;   "&gt;Node.js 26.5.0 (Current) Released&lt;/a&gt;&lt;/span&gt; — Key additions include the ability to &lt;a href="https://nodeweekly.com/link/187645/rss" style=" color: #20824B;   "&gt;import text files into ES modules&lt;/a&gt; via import attributes (behind &lt;a href="https://nodeweekly.com/link/187676/rss" style=" color: #20824B;   "&gt;an experimental flag&lt;/a&gt;), &lt;code&gt;blob.textStream()&lt;/code&gt; (good for streaming large blob content), and being able to &lt;a href="https://nodeweekly.com/link/187646/rss" style=" color: #20824B;   "&gt;sample event-loop delay per iteration&lt;/a&gt; via &lt;code&gt;perf_hooks&lt;/code&gt;.&lt;/p&gt;
  &lt;p&gt;Richard Lau &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;Bun's Jarred Sumner wrote up &lt;a href="https://nodeweekly.com/link/187647/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;the full story of rewriting Bun in Rust&lt;/a&gt;, a somewhat controversial AI-powered port that will power Bun 1.4 onward. The cost? ~$165k of &lt;a href="https://nodeweekly.com/link/187648/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Fable&lt;/a&gt; usage, at API prices.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;James Snell has &lt;a href="https://nodeweekly.com/link/187649/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;a TC39 proposal to standardize a &lt;code&gt;code&lt;/code&gt; property on &lt;code&gt;Error&lt;/code&gt;&lt;/a&gt; (as has long been common in Node).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/187650/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Better Auth&lt;/a&gt;, the framework-agnostic auth library, &lt;a href="https://nodeweekly.com/link/187651/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;is joining Vercel&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/187652/rss" title="devblogs.microsoft.com" style=" color: #20824B;   "&gt;TypeScript 7.0 Released&lt;/a&gt;&lt;/span&gt; — Over a year after &lt;a href="https://nodeweekly.com/link/187653/rss" style=" color: #20824B;   "&gt;announcing TypeScript would be ported to Go&lt;/a&gt;, the final release is out. Don't rush to upgrade: TS 7.0 doesn't ship with an API yet, and &lt;a href="https://nodeweekly.com/link/187654/rss" style=" color: #20824B;   "&gt;6.0&lt;/a&gt; is still a good stepping stone. If you &lt;em&gt;do&lt;/em&gt; upgrade, expect to see huge build time speedups, once &lt;code&gt;moduleResolution: node&lt;/code&gt; is switched to &lt;code&gt;nodenext&lt;/code&gt; and you've sorted out &lt;code&gt;"types": ["node"]&lt;/code&gt;.&lt;/p&gt;
  &lt;p&gt;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;a href="https://nodeweekly.com/link/187655/rss" title="adventures.nodeland.dev" style=" color: #20824B;   "&gt;CVE-2026-48931 Shouldn't Have Been a CVE&lt;/a&gt;&lt;/span&gt; — A candid post-mortem from a Node maintainer explaining a recent snafu around an HTTP/1.1 poisoning issue he now argues shouldn’t have been a CVE, especially after the fix broke node-fetch, Firebase, and the official Docker images.&lt;/p&gt;
  &lt;p&gt;Matteo Collina &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 500 !important; font-size: 18px !important; color: #000;"&gt;&lt;a href="https://nodeweekly.com/link/187656/rss" title="pawelgrzybek.com" style=" color: #20824B;   "&gt;What's New in ECMAScript 2026&lt;/a&gt;&lt;/span&gt; — 
The &lt;a href="https://nodeweekly.com/link/187657/rss" style=" color: #20824B;   "&gt;ECMAScript 2026 spec&lt;/a&gt; was approved last week, and this round-up covers several main new features that made the cut, with all (except &lt;code&gt;Math.sumPrecise&lt;/code&gt;) available in Node today.
&lt;/p&gt;
  &lt;p&gt;Pawel Grzybek &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/187658/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;You Shouldn't Trust Trusted Publishing&lt;/a&gt; – npm &lt;a href="https://nodeweekly.com/link/187659/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;added trusted publishing&lt;/a&gt;, but it’s authentication, not a safety or quality badge. Matteo Collina has also &lt;a href="https://nodeweekly.com/link/187660/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;written about this from the npm perspective&lt;/a&gt; before. &lt;cite&gt;William Woodruff&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/187661/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Node.js Worker Threads in Production&lt;/a&gt; – Hard-won lessons from running worker threads at scale. &lt;cite&gt;Aaron Harper (Inngest)&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/187662/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ufi8jm6wnm93dzs3zqdo.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/187662/rss" title="github.com" style=" color: #20824B;   "&gt;terminal-image 5.0: Display Images in the Terminal&lt;/a&gt;&lt;/span&gt; — Works in any terminal that supports colors by rendering colored blocks, but can render images inline in terminals that support inline graphics. v5.0 improves iTerm2 support by using its native inline image support, rather than the Kitty protocol.&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/187663/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/187664/rss" title="github.com" style=" color: #20824B;   "&gt;eslint-node-test: ESLint Rules for Node's Built-In Test Runner&lt;/a&gt;&lt;/span&gt; — In Sindre’s own words: &lt;em&gt;“If you use the Node.js test runner (&lt;code&gt;node:test&lt;/code&gt;), you may like the new ESLint plugin I cooked up. 64&lt;/em&gt; [now 82] &lt;em&gt;rules to improve your tests, prevent mistakes, and enforce style.”&lt;/em&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;span&gt;✉️&lt;/span&gt; &lt;a href="https://nodeweekly.com/link/187665/rss" title="upyo.org" style=" color: #20824B;   "&gt;Upyo 0.5: A Cross-Runtime Email Sending Library&lt;/a&gt;&lt;/span&gt; — A unified, type-safe API for sending emails both on SMTP and HTTP-based (e.g. SendGrid or Amazon SES) providers from Node, Deno, Bun, and edge function runtimes.&lt;/p&gt;
  &lt;p&gt;Hong Minhee &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/187666/rss" title="github.com" style=" color: #20824B;   "&gt;webpack-dev-server 6.0: The Official webpack Dev Server&lt;/a&gt;&lt;/span&gt; — Bumps Express up to v5, drops support for older Node versions, adds support to be used as a webpack plugin, and switches to ESM.&lt;/p&gt;
  &lt;p&gt;webpack &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/187667/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;XO 4.0&lt;/a&gt; – Opinionated but configurable ESLint wrapper that includes numerous popular ESLint plugins and rules out of the box.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/187668/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;ESLint Plugin Perfectionist 5.10&lt;/a&gt; – For when you're &lt;em&gt;really&lt;/em&gt; particular about the ordering of things like objects, imports, and types.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/187669/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;MongoDB Node.js Driver 7.5&lt;/a&gt; – Official driver for MongoDB. Now supports Queryable Encryption string queries on MongoDB 9.0.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🐍 &lt;a href="https://nodeweekly.com/link/187670/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;node-calls-python 1.2&lt;/a&gt; – Call Python from Node directly, in-process, without spawning processes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/187671/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;FoalTS 5.3&lt;/a&gt; – The full-featured Node.js app framework adds a new &lt;code&gt;dev-verbose&lt;/code&gt; logging format.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/187672/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Fastify 5.10.0&lt;/a&gt; – The fast and low overhead web framework.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/187673/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;feed 6.0&lt;/a&gt; – RSS, JSON, and Atom feed generator 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;📈 &lt;a href="https://nodeweekly.com/link/187674/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Crystallize seeks a remote SRE&lt;/a&gt; who thinks in SLOs, not heroics. Node/TS, GraphQL.&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/632/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 9 Jul 2026 00:00:00 +0000</pubDate>
      <guid>https://nodeweekly.com/issues/632</guid>
    </item>
    <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>
  </channel>
</rss>
