<?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>Playwright's exciting new page.screencast API</title>
      <link>https://nodeweekly.com/issues/621</link>
      <description>

  

    
    
    
    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;p&gt;#​621 — April 23, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;p&gt;&lt;a href="https://nodeweekly.com/link/184187/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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;&lt;p&gt;🎥 Playwright has added a new feature I thought was neat, so I've written a bit about it at the end of this issue – check it out!&lt;br&gt;__&lt;br&gt;&lt;em&gt;Peter Cooper, your editor&lt;/em&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  margin-top: 0; margin-right: 0; margin-bottom: 0; margin-left: 0; padding-top: 0; padding-right: 0;  padding-left: 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;
  &lt;a href="https://nodeweekly.com/link/184189/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ebnru5mx0iiqlp0qmorn.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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/184189/rss" title="aube.en.dev" style=" color: #20824B;   "&gt;aube: A New Node.js Package Manager&lt;/a&gt;&lt;/span&gt; — Yes, another one! What’s noteworthy is it comes from the developer of &lt;a href="https://nodeweekly.com/link/184190/rss" style=" color: #20824B;   "&gt;mise&lt;/a&gt;, a tool that makes managing numerous languages so much easier. aube’s selling points are &lt;a href="https://nodeweekly.com/link/184191/rss" style=" color: #20824B;   "&gt;raw performance&lt;/a&gt; and being a drop-in replacement. &lt;a href="https://nodeweekly.com/link/184192/rss" style=" color: #20824B;   "&gt;Its defaults&lt;/a&gt; are also security-focused.&lt;/p&gt;
  &lt;p&gt;Jeff Dickey &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;
  &lt;a href="https://nodeweekly.com/link/184188/rss" style=" color: #20824B;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/62f4e709.webp" width="107" height="107" 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/184188/rss" title="frontendmasters.com" style=" color: #20824B;   "&gt;Write Better Prompts&lt;/a&gt;&lt;/span&gt; — Join GitHub's Sabrina Goldfarb for this detailed video course on generating higher quality code with AI. Learn practical prompting techniques that work consistently across tools and transform your project ideas into reality.&lt;/p&gt;
  &lt;p&gt;Frontend Masters &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding-top: 1px; padding-right: 4px;  padding-left: 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/184193/rss" title="devblogs.microsoft.com" style=" color: #20824B;   "&gt;Writing Node.js Addons with .NET Native AOT&lt;/a&gt;&lt;/span&gt; — You can now write native Node addons in .NET languages like C#. &lt;em&gt;Native AOT&lt;/em&gt; compiles programs to shared libraries (or executables) which can expose N-API entry points for Node to call into, much like a C/C++ extension.&lt;/p&gt;
  &lt;p&gt;Drew Noakes (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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/184194/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;NodeConf EU&lt;/a&gt; is back. It's in Bologna, Italy this September 29-30. Tickets are on sale, and &lt;a href="https://nodeweekly.com/link/184195/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;here's the CFP&lt;/a&gt; if you want to speak.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Maël Nison, the maintainer of Yarn, is working on &lt;a href="https://nodeweekly.com/link/184196/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;a new Node feature to support &lt;em&gt;package maps&lt;/em&gt;&lt;/a&gt; where Node can resolve packages using a static JSON file instead of walking &lt;code&gt;node_modules&lt;/code&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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/184197/rss" title="devblogs.microsoft.com" style=" color: #20824B;   "&gt;TypeScript 7.0 Beta: A 10x Faster TypeScript Compiler&lt;/a&gt;&lt;/span&gt; — The first beta of the Go-powered native port of TypeScript boasting &lt;em&gt;“about 10 times faster”&lt;/em&gt; performance. &lt;a href="https://nodeweekly.com/link/184198/rss" style=" color: #20824B;   "&gt;TypeScript 6.0&lt;/a&gt; remains important as a transitional release in your upgrade process, as TS 7.0 shares &lt;a href="https://nodeweekly.com/link/184199/rss" style=" color: #20824B;   "&gt;6.0’s default config changes&lt;/a&gt; and 6.0’s deprecations are now hard errors. There are also &lt;a href="https://nodeweekly.com/link/184200/rss" style=" color: #20824B;   "&gt;changes to how to write your code&lt;/a&gt; to take into account.&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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/184201/rss" title="orkes.io" style=" color: #20824B;   "&gt;Build Durable AI Agents That Won’t Break in Production (Webinar)&lt;/a&gt;&lt;/span&gt; — Learn the open-source 4-layer stack and run durable AI agents with Agentspan across LangGraph, OpenAI, and Google SDKs.&lt;/p&gt;
  &lt;p&gt;Orkes &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding-top: 1px; padding-right: 4px;  padding-left: 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/184202/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Delivering a Dynamic Hexagonal World Map in 10KB&lt;/a&gt; – How a developer built a hexagon-based SVG world map using a Node-based pipeline with &lt;a href="https://nodeweekly.com/link/184203/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Turf.js&lt;/a&gt; to simplify GeoJSON. &lt;cite&gt;Ben Schwarz&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/184204/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Features Everyone Should Steal From &lt;code&gt;npmx&lt;/code&gt;&lt;/a&gt; – &lt;a href="https://nodeweekly.com/link/184205/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;npmx&lt;/a&gt; is a fantastic way to browse the npm package registry. &lt;cite&gt;Andrew Nesbitt&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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;
  &lt;a href="https://nodeweekly.com/link/184206/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/efwmqi5yf7qstwu2evdl.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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/184206/rss" title="optique.dev" style=" color: #20824B;   "&gt;Optique 1.0: Type-Safe Combinatorial CLI Parser&lt;/a&gt;&lt;/span&gt; — Build composable parsers for CLIs with type safety, type inference, and built-in shell completion support, plus config file integration and &lt;code&gt;man&lt;/code&gt; page generation from the same definitions. &lt;a href="https://nodeweekly.com/link/184207/rss" style=" color: #20824B;   "&gt;v1.0&lt;/a&gt; is the first stable release and Hong &lt;a href="https://nodeweekly.com/link/184208/rss" style=" color: #20824B;   "&gt;compares it to Commander.js and explains why you'd use Optique.&lt;/a&gt;&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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/184209/rss" title="docmd.io" style=" color: #20824B;   "&gt;DocMD: Build Production-Ready Docs from Markdown&lt;/a&gt;&lt;/span&gt; — A Node-powered zero-config documentation site generator with a focus on producing lean, fast output (&lt;a href="https://nodeweekly.com/link/184210/rss" style=" color: #20824B;   "&gt;its own docs&lt;/a&gt; are a good example). It has i18n and versioning built-in and, as of this week, &lt;a href="https://nodeweekly.com/link/184211/rss" style=" color: #20824B;   "&gt;a &lt;code&gt;deploy&lt;/code&gt; command&lt;/a&gt; to produce ready-to-deploy files for Docker, Nginx, and Caddy.&lt;/p&gt;
  &lt;p&gt;docmd &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/184212/rss" title="www.harper.fast" style=" color: #20824B;   "&gt;rocksdb-js: New RocksDB Bindings for Node&lt;/a&gt;&lt;/span&gt; — It’s been messy using Facebook’s &lt;a href="https://nodeweekly.com/link/184213/rss" style=" color: #20824B;   "&gt;RocksDB&lt;/a&gt; key-value store from Node in recent years, but finally there’s a new, modern native addon for the task. &lt;a href="https://nodeweekly.com/link/184214/rss" style=" color: #20824B;   "&gt;GitHub repo.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Chris Barber (Harper) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/184215/rss" title="bun.com" style=" color: #20824B;   "&gt;Bun v1.3.13: Smarter Testing and Less Memory Usage&lt;/a&gt;&lt;/span&gt; — The alternative runtime enhances &lt;code&gt;bun test&lt;/code&gt; with options for test environment isolation, parallelization, and to run only those tests affected by recent changes. The runtime &lt;a href="https://nodeweekly.com/link/184216/rss" style=" color: #20824B;   "&gt;uses 5% less memory&lt;/a&gt; and &lt;code&gt;bun install&lt;/code&gt; gets faster, among other things.&lt;/p&gt;
  &lt;p&gt;Jarred Sumner &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/184217/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;&lt;code&gt;pnpm/action-setup@v6&lt;/code&gt;&lt;/a&gt; – The GitHub Action to install/configure pnpm adds &lt;a href="https://nodeweekly.com/link/184218/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;pnpm v11&lt;/a&gt; support.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/184219/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;node-mssql 12.5&lt;/a&gt; – Microsoft SQL Server client library. You can now set per-request timeouts.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/184220/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;type-flag 4.2&lt;/a&gt; – Strongly typed command-line arguments parser.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/184221/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;MongoDB Node.js Driver v7.2.0&lt;/a&gt; – The official MongoDB driver.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/184222/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Mongoose 9.5&lt;/a&gt; – MongoDB object modeling library for Node.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/184223/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;pg-boss 12.16&lt;/a&gt; – Postgres-backed job queue for Node apps.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/184224/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;xero-node 15.0&lt;/a&gt; – Node SDK for &lt;a href="https://nodeweekly.com/link/184225/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Xero&lt;/a&gt; accounting software.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/184226/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;np 11.2&lt;/a&gt; – Feature-packed alternative to &lt;code&gt;npm publish&lt;/code&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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 0px;  padding-left: 0px;"&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;
&lt;p&gt;Skip the README archaeology. Flox delivers reproducible dev environments with no system pollution. One command, zero friction. &lt;a href="https://nodeweekly.com/link/184227/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Try it free&lt;/a&gt;.&lt;/p&gt;
 
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/184228/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Gauntlet&lt;/a&gt;. A 10-week no-cost fellowship building the AI skills companies need. Learn to ship faster with AI. Land a $200K+ job. &lt;a href="https://nodeweekly.com/link/184228/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Apply now&lt;/a&gt;.&lt;/p&gt;
 
&lt;p&gt;⚙️ &lt;a href="https://nodeweekly.com/link/184229/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Build AI agents like you build APIs. Orchestrate not just LLMs — but Claude Code, Codex &amp;amp; full coding harnesses&lt;/a&gt;. Open-source TypeScript SDK. &lt;a href="https://nodeweekly.com/link/184232/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;agentfield.ai&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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0; padding-right: 0;  padding-left: 0;"&gt;&lt;p&gt;🎥  Playwright's &lt;code&gt;page.screencast&lt;/code&gt; API&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/184231/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;The newest version&lt;/a&gt; of the popular Playwright Web testing and automation library (&lt;a href="https://nodeweekly.com/link/184231/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;v1.59.0&lt;/a&gt;) boasts a new &lt;code&gt;page.screencast&lt;/code&gt; API to make recording videos more flexible. I took it for a spin and liked what I saw.&lt;/p&gt;
&lt;p&gt;You can now start and stop video recording in a more granular way than &lt;code&gt;recordVideo&lt;/code&gt; allowed:&lt;/p&gt;
&lt;div style=" padding-top: 1px; padding-right: 18px;  padding-left: 18px; font-size: 0.9em; line-height: 1.5em;"&gt;
&lt;pre&gt;await page.screencast.start({ path: 'video.webm' });
// do stuff here
await page.screencast.stop();
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;But the real fun begins when you use its new visual annotation and custom HTML overlay features.&lt;/p&gt;
&lt;p&gt;I created a basic HTML form and a Playwright script to test out the new features and you can basically create full screencast style videos with it:&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;
  &lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/nzdmofwqfrltr3qxvri8.jpg" width="640" 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;
  &lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/fzxobegz35z6hfni1dfp.jpg" width="640" 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;
&lt;p&gt;Here's the code for the section above:&lt;/p&gt;
&lt;div style=" padding-top: 1px; padding-right: 18px;  padding-left: 18px; font-size: 0.75em; line-height: 1.5em;"&gt;
&lt;pre&gt;await page.screencast.showChapter('Step 4 — Interests', {
  description: 'Multiple checkboxes',
  duration: 1400,
});
await page.locator('#interests input[value="testing"]').check();
await page.locator('#interests input[value="tooling"]').check();
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Read &lt;a href="https://nodeweekly.com/link/184231/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;the full release notes&lt;/a&gt; for what you can do, but this strikes me as a fantastic way to automatically generate good-looking videos you can slot into your documentation.&lt;/p&gt;
&lt;p&gt;There's also a new &lt;code&gt;playwright-cli show&lt;/code&gt; command that brings up a dashboard where you can see all the currently running browsers, interact with them, and open DevTools to inspect what's going on.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; 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/621/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://nodeweekly.com/issues/621</guid>
    </item>
    <item>
      <title>Node moves toward Temporal by default</title>
      <link>https://nodeweekly.com/issues/620</link>
      <description>

  

    
    
    
    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;p&gt;#​620 — April 16, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183840/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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  margin-top: 0; margin-right: 0; margin-bottom: 0; margin-left: 0; padding-top: 0; padding-right: 0;  padding-left: 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;
  &lt;a href="https://nodeweekly.com/link/183842/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/o2rklqqsv15ze9w9abj5.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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183842/rss" title="github.com" style=" color: #20824B;   "&gt;Node Moves to Enable Temporal By Default&lt;/a&gt;&lt;/span&gt; — The &lt;a href="https://nodeweekly.com/link/183843/rss" style=" color: #20824B;   "&gt;Temporal API&lt;/a&gt;, designed to modernize JavaScript’s date/time handling, &lt;a href="https://nodeweekly.com/link/183844/rss" style=" color: #20824B;   "&gt;reached stage 4&lt;/a&gt; last month. Node was waiting on V8 to make it enabled by default, which happened in V8 14.4, and the wheels are now in motion for an eventual release in Node 26.&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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183845/rss" title="nodejs.org" style=" color: #20824B;   "&gt;Node.js 24.15.0 (LTS) Released&lt;/a&gt;&lt;/span&gt; — The LTS release of Node gets a few goodies from v25 including &lt;code&gt;require(esm)&lt;/code&gt; and the module compile cache being marked as stable, as well as &lt;code&gt;--max-heap-size&lt;/code&gt; and OpenSSL 4.0 build support.&lt;/p&gt;
  &lt;p&gt;Antoine du Hamel &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;
  &lt;a href="https://nodeweekly.com/link/183883/rss" style=" color: #20824B;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/7ca95ac2.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/183883/rss" title="www.appsignal.com" style=" color: #20824B;   "&gt;Stop Juggling 5 Tools to Monitor One Node App&lt;/a&gt;&lt;/span&gt; — Errors, performance, logs, uptime, host metrics — AppSignal handles all of it for your Node.js stack. Auto-instruments Express, Koa, Prisma, and BullMQ out of the box. Request-based pricing, unlimited seats. &lt;a href="https://nodeweekly.com/link/183883/rss" style=" color: #20824B;   "&gt;Free 30-day trial, no credit 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-top: 1px; padding-right: 4px;  padding-left: 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183846/rss" title="cheatsheetseries.owasp.org" style=" color: #20824B;   "&gt;The OWASP NPM Security Best Practices Cheat Sheet&lt;/a&gt;&lt;/span&gt; — A long-standing resource that continues to be updated and remains a useful checklist. Recent updates tackle disabling lifecycle scripts, typosquatting, trusted publishing, and dependency confusion.&lt;/p&gt;
  &lt;p&gt;OWASP Cheat Sheet Series &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183847/rss" title="blog.jcoglan.com" style=" color: #20824B;   "&gt;Uses for Nested Promises&lt;/a&gt;&lt;/span&gt; — James revisits 2013's &lt;a href="https://nodeweekly.com/link/183848/rss" style=" color: #20824B;   "&gt;Promises/A+&lt;/a&gt; monads &lt;a href="https://nodeweekly.com/link/183849/rss" style=" color: #20824B;   "&gt;debate&lt;/a&gt; and has changed his mind, thanks to a real concurrency problem he ran into. Demanding but rewarding.&lt;/p&gt;
  &lt;p&gt;James Coglan &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/183850/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;The Simplest C-to-WebAssembly-to-Node Pipeline&lt;/a&gt; – The simplest steps to take a function written in C and compile it to run from Node with WASM. A 2018 experiment of mine updated for the modern day. &lt;cite&gt;Peter Cooper&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/183851/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;What We Learned Building a Rust Runtime for TypeScript&lt;/a&gt;  &lt;cite&gt;Ivan Cernja (Encore)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/183852/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Build a Movie Watchlist with Node.js, TypeScript, and MongoDB&lt;/a&gt;  &lt;cite&gt;Nic Raboy&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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183853/rss" title="pompelmi.app" style=" color: #20824B;   "&gt;Pompelmi 1.0: Antivirus File Scanning from Node&lt;/a&gt;&lt;/span&gt; — A wrapper for &lt;a href="https://nodeweekly.com/link/183854/rss" style=" color: #20824B;   "&gt;ClamAV&lt;/a&gt;, originally designed for scanning for malicious uploads in Node apps. It’s standalone and no daemons are required as it spawns ClamAV as-needed. &lt;a href="https://nodeweekly.com/link/183855/rss" style=" color: #20824B;   "&gt;v1.0&lt;/a&gt; landed a few days ago as its first stable release. &lt;a href="https://nodeweekly.com/link/183856/rss" style=" color: #20824B;   "&gt;GitHub repo.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;pompelmi contributors &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183857/rss" title="officeparser.harshankur.com" style=" color: #20824B;   "&gt;officeParser: A Library to Parse Common Office-Related Formats&lt;/a&gt;&lt;/span&gt; — Covers formats like &lt;code&gt;docx&lt;/code&gt;, &lt;code&gt;pptx&lt;/code&gt;, &lt;code&gt;xlsx&lt;/code&gt;, &lt;code&gt;odt&lt;/code&gt; and others used by tools like Microsoft Office and LibreOffice. &lt;a href="https://nodeweekly.com/link/183858/rss" style=" color: #20824B;   "&gt;GitHub repo.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Harsh Ankur &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183859/rss" title="www.tigerdata.com" style=" color: #20824B;   "&gt;You Already Have Postgres. Why Not Make It Handle Analytics?&lt;/a&gt;&lt;/span&gt; — TimescaleDB adds hypertables, 95% compression, and continuous aggregates. No second database, no pipeline. &lt;a href="https://nodeweekly.com/link/183859/rss" style=" color: #20824B;   "&gt;Try for free&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-top: 1px; padding-right: 4px;  padding-left: 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183860/rss" title="github.com" style=" color: #20824B;   "&gt;Micro-ML: A Toolkit of Forecasting and Clustering Algorithms&lt;/a&gt;&lt;/span&gt; — A ~56KB WASM-powered library with algorithms for regression and smoothing. Cluster points, classify data, or predict the next value in a series without dragging in TensorFlow.js.&lt;/p&gt;
  &lt;p&gt;Adam Perliński &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183861/rss" title="github.com" style=" color: #20824B;   "&gt;Audio: High-Level Audio Manipulation in Node&lt;/a&gt;&lt;/span&gt; — Take audio, trim it, normalize loudness, add fading, detect notes/chords, perform filtering, and more. No ffmpeg needed. From the same creators as the &lt;a href="https://nodeweekly.com/link/183862/rss" style=" color: #20824B;   "&gt;web-audio-api&lt;/a&gt; project featured last week.&lt;/p&gt;
  &lt;p&gt;audiojs project &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183863/rss" title="github.com" style=" color: #20824B;   "&gt;x-win: Inspect Open and Active Windows from Node&lt;/a&gt;&lt;/span&gt; — Obtain the position, size, app icon, and title of windows open on macOS, Linux, and Windows, as well as the process info and memory usage of their underlying processes.&lt;/p&gt;
  &lt;p&gt;Hocine Benkhadra &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;🖼️ &lt;a href="https://nodeweekly.com/link/183864/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;terminal-image 4.3&lt;/a&gt; – Display images in the terminal, whether by colorized ANSI blocks or full resolution (in terminals that support it).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183865/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Jazzer.js 4.0&lt;/a&gt; – Coverage-guided, in-process fuzzer for Node based on LLVM's &lt;a href="https://nodeweekly.com/link/183866/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;libFuzzer&lt;/a&gt;. Now supports pure ESM code.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📊 &lt;a href="https://nodeweekly.com/link/183867/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Chartbrew 5.0&lt;/a&gt; – Powerful Node and React-powered live data dashboard app.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183868/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Happy DOM 20.9&lt;/a&gt; – JS implementation of a web browser without the GUI.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🎨 &lt;a href="https://nodeweekly.com/link/183869/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Color Thief 3.0&lt;/a&gt; – Extract color palettes from images.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183870/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;node-mssql 12.3&lt;/a&gt; – Microsoft SQL Server client.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🤖 &lt;a href="https://nodeweekly.com/link/183871/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;GramIO 0.9&lt;/a&gt; – Telegram Bot API framework.&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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 0px;  padding-left: 0px;"&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;
&lt;p&gt;💌 What is happening at Heroku?? Judoscale wrote a &lt;a href="https://nodeweekly.com/link/183872/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;letter from the dev community,&lt;/a&gt; expressing our concerns.&lt;/p&gt;
 
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183873/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Gauntlet&lt;/a&gt;. A 10-week no-cost fellowship building the AI-first engineers hiring managers need. Ship production AI. Land a $200K–$950K job.&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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0; padding-right: 0;  padding-left: 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;
  &lt;a href="https://nodeweekly.com/link/183874/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ulgnvyrw2bt4ykhbefbx.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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183874/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;FluidCAD&lt;/a&gt; &lt;em&gt;(above)&lt;/em&gt; is a new project bringing parametric CAD to the JavaScript world where you can write code to create/manipulate objects and see a live update of what you're making. It's built on top of &lt;a href="https://nodeweekly.com/link/183875/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;OpenCascade.js&lt;/a&gt;, a JS/WASM port of the open source &lt;a href="https://nodeweekly.com/link/183876/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;OpenCascade&lt;/a&gt; 3D geometry library.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183877/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;A full Windows 95 experience in an Electron app.&lt;/a&gt; v5.0 lets you share a local folder as a &lt;code&gt;Z:&lt;/code&gt; drive, mount ISOs, and share the clipboard.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A quick ten year flashback to when the V8 project &lt;a href="https://nodeweekly.com/link/183878/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;blogged about Orinoco&lt;/a&gt;, its then-under-development parallel and concurrent garbage collector which is now a fundamental part of Node's performance story.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ally Piechowski shares &lt;a href="https://nodeweekly.com/link/183879/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;the &lt;code&gt;git&lt;/code&gt; commands she runs before reading any code&lt;/a&gt;. They provide a handy way to get a quick grasp on what's happening in larger, multi-contributor repos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A cautionary read for anyone running Node on AWS Lambda with MySQL or MariaDB: &lt;a href="https://nodeweekly.com/link/183880/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;The AWS Lambda 'Kiss of Death'&lt;/a&gt; walks through how connection reuse can leave transactions dangling, causing InnoDB's history list to grow unchecked until the database freezes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;GitHub has &lt;a href="https://nodeweekly.com/link/183881/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;opened a private preview of &lt;em&gt;Stacked PRs&lt;/em&gt;&lt;/a&gt;, giving native support for a workflow where one big change is split into a chain of dependent PRs.&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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; 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/620/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://nodeweekly.com/issues/620</guid>
    </item>
    <item>
      <title>Social engineering attacks target high-impact Node.js maintainers</title>
      <link>https://nodeweekly.com/issues/619</link>
      <description>

  

    
    
    
    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;p&gt;#​619 — April 9, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183449/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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  margin-top: 0; margin-right: 0; margin-bottom: 0; margin-left: 0; padding-top: 0; padding-right: 0;  padding-left: 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;
  &lt;a href="https://nodeweekly.com/link/183451/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/dxux2uvcy9unbbysurgu.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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183451/rss" title="github.com" style=" color: #20824B;   "&gt;A Post-Mortem of the Axios Compromise&lt;/a&gt;&lt;/span&gt; — 
The Axios team has shared a detailed post-mortem of &lt;a href="https://nodeweekly.com/link/183452/rss" style=" color: #20824B;   "&gt;the recent supply chain compromise&lt;/a&gt; where a trojan was pulled in as a malicious dependency. The attack was well planned and involved &lt;a href="https://nodeweekly.com/link/183453/rss" style=" color: #20824B;   "&gt;a sophisticated bit of social engineering.&lt;/a&gt;
&lt;/p&gt;
  &lt;p&gt;Jason Saayman / axios &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;&lt;p&gt;⚠️ Axios isn't the only target. Sarah Gooding reports on &lt;a href="https://nodeweekly.com/link/183454/rss" style=" color: #20824B; font-weight: 600;"&gt;ongoing attempts to socially engineer 'high-impact Node.js maintainers.'&lt;/a&gt; &lt;strong&gt;It's worth being aware of these techniques if you maintain any public npm packages.&lt;/strong&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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;
  &lt;a href="https://nodeweekly.com/link/183450/rss" style=" color: #20824B;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/3b00cadd.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/183450/rss" title="posetteconf.com" style=" color: #20824B;   "&gt;You Don’t Have To Attend All 44 Postgres Talks&lt;/a&gt;&lt;/span&gt; — POSETTE: An Event for Postgres 2026 is a free &amp;amp; virtual developer event on 16-18 Jun. All 44 talks stream live &amp;amp; will be available later. Join live to take part in discussions with speakers &amp;amp; attendees. &lt;a href="https://nodeweekly.com/link/183450/rss" style=" color: #20824B;   "&gt;Check out the schedule and mark your calendar.&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-top: 1px; padding-right: 4px;  padding-left: 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183455/rss" title="www.inngest.com" style=" color: #20824B;   "&gt;You Can't Cancel a Promise (Except Sometimes You Can)&lt;/a&gt;&lt;/span&gt; — You can’t cancel a promise, but you can halt an async function by making it &lt;code&gt;await&lt;/code&gt; a promise that never resolves. The function silently stops, and GC cleans up after it. It’s not just a trick; Inngest uses it in production to interrupt long-running workflow functions.&lt;/p&gt;
  &lt;p&gt;Aaron Harper (Inngest) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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;Google's compilers team has &lt;a href="https://nodeweekly.com/link/183456/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;proposed a high-level IR for JavaScript&lt;/a&gt; and shared a tool (&lt;a href="https://nodeweekly.com/link/183457/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;JSIR&lt;/a&gt;) it's already using internally to take advantage of it for analysis and source-to-source transformation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Microsoft has announced the &lt;a href="https://nodeweekly.com/link/183458/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;end of support for Node 20.x&lt;/a&gt; in the &lt;em&gt;Azure SDK for JavaScript.&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183459/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;npm trusted publishing now supports CircleCI&lt;/a&gt; as an OIDC provider.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🎤 &lt;a href="https://nodeweekly.com/link/183460/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;A 50-minute chat&lt;/a&gt; (with transcript) from two of the developers behind the &lt;a href="https://nodeweekly.com/link/183461/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;npmx project&lt;/a&gt; — an increasingly popular way to browse the npm registry.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183462/rss" title="nodejs.org" style=" color: #20824B;   "&gt;Node's Security Bug Bounty Program Paused Due to Loss of Funding&lt;/a&gt;&lt;/span&gt; — Since 2016, the Node.js project has offered bounties for qualifying security vulnerability reports. This was funded by the &lt;em&gt;Internet Bug Bounty&lt;/em&gt; program which is &lt;a href="https://nodeweekly.com/link/183463/rss" style=" color: #20824B;   "&gt;on hiatus&lt;/a&gt; as it figures out its role in an AI-assisted landscape. Reports can still be made, but with no monetary reward.&lt;/p&gt;
  &lt;p&gt;The Node.js Project &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183464/rss" title="tsdown.dev" style=" color: #20824B;   "&gt;tsdown Can Now Generate Executable Files for Node Apps&lt;/a&gt;&lt;/span&gt; — 
&lt;a href="https://nodeweekly.com/link/183465/rss" style=" color: #20824B;   "&gt;tsdown&lt;/a&gt;, the library bundler from VoidZero (Evan You's company), now supports building standalone executables using Node's &lt;a href="https://nodeweekly.com/link/183466/rss" style=" color: #20824B;   "&gt;Single Executable Applications (SEA)&lt;/a&gt; feature.
&lt;/p&gt;
  &lt;p&gt;VoidZero &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/183467/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Building a Runtime with QuickJS&lt;/a&gt;  &lt;cite&gt;Andrew Healey&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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;
  &lt;a href="https://nodeweekly.com/link/183468/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/k2ny3ugmivzjsodk8pjo.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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183468/rss" title="github.com" style=" color: #20824B;   "&gt;web-audio-api: Use the Web Audio API from Node&lt;/a&gt;&lt;/span&gt; — Get full &lt;a href="https://nodeweekly.com/link/183469/rss" style=" color: #20824B;   "&gt;Web Audio API&lt;/a&gt; support in Node and play audio on your machine or render it to file (and, yes, &lt;a href="https://nodeweekly.com/link/183470/rss" style=" color: #20824B;   "&gt;Tone.js&lt;/a&gt; works too). There are &lt;a href="https://nodeweekly.com/link/183471/rss" style=" color: #20824B;   "&gt;lots of examples&lt;/a&gt; to enjoy. v1.0/1.3 supports all 26 audio node types and has a 100% pass rate against the WPT test suite.&lt;/p&gt;
  &lt;p&gt;Sébastien Piquemal &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183472/rss" title="github.com" style=" color: #20824B;   "&gt;TinyTTS: English Text-to-Speech with a 3.4MB Model&lt;/a&gt;&lt;/span&gt; — Fast text-to-speech on the CPU with a tiny 3MB model for both Node.js and Python. Has an AI-generated vibe, but it worked well when &lt;a href="https://nodeweekly.com/link/183473/rss" style=" color: #20824B;   "&gt;I used it like this&lt;/a&gt;. There’s a &lt;a href="https://nodeweekly.com/link/183474/rss" style=" color: #20824B;   "&gt;demo on the Web&lt;/a&gt; to hear what it sounds like.&lt;/p&gt;
  &lt;p&gt;tronghieuit &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183475/rss" title="www.tigerdata.com" style=" color: #20824B;   "&gt;Analytics Doesn't Need Its Own Infrastructure&lt;/a&gt;&lt;/span&gt; — TimescaleDB extends Postgres so analytics runs on live data. Same connection, no pipeline, no second database. Start for free.&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-top: 1px; padding-right: 4px;  padding-left: 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183476/rss" title="marked.js.org" style=" color: #20824B;   "&gt;Marked.js 18.0: Fast Markdown Parser Library&lt;/a&gt;&lt;/span&gt; — A low level Markdown compiler built for speed,  available as both a client and server-side library. &lt;a href="https://nodeweekly.com/link/183477/rss" style=" color: #20824B;   "&gt;The demo&lt;/a&gt; shows off the basics. v18 is a bug fix release that also bumps it up to TypeScript 6. &lt;a href="https://nodeweekly.com/link/183478/rss" style=" color: #20824B;   "&gt;GitHub repo.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Christopher Jeffrey &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183479/rss" title="grammy.dev" style=" color: #20824B;   "&gt;grammY: An Up-to-Date Telegram Bot Framework&lt;/a&gt;&lt;/span&gt; — &lt;em&gt;“Make creating Telegram bots so simple you already know how to do it.”&lt;/em&gt; This week’s release supports the latest &lt;a href="https://nodeweekly.com/link/183480/rss" style=" color: #20824B;   "&gt;Telegram Bot API 9.6.&lt;/a&gt; &lt;a href="https://nodeweekly.com/link/183481/rss" style=" color: #20824B;   "&gt;GitHub repo.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;KnorpelSenf &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183482/rss" title="github.com" style=" color: #20824B;   "&gt;tokenu: &lt;code&gt;du&lt;/code&gt;-Like CLI Tool to Count Token Usage in Files and Directories&lt;/a&gt;&lt;/span&gt; — Could be useful to see if your codebase can fit entirely into a sensible context window, say.&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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183502/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;ky 2.0&lt;/a&gt; – Sindre Sorhus's popular, elegant HTTP client library that wraps &lt;code&gt;fetch&lt;/code&gt; gets a big upgrade including setting a &lt;code&gt;totalTimeout&lt;/code&gt; across all retries, and &lt;code&gt;baseURL&lt;/code&gt; for standard URL resolution to make your calls even simpler.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183483/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;npm-check-updates 20.0&lt;/a&gt; – Upgrade &lt;code&gt;package.json&lt;/code&gt; dependencies while preserving semantic versioning policies. Now supports cooldowns.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183484/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;ESLint 10.2&lt;/a&gt; – Adds support for language-aware rules through a new &lt;code&gt;meta.languages&lt;/code&gt; property. &lt;code&gt;Temporal&lt;/code&gt; is now supported too.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183485/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Ink 7.0&lt;/a&gt; – Build CLI/TUI apps using React. Now uses React 19, requires Node 22+, and adds a lot of useful hooks.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183486/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;content-disposition 1.1&lt;/a&gt; – Work with HTTP &lt;code&gt;Content-Disposition&lt;/code&gt; headers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183487/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Orange ORM 5.3&lt;/a&gt; – The Node and TypeScript ORM adds MariaDB support.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183488/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Axios 1.15.0&lt;/a&gt; – The popular HTTP client adds Bun and Deno support.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183489/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;RedisSMQ 10.0&lt;/a&gt; – Simple Redis-backed message queue for Node.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183490/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;node-ical 0.26.0&lt;/a&gt; – iCalendar/ICS (RFC 5545) parsing library.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183491/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Undici 8.0&lt;/a&gt; – HTTP/1.1 client written from scratch for Node.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183492/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;pnpm v11.0 Beta 8&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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 0px;  padding-left: 0px;"&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;
&lt;p&gt;⚡&lt;a href="https://nodeweekly.com/link/183493/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Route product events to HubSpot, Salesforce, Slack &amp;amp; more in one API call.&lt;/a&gt; Retries, fan-out, and delivery guarantees built in.&lt;/p&gt;
 
&lt;p&gt;Ship production AI. Land $200K–$950K. &lt;a href="https://nodeweekly.com/link/183494/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Gauntlet's 10-week no-cost fellowship&lt;/a&gt; builds the AI-first engineers hiring managers actually want.&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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0; padding-right: 0;  padding-left: 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Keen to brush up your knowledge of modern JavaScript? Chris Coyier's &lt;a href="https://nodeweekly.com/link/183495/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;What To Know in JavaScript (2026 Edition)&lt;/a&gt; tours the latest language features, plus the state of the most popular runtimes and build tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🤖 A developer discovered an npm package where the postinstall script &lt;a href="https://nodeweekly.com/link/183496/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;copied Markdown files into Claude Code's config.&lt;/a&gt; While likely not malicious in this case, it's a vector ripe for abuse and worth knowing about. &lt;a href="https://nodeweekly.com/link/183497/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Ignoring postinstall scripts&lt;/a&gt; is a wise option, and something &lt;a href="https://nodeweekly.com/link/183498/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;pnpm v10+ does by default.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🇷🇴 The popular &lt;a href="https://nodeweekly.com/link/183499/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;&lt;em&gt;JSHeroes&lt;/em&gt; conference&lt;/a&gt; is back this May 14-15 in Romania.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Engineers at the &lt;em&gt;Railway&lt;/em&gt; cloud hosting platform shared their story of &lt;a href="https://nodeweekly.com/link/183500/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;moving their frontend off Next.js to Vite and TanStack Router.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183501/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Puru&lt;/a&gt; is a new project offering a channels-inspired 'Go-style concurrency' option in Node and Bun.&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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; 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/619/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 9 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://nodeweekly.com/issues/619</guid>
    </item>
    <item>
      <title>Node.js 25.9 brings --max-heap-size and better, iterable streams</title>
      <link>https://nodeweekly.com/issues/618</link>
      <description>

  

    
    
    
    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;p&gt;#​618 — April 2, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183179/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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  margin-top: 0; margin-right: 0; margin-bottom: 0; margin-left: 0; padding-top: 0; padding-right: 0;  padding-left: 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;
  &lt;a href="https://nodeweekly.com/link/183181/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/z8z8ak6sfky2qi5mg7y0.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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183181/rss" title="nodejs.org" style=" color: #20824B;   "&gt;Node.js 25.9.0 (Current) Released&lt;/a&gt;&lt;/span&gt; — Including a &lt;code&gt;--max-heap-size&lt;/code&gt; option to set the maximum heap size for a process, James Snell’s experimental &lt;a href="https://nodeweekly.com/link/183182/rss" style=" color: #20824B;   "&gt;‘better streams API’&lt;/a&gt; implementation lands as &lt;code&gt;stream/iter&lt;/code&gt; (&lt;a href="https://nodeweekly.com/link/183183/rss" style=" color: #20824B;   "&gt;docs here&lt;/a&gt;), plus test runner module mocking improvements.&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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;
  &lt;a href="https://nodeweekly.com/link/183180/rss" style=" color: #20824B;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/8052a322.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/183180/rss" title="dashboard.memetria.com" style=" color: #20824B;   "&gt;Memetria K/V: Efficient Redis &amp;amp; Valkey Hosting&lt;/a&gt;&lt;/span&gt; — Memetria K/V hosts Redis OSS and Valkey for Node.js apps, featuring large key tracking and detailed analytics.&lt;/p&gt;
  &lt;p&gt;Memetria &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding-top: 1px; padding-right: 4px;  padding-left: 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183184/rss" title="socket.dev" style=" color: #20824B;   "&gt;The Hidden Blast Radius of the Axios Compromise&lt;/a&gt;&lt;/span&gt; — You’ve probably heard about &lt;a href="https://nodeweekly.com/link/183185/rss" style=" color: #20824B;   "&gt;the supply chain attack via Axios&lt;/a&gt; this week (if not, be sure to &lt;a href="https://nodeweekly.com/link/183186/rss" style=" color: #20824B;   "&gt;check if you’re affected&lt;/a&gt;). Ahmad reflects on the mechanics of such attacks and why their effects spread further than you might think.&lt;/p&gt;
  &lt;p&gt;Ahmad Nassri (Socket) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;&lt;p&gt;💡 If you want to mitigate such attacks, Dani Akash has &lt;a href="https://nodeweekly.com/link/183187/rss" style=" color: #20824B; font-weight: 600;"&gt;a guide to using 'minimum release age' cooldowns&lt;/a&gt; with npm, pnpm, Bun, and Yarn.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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;MSW's Artem Zakharchenko shares &lt;a href="https://nodeweekly.com/link/183188/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;a step-by-step guide to publishing to npm &lt;em&gt;securely&lt;/em&gt; in 2026.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183189/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;The source code for Claude Code leaked&lt;/a&gt; a few days ago due to the accidental shipping of source maps in its npm package. A Bun-related &lt;a href="https://nodeweekly.com/link/183190/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;issue&lt;/a&gt;&lt;sup&gt;?&lt;/sup&gt; (or &lt;a href="https://nodeweekly.com/link/183300/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;not?&lt;/a&gt;) but a reminder of &lt;a href="https://nodeweekly.com/link/183191/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;how powerful source maps can be.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cloudflare has &lt;a href="https://nodeweekly.com/link/183192/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;released EmDash&lt;/a&gt;, a &lt;em&gt;'spiritual successor to WordPress'&lt;/em&gt; that runs both on Cloudflare or &lt;em&gt;'any Node.js server'.&lt;/em&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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183193/rss" title="wasp.sh" style=" color: #20824B;   "&gt;A Gentle Intro to npm Workspaces&lt;/a&gt;&lt;/span&gt; — With &lt;a href="https://nodeweekly.com/link/183194/rss" style=" color: #20824B;   "&gt;workspaces&lt;/a&gt;, you can manage multiple packages in one repo and link local packages so they can import each other by name. npm may then hoist and deduplicate compatible dependencies during install.&lt;/p&gt;
  &lt;p&gt;Carlos Precioso (Wasp) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183195/rss" title="" style=" color: #20824B;   "&gt;Run Agents on Production-Fidelity Sandboxes&lt;/a&gt;&lt;/span&gt; — Ox spins up a sandbox for every agent task. Isolated code, compute, and data. Test against prod with zero blast radius.&lt;/p&gt;
  &lt;p&gt;Ox &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding-top: 1px; padding-right: 4px;  padding-left: 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;
&lt;p&gt;▶️ &lt;a href="https://nodeweekly.com/link/183196/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Most Developers Misunderstand Node.js in Production&lt;/a&gt; – A quick 6-minute interview with core contributor Ulises Gascón. &lt;cite&gt;Beyond.js (NodeSource)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;🤖 &lt;a href="https://nodeweekly.com/link/183197/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Getting Started Building Agents with the Vercel AI SDK in Node&lt;/a&gt;  &lt;cite&gt;Valeri Karpov&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/183198/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Escaping Node.js's Permission Model via Brotli&lt;/a&gt;  &lt;cite&gt;maitai&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://nodeweekly.com/link/183199/rss" style=" color: #20824B; font-weight: 500 !important;"&gt;Why We Replaced Node.js with Bun for 5x Throughput&lt;/a&gt;  &lt;cite&gt;Nick at Trigger&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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183200/rss" title="github.com" style=" color: #20824B;   "&gt;Transformers.js v4: Run AI Models from JavaScript&lt;/a&gt;&lt;/span&gt; — Run &lt;a href="https://nodeweekly.com/link/183201/rss" style=" color: #20824B;   "&gt;Hugging Face&lt;/a&gt;-hosted models to do things like LLMs, vision, and audio models from Node, in the browser, etc. v4 switches to WebGPU and is installable with npm. There are &lt;a href="https://nodeweekly.com/link/183202/rss" style=" color: #20824B;   "&gt;many demos&lt;/a&gt; covering &lt;a href="https://nodeweekly.com/link/183203/rss" style=" color: #20824B;   "&gt;speech transcription&lt;/a&gt;, &lt;a href="https://nodeweekly.com/link/183204/rss" style=" color: #20824B;   "&gt;using Qwen 3.5&lt;/a&gt;, and &lt;a href="https://nodeweekly.com/link/183205/rss" style=" color: #20824B;   "&gt;video captioning.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Hugging Face &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;&lt;p&gt;💡 The browser demos use large model downloads, so server-side use with Node may be the best use case, even if not the &lt;em&gt;coolest&lt;/em&gt;.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183206/rss" title="github.com" style=" color: #20824B;   "&gt;node-re2: Bindings for Google's RE2 Regex Library&lt;/a&gt;&lt;/span&gt; — &lt;a href="https://nodeweekly.com/link/183207/rss" style=" color: #20824B;   "&gt;RE2&lt;/a&gt; is a regular expression library with linear-time matching, making it immune to &lt;a href="https://nodeweekly.com/link/183237/rss" style=" color: #20824B;   "&gt;ReDoS&lt;/a&gt; attacks caused by backtracking. node-re2 offers it as a near drop-in replacement for &lt;code&gt;RegExp&lt;/code&gt;.&lt;/p&gt;
  &lt;p&gt;Eugene Lazutkin &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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/183209/rss" title="github.com" style=" color: #20824B;   "&gt;Defuddle: Extract the Main Content from Pages&lt;/a&gt;&lt;/span&gt; — Strips clutter from HTML leaving only the primary content for you to use. There’s &lt;a href="https://nodeweekly.com/link/183210/rss" style=" color: #20824B;   "&gt;a demo&lt;/a&gt; where you can try it out.&lt;/p&gt;
  &lt;p&gt;Steph Ango &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183213/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;dotenv 17.4&lt;/a&gt; – Loads environment variables from &lt;code&gt;.env&lt;/code&gt; files into &lt;code&gt;process.env&lt;/code&gt;. While now &lt;a href="https://nodeweekly.com/link/183214/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;a built-in Node feature&lt;/a&gt;, dotenv is a popular dependency with 100M+ downloads a week and offers finer-grained control over the process.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183215/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;numpy-ts 1.2&lt;/a&gt; – NumPy implementation for TS/JS. Now at ~50% native perf and with Float16 support. (&lt;a href="https://nodeweekly.com/link/183216/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Homepage&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183217/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Path-to-RegExp 8.4&lt;/a&gt; – Library to convert path strings with parameters into regexes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183218/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;globby 16.2&lt;/a&gt; – Promise-based glob matching, now with &lt;a href="https://nodeweekly.com/link/183219/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;global gitignore file support.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183220/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;ts-blank-space 0.8&lt;/a&gt; – Pure JS type-stripper using the TypeScript 6 parser.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183221/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Aedes 1.0.2&lt;/a&gt; – Node.js MQTT broker that runs on any stream server.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183222/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Ky 2.0 Prerelease&lt;/a&gt; – Popular HTTP client based on the Fetch API.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183223/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Got 15.0&lt;/a&gt; – Human-friendly, powerful HTTP request library.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183224/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;ESLint Markdown Plugin 8.0&lt;/a&gt; – Lint Markdown with ESLint.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183225/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;file-type 22.0&lt;/a&gt; – Detect the file type of binary files.&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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 0px;  padding-left: 0px;"&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;
&lt;p&gt;🧐 A cheaper Heroku? Our &lt;a href="https://nodeweekly.com/link/183226/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;Become an AI-first engineer. Gauntlet is a full-time fellowship, no cost. $200K+ roles. Next cohort starts 4/27. &lt;a href="https://nodeweekly.com/link/183238/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Apply Today&lt;/a&gt;&lt;/p&gt;
 
&lt;p&gt;SerpApi is a &lt;a href="https://nodeweekly.com/link/183228/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Web Search API&lt;/a&gt; for accessing Google and other search engine results in structured JSON. Try SerpApi for free.&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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0; padding-right: 0;  padding-left: 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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;
  &lt;a href="https://nodeweekly.com/link/183229/rss" style=" color: #20824B;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ke7osegtjy2uvzmaphus.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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em;  padding-top: 0px; padding-right: 15px;  padding-left: 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183229/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;WWWBasic&lt;/a&gt; is a curious Google-hosted project to use the &lt;a href="https://nodeweekly.com/link/183230/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;BASIC&lt;/a&gt; language in &lt;code&gt;script&lt;/code&gt; tags or within Node apps. It's had its first update in years (1.0.2) to add ESM support and improve a few things. This seems to be a true labor of love for Googler Brad Nelson.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183231/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;QuickBEAM&lt;/a&gt; is a JavaScript runtime for Erlang's BEAM VM, as also used by &lt;a href="https://nodeweekly.com/link/183232/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Elixir.&lt;/a&gt; It offers compatibility with core Node.js APIs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183233/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;Deno v2.7.11 has been released&lt;/a&gt; with &lt;em&gt;"tons of Node.js compatibility improvements"&lt;/em&gt; covering &lt;code&gt;crypto&lt;/code&gt;, &lt;code&gt;child_process&lt;/code&gt;, &lt;code&gt;workers&lt;/code&gt;, and &lt;a href="https://nodeweekly.com/link/183235/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;TTY handling on Windows&lt;/a&gt; to match &lt;code&gt;libuv&lt;/code&gt;'s behavior.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nodeweekly.com/link/183236/rss" style=" color: #20824B; font-weight: 500 !important;   "&gt;wasm-git&lt;/a&gt; is a WASM-compiled version of Git you can use directly from Node. We first linked to this six years ago when it was a mere experiment, but it's come a long way since then.&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-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; 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/618/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 2 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://nodeweekly.com/issues/618</guid>
    </item>
  </channel>
</rss>
