<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>JavaScript Weekly</title>
    <description>A newsletter of JavaScript articles, news and cool projects</description>
    <link>https://javascriptweekly.com/</link>
    <item>
      <title>How to vet an npm package in 2026</title>
      <link>https://javascriptweekly.com/issues/788</link>
      <description>

  

    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;div&gt;    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;
&lt;td align="left" style="padding-left: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;#​788 — June 2, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/186005/rss" style=" color: #3366aa;"&gt;Read on the Web&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0 12px;"&gt;&lt;p&gt;JavaScript Weekly&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://javascriptweekly.com/link/185959/rss" style=" color: #3366aa;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/y0qlucgypimbs46gwzyu.jpg" width="640" style="    line-height: 100%;    "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185959/rss" title="tiptap.dev" style=" color: #3366aa;    font-size: 1.1em; line-height: 1.4em;"&gt;Hocuspocus 4: Add Real-Time Collaboration to Any App&lt;/a&gt;&lt;/span&gt; — A plug-and-play real-time collaboration backend based on &lt;a href="https://javascriptweekly.com/link/185960/rss" style=" color: #3366aa;   "&gt;Yjs&lt;/a&gt; so you can quickly and safely wire up multi-user collaborative experiences into a JavaScript app. It runs on Node, Bun, Deno, or Cloudflare Workers. &lt;a href="https://javascriptweekly.com/link/186006/rss" style=" color: #3366aa;   "&gt;GitHub repo.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Tiptap &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  &lt;a href="https://javascriptweekly.com/link/185957/rss" style=" color: #3366aa;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/ca87702e.png" width="130" height="130" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185957/rss" title="www.meticulous.ai" style=" color: #3366aa;    font-size: 1.05em;"&gt;Still Writing Tests Manually? Meticulous AI Is Here&lt;/a&gt;&lt;/span&gt; — Notion, Dropbox, Wiz and LaunchDarkly now use a testing paradigm they can’t work without. Built by former Palantir engineers, Meticulous automatically creates an evolving suite of E2E UI tests, delivering exhaustive coverage with no developer effort.&lt;/p&gt;
  &lt;p&gt;Meticulous &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #993 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185961/rss" title="blog.gaborkoos.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;How to Evaluate an npm Package: 2026 Edition&lt;/a&gt;&lt;/span&gt; — A practical checklist for vetting packages beyond star counts, covering provenance attestation, install scripts, CI quality, and maintainer responsiveness. Learn to spot the red flags &lt;em&gt;before&lt;/em&gt; you &lt;code&gt;npm install&lt;/code&gt;.&lt;/p&gt;
  &lt;p&gt;Gabor Koos &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;🕒 The popular &lt;a href="https://javascriptweekly.com/link/186007/rss" style=" color: #3366aa; font-weight: 500;   "&gt;date-fns&lt;/a&gt; date utility library is &lt;a href="https://javascriptweekly.com/link/186008/rss" style=" color: #3366aa; font-weight: 500;   "&gt;preparing for a &lt;code&gt;Temporal&lt;/code&gt; shaped future&lt;/a&gt; and becoming a "Temporal-first library". For now, a much leaner &lt;a href="https://javascriptweekly.com/link/186009/rss" style=" color: #3366aa; font-weight: 500;   "&gt;v4.4&lt;/a&gt; is available, and &lt;a href="https://javascriptweekly.com/link/186010/rss" style=" color: #3366aa; font-weight: 500;   "&gt;v5.0 just entered alpha&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔒 In the &lt;a href="https://javascriptweekly.com/link/186016/rss" style=" color: #3366aa; font-weight: 500;   "&gt;latest surfacing&lt;/a&gt; of Shai-Hulud, &lt;a href="https://javascriptweekly.com/link/186017/rss" style=" color: #3366aa; font-weight: 500;   "&gt;dozens of Red Hat npm packages have been backdoored&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185962/rss" style=" color: #3366aa; font-weight: 500;   "&gt;npm 11.16.0 has shipped&lt;/a&gt; with initial (advisory warning only) support for an &lt;em&gt;opt-in&lt;/em&gt; install-script policy using &lt;code&gt;allowScripts&lt;/code&gt;. &lt;a href="https://javascriptweekly.com/link/185963/rss" style=" color: #3366aa; font-weight: 500;   "&gt;More details here.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The Svelte team presents &lt;a href="https://javascriptweekly.com/link/186011/rss" style=" color: #3366aa; font-weight: 500;   "&gt;its latest monthly update.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;RELEASES:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185966/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Ember 7.0&lt;/a&gt; – A major release for the long-standing framework to remove deprecated features. This post rounds up everything new since 6.0.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185967/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Node.js 26.3.0 (Current)&lt;/a&gt; – npm is upgraded to &lt;a href="https://javascriptweekly.com/link/185962/rss" style=" color: #3366aa; font-weight: 500;   "&gt;11.16.0&lt;/a&gt;, macOS x64 &lt;a href="https://javascriptweekly.com/link/185968/rss" style=" color: #3366aa; font-weight: 500;   "&gt;gets demoted&lt;/a&gt; to a tier 2 platform, and QUIC gets a big batch of improvements.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185969/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Astro 6.4&lt;/a&gt; – The web framework adds a pluggable Markdown pipeline, a Rust-based Markdown processor, and helpers for advanced routing on Cloudflare.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185970/rss" style=" color: #3366aa; font-weight: 500;   "&gt;pnpm 11.5.0&lt;/a&gt;/&lt;a href="https://javascriptweekly.com/link/185971/rss" style=" color: #3366aa; font-weight: 500;   "&gt;11.5.1&lt;/a&gt;, &lt;a href="https://javascriptweekly.com/link/185972/rss" style=" color: #3366aa; font-weight: 500;   "&gt;ESLint 10.4.1&lt;/a&gt;, &lt;a href="https://javascriptweekly.com/link/185973/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Angular 22 RC3&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;📖  Articles and Videos&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;span&gt;🤖&lt;/span&gt; &lt;a href="https://javascriptweekly.com/link/185974/rss" title="nolanlawson.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;Using AI to Write Better Code More Slowly&lt;/a&gt;&lt;/span&gt; — A prolific JavaScript developer says LLMs aren’t just for pumping out bad code quickly, they can indeed help you write higher quality code more &lt;em&gt;slowly&lt;/em&gt;.&lt;/p&gt;
  &lt;p&gt;Nolan Lawson &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185975/rss" title="github.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;TypeScript Tips Everyone Should Know&lt;/a&gt;&lt;/span&gt; — A concise set of tips for safer and cleaner code, as well as a reminder that while TypeScript can improve correctness, it doesn't guarantee good architecture or eliminate runtime bugs.&lt;/p&gt;
  &lt;p&gt;Matt Smith &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185976/rss" title="www.tigerdata.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;Your Partition Scheme Made Sense. Then the Data Got Big&lt;/a&gt;&lt;/span&gt; — TimescaleDB extends Postgres so analytics queries stay fast at scale. No pipeline, no second database. &lt;a href="https://javascriptweekly.com/link/185976/rss" style=" color: #3366aa;   "&gt;$1000 credit&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Tiger Data (creators of TimescaleDB) &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #993 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185977/rss" title="www.jayfreestone.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;&lt;em&gt;Intentionally&lt;/em&gt; Blocking Rendering with JavaScript&lt;/a&gt;&lt;/span&gt; — &lt;em&gt;"Sometimes an inline render-blocking script is a small price to pay for avoiding aggressive layout shifts."&lt;/em&gt;&lt;/p&gt;
  &lt;p&gt;Jay Freestone &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185978/rss" title="zackoverflow.dev" style=" color: #3366aa;    font-size: 1.05em;"&gt;Why Does tsgo Use So Much Memory?&lt;/a&gt;&lt;/span&gt; — 
A look into the Go-powered TypeScript 7 compiler and why it can chew through gigabytes on a large project.
&lt;/p&gt;
  &lt;p&gt;Zack Radisic &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📄 &lt;a href="https://javascriptweekly.com/link/185979/rss" style=" color: #3366aa; font-weight: 500;   "&gt;CSS vs. JavaScript for Web Animations&lt;/a&gt; – Underlying performance differences and guidance on when to pick which approach. &lt;cite&gt;Josh W. Comeau&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://javascriptweekly.com/link/185980/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Your Recursion is Lying to You&lt;/a&gt; – ES2015 specified tail call optimization, but most engines in 2026 don’t support it. &lt;cite&gt;Gabor Koos&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://javascriptweekly.com/link/185982/rss" style=" color: #3366aa; font-weight: 500;   "&gt;How We Cut Build Times by Two-Thirds by Deleting Our CMS&lt;/a&gt; – The story of Sentry's Gatsby to Astro migration. &lt;cite&gt;Eli Lennox (Sentry)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://javascriptweekly.com/link/185983/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Creating a VS Code Agent Hook to Respond to File Changes&lt;/a&gt;  &lt;cite&gt;Nicholas C. Zakas&lt;/cite&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;🛠 Code &amp;amp; Tools&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://javascriptweekly.com/link/185984/rss" style=" color: #3366aa;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/zotseriykxd9twkdybuq.jpg" width="640" style="    line-height: 100%;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;span&gt;📊&lt;/span&gt; &lt;a href="https://javascriptweekly.com/link/185984/rss" title="plotly.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;Plotly 3.6: The Declarative Graphing Library&lt;/a&gt;&lt;/span&gt; — A long-standing library, also widely used in the Python and R ecosystems, that offers over 50 visualization types, from basic charts and graphs to maps, plots, and heatmaps.&lt;/p&gt;
  &lt;p&gt;Plotly, Inc. &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185985/rss" title="try.expo.dev" style=" color: #3366aa;    font-size: 1.05em;"&gt;Expo UI Is Stable. Real SwiftUI and Compose from JS&lt;/a&gt;&lt;/span&gt; — One import. SwiftUI on iOS, Jetpack Compose on Android. Plus native drop-in replacements for 7 community packages.&lt;/p&gt;
  &lt;p&gt;Expo &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #993 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185986/rss" title="component-party.dev" style=" color: #3366aa;    font-size: 1.05em;"&gt;Component Party: A Rosetta Stone of UI Libraries&lt;/a&gt;&lt;/span&gt; — A side-by-side code snippet comparison of frameworks including React, Vue, Svelte, Angular, Ember, and more obscure options. Recent updates have extended Angular and Svelte coverage, plus added Ripple and Ember Polaris to the mix.&lt;/p&gt;
  &lt;p&gt;Mathieu Schimmerling &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;span&gt;🎉&lt;/span&gt; &lt;a href="https://javascriptweekly.com/link/185987/rss" title="particles.js.org" style=" color: #3366aa;    font-size: 1.05em;"&gt;tsParticles 4: A Particle Engine for Web Effects&lt;/a&gt;&lt;/span&gt; — If you want a confetti cannon, fireworks, &lt;a href="https://javascriptweekly.com/link/185988/rss" style=" color: #3366aa;   "&gt;ribbons&lt;/a&gt;, fireflies, snow, or similar effects on your pages, this is for you. Supports all major frameworks and vanilla JS. You can see some &lt;a href="https://javascriptweekly.com/link/185989/rss" style=" color: #3366aa;   "&gt;live demos here.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Matteo Bruni &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;📝 &lt;a href="https://javascriptweekly.com/link/185990/rss" style=" color: #3366aa; font-weight: 500;   "&gt;officeParser 7.1&lt;/a&gt; – Parse 'office' files (e.g. &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;) into an AST. The &lt;a href="https://javascriptweekly.com/link/185991/rss" style=" color: #3366aa; font-weight: 500;   "&gt;in-browser demo&lt;/a&gt; shows off what's returned.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔎 &lt;a href="https://javascriptweekly.com/link/185992/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Fuse.js 7.4&lt;/a&gt; – JavaScript fuzzy-search library. v7.4 adds support for parallel search powered by Web Workers. (&lt;a href="https://javascriptweekly.com/link/185993/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Homepage&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185994/rss" style=" color: #3366aa; font-weight: 500;   "&gt;ESLint You Might Not Need An Effect 1.0&lt;/a&gt; – ESLint/Oxlint plugin to catch when &lt;a href="https://javascriptweekly.com/link/185995/rss" style=" color: #3366aa; font-weight: 500;   "&gt;you might not need an Effect&lt;/a&gt; in React.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185996/rss" style=" color: #3366aa; font-weight: 500;   "&gt;PGlite 0.5&lt;/a&gt; – Run a Postgres database locally in WASM with reactivity and live sync. v0.5 upgrades to Postgres 18.3.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185997/rss" style=" color: #3366aa; font-weight: 500;   "&gt;TinyBase 8.4&lt;/a&gt; – A reactive data store and sync engine for local-first apps. Now with full &lt;a href="https://javascriptweekly.com/link/185998/rss" style=" color: #3366aa; font-weight: 500;   "&gt;SolidJS&lt;/a&gt; support.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185999/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Sugar High 1.2&lt;/a&gt; – 1KB syntax highlighter for JavaScript and JSX.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/186000/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Mantine 9.3&lt;/a&gt; – Popular, extensive React component suite.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px;"&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
	&lt;p&gt;📰 Classifieds&lt;/p&gt;
  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;🚀 &lt;a href="https://javascriptweekly.com/link/186001/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Handsontable's&lt;/a&gt; 342K-line JS→TS migration is ready — best-in-class docs so you can build faster, with confidence.&lt;/p&gt;
 
&lt;p&gt;⚡ Add production-ready auth to Next.js in minutes. Run clerk init, configure from the terminal, skip the dashboard: &lt;a href="https://javascriptweekly.com/link/186002/rss" style=" color: #3366aa; font-weight: 500;   "&gt;clerk.com/cli&lt;/a&gt;.&lt;/p&gt;
 
&lt;p&gt;🤖 &lt;a href="https://javascriptweekly.com/link/186003/rss" style=" color: #3366aa; font-weight: 500;   "&gt;A fleet of coding agents that ship real PRs&lt;/a&gt;. SWE-AF orchestrates Claude Code, Codex &amp;amp; Gemini into reviewed, production-grade pull requests - not demos.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;📢  Elsewhere in the ecosystem&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://javascriptweekly.com/link/186012/rss" style=" color: #3366aa;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/jduog0br5xg7lo2ctcyn.jpg" width="640" style="    line-height: 100%;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Programming language legend &lt;a href="https://javascriptweekly.com/link/186012/rss" style=" color: #3366aa; font-weight: 500;   "&gt;▶️ Anders Hejlsberg was on &lt;em&gt;The Pragmatic Engineer&lt;/em&gt;&lt;/a&gt; talking about his background, work on TypeScript, JavaScript's strengths and weaknesses, and how he uses AI.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kyle Simpson (of &lt;a href="https://javascriptweekly.com/link/186014/rss" style=" color: #3366aa; font-weight: 500;   "&gt;YDKJS&lt;/a&gt; fame) got in touch minutes before we hit send to let us know about &lt;a href="https://javascriptweekly.com/link/186015/rss" style=" color: #3366aa; font-weight: 500;   "&gt;@gql-x/Composer&lt;/a&gt;, a new library he's working on that's a JavaScript DSL for dynamically composing GraphQL query strings.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A new way for sites to sneakily track users with JavaScript has been demonstrated. It involves &lt;a href="https://javascriptweekly.com/link/185965/rss" style=" color: #3366aa; font-weight: 500;   "&gt;analyzing SSD usage by using the Origin Private File System feature.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🤖 &lt;a href="https://javascriptweekly.com/link/185964/rss" style=" color: #3366aa; font-weight: 500;   "&gt;The results of the &lt;em&gt;State of Web Dev AI&lt;/em&gt; 2026 survey&lt;/a&gt; are ready to enjoy with stats on AI use from over 7,000 developers.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://javascriptweekly.com/open/788/rss" width="1" height="1" /&gt;</description>
      <pubDate>Tue, 2 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://javascriptweekly.com/issues/788</guid>
    </item>
    <item>
      <title>npm and pnpm introduce staged publishing</title>
      <link>https://javascriptweekly.com/issues/787</link>
      <description>

  

    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;div&gt;    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;
&lt;td align="left" style="padding-left: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;#​787 — May 26, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185661/rss" style=" color: #3366aa;"&gt;Read on the Web&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0 12px;"&gt;&lt;p&gt;JavaScript Weekly&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://javascriptweekly.com/link/185663/rss" style=" color: #3366aa;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/kpiq6sqaxoik0wuhn14u.jpg" width="640" style="    line-height: 100%;    "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185663/rss" title="lyra.horse" style=" color: #3366aa;    font-size: 1.1em; line-height: 1.4em;"&gt;JS Crossword: All the Answers are JavaScript&lt;/a&gt;&lt;/span&gt; — This hand-crafted puzzle will seriously stretch your JavaScript knowledge. I’ve seen so many people on social media either cheering having finished it or cursing being stuck…&lt;/p&gt;
  &lt;p&gt;Lyra Rebane &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 I've put some (educational!) tips at the end of this issue.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  &lt;a href="https://javascriptweekly.com/link/185662/rss" style=" color: #3366aa;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/20f71006.png" width="160" height="90" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185662/rss" title="try.expo.dev" style=" color: #3366aa;    font-size: 1.05em;"&gt;Expo UI Hits Stable: Native iOS &amp;amp; Android from One Import&lt;/a&gt;&lt;/span&gt; — From a single import, @expo/ui ships SwiftUI on iOS and Jetpack Compose on Android with the real platform components underneath. SDK 56 also lands native drop-in replacements for seven common React Native community packages.&lt;/p&gt;
  &lt;p&gt;Expo &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #993 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185664/rss" title="docs.npmjs.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;Staged Publishing for npm Packages Goes Live&lt;/a&gt;&lt;/span&gt; — npm’s ‘staged publishing’ model provides a review period with approval required before packages go live on the npm registry. Both &lt;a href="https://javascriptweekly.com/link/185665/rss" style=" color: #3366aa;   "&gt;npm 11.15.0&lt;/a&gt; and &lt;a href="https://javascriptweekly.com/link/185666/rss" style=" color: #3366aa;   "&gt;pnpm 11.3&lt;/a&gt; have added support.&lt;/p&gt;
  &lt;p&gt;The npm Project &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 &lt;a href="https://javascriptweekly.com/link/185667/rss" style=" color: #3366aa; font-weight: 500;"&gt;In this broader writeup&lt;/a&gt;, GitHub also introduced npm's new &lt;code&gt;--allow-*&lt;/code&gt; options to control over where npm is allowed to source packages from.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185668/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Firefox has added Web Serial support in Firefox 151&lt;/a&gt; so you can connect to microcontrollers, 3D printers, and other serial-connected hardware from JS.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Mozilla's Ryan Hunt &lt;a href="https://javascriptweekly.com/link/185711/rss" style=" color: #3366aa; font-weight: 500;   "&gt;says goodbye to asm.js&lt;/a&gt; as Firefox's JS engine now disables optimizations for it by default.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🤖 &lt;a href="https://javascriptweekly.com/link/185669/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Modern Web Guidance&lt;/a&gt; is a suite of expert-vetted skills to guide agents in building modern web experiences, e.g. &lt;code&gt;"begin preloading pages when users hover over important links."&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185670/rss" style=" color: #3366aa; font-weight: 500;   "&gt;TC39 held its latest meeting last week&lt;/a&gt; – a roundup is due soon.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;RELEASES:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185671/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Storybook 10.4&lt;/a&gt; – the frontend component workshop – has added first-class TanStack React support and the ability for agents to set up Storybook in complex apps.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185672/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Node.js v26.2.0 (Current)&lt;/a&gt; and &lt;a href="https://javascriptweekly.com/link/185673/rss" style=" color: #3366aa; font-weight: 500;   "&gt;v24.16.0 (LTS)&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185666/rss" style=" color: #3366aa; font-weight: 500;   "&gt;pnpm 11.3&lt;/a&gt; – Adds &lt;code&gt;pnpm stage&lt;/code&gt; for &lt;a href="https://javascriptweekly.com/link/185664/rss" style=" color: #3366aa; font-weight: 500;   "&gt;staged publishing&lt;/a&gt;, &lt;code&gt;trustLockfile&lt;/code&gt; for setting controls around application of trust policies, native &lt;code&gt;pkg&lt;/code&gt;, &lt;code&gt;repo&lt;/code&gt; and &lt;code&gt;set-script&lt;/code&gt; commands &amp;amp; more.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185674/rss" style=" color: #3366aa; font-weight: 500;   "&gt;npm 12.0 Prerelease&lt;/a&gt;, &lt;a href="https://javascriptweekly.com/link/185675/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Apache ECharts 6.1&lt;/a&gt; (&lt;a href="https://javascriptweekly.com/link/185676/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Demos.&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;📖  Articles and Videos&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185677/rss" title="developer.chrome.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;Chrome Previews &lt;em&gt;Declarative Partial Updates&lt;/em&gt;&lt;/a&gt;&lt;/span&gt; — Two new sets of APIs for working with HTML out-of-order, whether in the doc itself (via &lt;code&gt;&amp;lt;template for&amp;gt;&lt;/code&gt;) or through dynamic insertion (via &lt;code&gt;setHTML&lt;/code&gt;/&lt;code&gt;streamHTML&lt;/code&gt;). Experimental in Chrome 148 but &lt;a href="https://javascriptweekly.com/link/185678/rss" style=" color: #3366aa;   "&gt;polyfills&lt;/a&gt; &lt;a href="https://javascriptweekly.com/link/185679/rss" style=" color: #3366aa;   "&gt;exist&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Pollard and Rosenthal (Chrome) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185680/rss" title="engineeringblog.yelp.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;Optimizing Our Build Times by Migrating from Webpack to Rspack&lt;/a&gt;&lt;/span&gt; — How Yelp cut build times in half with &lt;a href="https://javascriptweekly.com/link/185681/rss" style=" color: #3366aa;   "&gt;Rspack&lt;/a&gt; (a Rust-powered drop-in replacement for webpack) and what they learned about barrel files and re-exports.&lt;/p&gt;
  &lt;p&gt;Benson Pan (Yelp) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185682/rss" title="ghost.build" style=" color: #3366aa;    font-size: 1.05em;"&gt;Unlimited Postgres for Developers and Their Agents&lt;/a&gt;&lt;/span&gt; — &lt;i&gt;ghost&lt;/i&gt; gives your agent unlimited postgres forks. No project limits, no cleanup, 1TB storage, 100 hrs/mo free. &lt;a href="https://javascriptweekly.com/link/185682/rss" style=" color: #3366aa;   "&gt;Try for free&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Ghost &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #993 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185683/rss" title="www.microsoft.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;Microsoft's Analysis of the Recent &lt;em&gt;Mini Shai-Hulud&lt;/em&gt; Compromise&lt;/a&gt;&lt;/span&gt; — A detailed post-mortem of last week’s &lt;a href="https://javascriptweekly.com/link/185684/rss" style=" color: #3366aa;   "&gt;‘Mini Shai-Hulud’&lt;/a&gt; npm security chain compromise.&lt;/p&gt;
  &lt;p&gt;Microsoft Defender Security Research Team &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;🤖 &lt;a href="https://javascriptweekly.com/link/185685/rss" style=" color: #3366aa; font-weight: 500;   "&gt;AI-Assisted Engineers are Burning Out: Is This Fine?&lt;/a&gt; – A look at the negative effects of AI-assisted coding and how to avoid burning yourself out. &lt;cite&gt;Ivan Chepurin&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://javascriptweekly.com/link/185686/rss" style=" color: #3366aa; font-weight: 500;   "&gt;A Simple Clustering Algorithm for Lists&lt;/a&gt; – Some algorithm fun. &lt;cite&gt;Cassidy Williams&lt;/cite&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;🛠 Code &amp;amp; Tools&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185687/rss" title="deno.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;Deno 2.8: The 'Biggest Minor Release' to Date&lt;/a&gt;&lt;/span&gt; — The headline is that Node.js compatibility has jumped from 42% in Deno 2.7 to 76.4% now (higher than Bun). Deno also gets &lt;a href="https://javascriptweekly.com/link/185688/rss" style=" color: #3366aa;   "&gt;huge perf gains&lt;/a&gt; across the board and drops the &lt;code&gt;npm:&lt;/code&gt; prefix requirement when adding/installing packages. Plus many other things, including:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;New commands including: &lt;code&gt;audit fix&lt;/code&gt; to upgrade vulnerable dependencies, &lt;code&gt;pack&lt;/code&gt; to build a project into a npm-publishable tarball, and &lt;code&gt;why&lt;/code&gt; to see why a package has been installed.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://javascriptweekly.com/link/185689/rss" style=" color: #3366aa;   "&gt;Web API support&lt;/a&gt; improvements, including &lt;code&gt;OffscreenCanvas&lt;/code&gt; going stable.&lt;/li&gt;
&lt;li&gt;Node &lt;a href="https://javascriptweekly.com/link/185690/rss" style=" color: #3366aa;   "&gt;&lt;code&gt;module.registerHooks()&lt;/code&gt; support&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Chrome DevTools can now &lt;a href="https://javascriptweekly.com/link/185691/rss" style=" color: #3366aa;   "&gt;inspect Deno's network traffic&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;A &lt;a href="https://javascriptweekly.com/link/185692/rss" style=" color: #3366aa;   "&gt;built-in CPU profiler&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://javascriptweekly.com/link/185693/rss" style=" color: #3366aa;   "&gt;import defer&lt;/a&gt; support.&lt;/li&gt;
&lt;li&gt;V8 14.9 and TypeScript 6.0.3.&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;Bartek Iwańczuk &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185694/rss" title="blog.sentry.io" style=" color: #3366aa;    font-size: 1.05em;"&gt;10 Merged, 34 to Go: Fixing JS Observability Upstream&lt;/a&gt;&lt;/span&gt; — Every JS APM tool monkey-patches libraries. It breaks with ESM, bundlers, and non-Node runtimes. &lt;a href="https://javascriptweekly.com/link/185694/rss" style=" color: #3366aa;   "&gt;Here's how to fix it&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Sentry &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #993 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;span&gt;📄&lt;/span&gt; &lt;a href="https://javascriptweekly.com/link/185695/rss" title="docx.js.org" style=" color: #3366aa;    font-size: 1.05em;"&gt;DOCX 9.7: Build Word &lt;code&gt;.docx&lt;/code&gt; Files in JavaScript&lt;/a&gt;&lt;/span&gt; — A mature, comprehensive library for generating &lt;code&gt;docx&lt;/code&gt; files both client and server side. There’s a &lt;a href="https://javascriptweekly.com/link/185696/rss" style=" color: #3366aa;   "&gt;CodePen-based example&lt;/a&gt; with the basics, plus &lt;a href="https://javascriptweekly.com/link/185697/rss" style=" color: #3366aa;   "&gt;over 100 example scripts&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Dolan Miu &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185698/rss" title="jamiebuilds.github.io" style=" color: #3366aa;    font-size: 1.05em;"&gt;tinykeys 4.0: A Tiny, Modern Library for Keybindings&lt;/a&gt;&lt;/span&gt; — Has a very simple, straightforward API and the page includes live demos.&lt;/p&gt;
  &lt;p&gt;Jamie Kyle &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185699/rss" title="app.codemod.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;An Official Node.js Codemod to Migrate from Axios to &lt;code&gt;fetch&lt;/code&gt;&lt;/a&gt;&lt;/span&gt; — A &lt;a href="https://javascriptweekly.com/link/185700/rss" style=" color: #3366aa;   "&gt;codemod&lt;/a&gt; to transform code using Axios to using the Fetch API instead.&lt;/p&gt;
  &lt;p&gt;The Node.js Team &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;span&gt;📱&lt;/span&gt; &lt;a href="https://javascriptweekly.com/link/185701/rss" title="hot-updater.dev" style=" color: #3366aa;    font-size: 1.05em;"&gt;Hot Updater: Self-Hosted Over-the-Air Updates for React Native&lt;/a&gt;&lt;/span&gt; — A way to deploy updates to apps without app store submissions.&lt;/p&gt;
  &lt;p&gt;Sungyu Kang &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;📊 &lt;a href="https://javascriptweekly.com/link/185702/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Perspective 4.5&lt;/a&gt; – Analytics and data viz component for large and streaming datasets.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185703/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Partytown 0.14.0&lt;/a&gt; – Relocate resource-intensive scripts into Web Workers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185704/rss" style=" color: #3366aa; font-weight: 500;   "&gt;atproto TypeScript SDK Upgrades&lt;/a&gt; – Every package in the &lt;code&gt;@atproto&lt;/code&gt; namespace has been rebuilt, and all are now shipped as ESM.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185705/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Kysely 0.29.0&lt;/a&gt; – Popular type-safe SQL query builder.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185706/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Svader 1.0&lt;/a&gt; – Create GPU-rendered Svelte components.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px;"&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
	&lt;p&gt;📰 Classifieds&lt;/p&gt;
  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;🦊 &lt;a href="https://javascriptweekly.com/link/185707/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Foxit's open-source MCP server&lt;/a&gt; gives AI agents 30+ PDF tools — covering PDF conversion, OCR, merge, signing, and document workflows.&lt;/p&gt;
 
&lt;p&gt;⚙️ &lt;a href="https://javascriptweekly.com/link/185708/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Middleware, but for AI agents&lt;/a&gt;. Compose Claude Code, Codex &amp;amp; Gemini as one TypeScript harness — 100+ agent recipes. &lt;a href="https://javascriptweekly.com/link/185708/rss" style=" color: #3366aa; font-weight: 500;   "&gt;agentfield.ai/github&lt;/a&gt;.&lt;/p&gt;
 
&lt;p&gt;Flaky tests slowing down dev? &lt;a href="https://javascriptweekly.com/link/185709/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Meticulous&lt;/a&gt; gives engineers confidence to ship faster by autonomously testing every edge case of your web app.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;👀  JS Crossword Tips&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;The &lt;a href="https://javascriptweekly.com/link/185663/rss" style=" color: #3366aa; font-weight: 500;   "&gt;JS Crossword&lt;/a&gt; &lt;em&gt;(featured at the top of the issue)&lt;/em&gt; is tough, so I have some educational tips and JS quirks to help you on your way:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The crossword runs in the browser, so the &lt;code&gt;window&lt;/code&gt; global object is in play. For example: &lt;code&gt;find(0)&lt;/code&gt; and &lt;code&gt;name&lt;/code&gt; return things in the browser, but not in Node.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Look at the 'playground' beneath the puzzle. While a clue may say &lt;code&gt;object&lt;/code&gt;, the expected result may be more detailed.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A number like 67 can be represented multiple ways. For example: &lt;code&gt;0103 == 67&lt;/code&gt; and &lt;code&gt;0x43 == 67&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You can go further with prefixes and suffixes on numbers. For example: &lt;code&gt;123.&lt;/code&gt;, &lt;code&gt;+123&lt;/code&gt;, and &lt;code&gt;+123.&lt;/code&gt; all equal &lt;code&gt;123&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Assignments evaluate to the value that was assigned.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185710/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Tagged template literals&lt;/a&gt; offer a… &lt;em&gt;quirky&lt;/em&gt; way to call functions. Consider that this works in JS: &lt;code&gt;console.log`hi`&lt;/code&gt; (though this is &lt;em&gt;not&lt;/em&gt; equivalent to &lt;code&gt;console.log('hi')&lt;/code&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;'&lt;/code&gt; is not in the allowed character list.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://javascriptweekly.com/open/787/rss" width="1" height="1" /&gt;</description>
      <pubDate>Tue, 26 May 2026 00:00:00 +0000</pubDate>
      <guid>https://javascriptweekly.com/issues/787</guid>
    </item>
    <item>
      <title>Dr. Axel's blog is gone (for now)</title>
      <link>https://javascriptweekly.com/issues/786</link>
      <description>

  

    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;div&gt;    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;
&lt;td align="left" style="padding-left: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;#​786 — May 19, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185305/rss" style=" color: #3366aa;"&gt;Read on the Web&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0 12px;"&gt;&lt;p&gt;JavaScript Weekly&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://javascriptweekly.com/link/185307/rss" style=" color: #3366aa;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ql3ejie7zibdm4rd25zh.jpg" width="640" style="    line-height: 100%;    "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;span&gt;RFC:&lt;/span&gt; &lt;a href="https://javascriptweekly.com/link/185307/rss" title="github.com" style=" color: #3366aa;    font-size: 1.1em; line-height: 1.4em;"&gt;It’s Time for &lt;code&gt;npm&lt;/code&gt; to Make Install Scripts Opt-In&lt;/a&gt;&lt;/span&gt; — npm is the only major package manager that runs dependency install scripts (e.g. &lt;code&gt;postinstall&lt;/code&gt;) by default, and they’ve become too much of a security weakness, says Jamie, who works for GitHub (maintainers of npm). This RFC features further discussion of the idea and the tradeoffs involved.&lt;/p&gt;
  &lt;p&gt;Jamie Magee &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 &lt;a href="https://javascriptweekly.com/link/185308/rss" style=" color: #3366aa; font-weight: 500;"&gt;npq&lt;/a&gt; is a tool that makes &lt;code&gt;npm install&lt;/code&gt;s safer. It stands in front of &lt;code&gt;npm&lt;/code&gt; and audits packages before installing them, including the presence of pre/post install scripts.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  &lt;a href="https://javascriptweekly.com/link/185306/rss" style=" color: #3366aa;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/f5067c40.png" width="120" height="120" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185306/rss" title="fandf.co" style=" color: #3366aa;    font-size: 1.05em;"&gt;How Depot Built a CI Orchestrator on AWS Lambda&lt;/a&gt;&lt;/span&gt; — Long-running CI orchestration without long-lived servers. Depot rebuilt their CI engine using AWS Lambda durable functions — stateful, callback-driven, and crash-recoverable. A deep dive into the run-workflow-job hierarchy powering Depot CI.&lt;/p&gt;
  &lt;p&gt;Depot &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #993 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185309/rss" title="safedep.io" style=" color: #3366aa;    font-size: 1.05em;"&gt;&lt;em&gt;Mini Shai-Hulud&lt;/em&gt; Hits: 300+ Malicious npm Packages Published&lt;/a&gt;&lt;/span&gt; — The &lt;em&gt;"&lt;a href="https://javascriptweekly.com/link/185310/rss" style=" color: #3366aa;   "&gt;Shai-Hulud&lt;/a&gt;"&lt;/em&gt; class of npm ecosystem attacks continues to rumble on. Today, &lt;a href="https://javascriptweekly.com/link/185311/rss" style=" color: #3366aa;   "&gt;hundreds more packages&lt;/a&gt; – including popular ones from the &lt;code&gt;antv&lt;/code&gt; family and &lt;code&gt;timeago.js&lt;/code&gt; – were hit.&lt;/p&gt;
  &lt;p&gt;SafeDep Team &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;😱 Dr. Axel Rauschmayer (JavaScript legend and former JS Weekly editor) has &lt;a href="https://javascriptweekly.com/link/185312/rss" style=" color: #3366aa; font-weight: 500;   "&gt;taken his blog and JavaScript books off the Web&lt;/a&gt; due to being overwhelmed by AI crawlers. You can, however, still &lt;a href="https://javascriptweekly.com/link/185313/rss" style=" color: #3366aa; font-weight: 500;   "&gt;purchase his fantastic books here.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The Bun saga continues. Despite once &lt;a href="https://javascriptweekly.com/link/185314/rss" style=" color: #3366aa; font-weight: 500;   "&gt;playing down its significance&lt;/a&gt;, the &lt;a href="https://javascriptweekly.com/link/185315/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Rust-based rewrite of Bun has been merged&lt;/a&gt;, though there are &lt;a href="https://javascriptweekly.com/link/185316/rss" style=" color: #3366aa; font-weight: 500;   "&gt;questions over the quality&lt;/a&gt; of the AI-ported code. Much &lt;a href="https://javascriptweekly.com/link/185317/rss" style=" color: #3366aa; font-weight: 500;   "&gt;discussion ensued on Hacker News.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185318/rss" style=" color: #3366aa; font-weight: 500;   "&gt;The Deno team is teasing Deno 2.8&lt;/a&gt;, due to be released this week. Significant Node.js compatibility improvements, &lt;code&gt;import defer&lt;/code&gt;, and TypeScript 6.0.3 support await.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The Chrome and Edge teams are working on &lt;a href="https://javascriptweekly.com/link/185319/rss" style=" color: #3366aa; font-weight: 500;   "&gt;a new &lt;code&gt;&amp;lt;install&amp;gt;&lt;/code&gt; HTML element&lt;/a&gt; for browsers to render a 'trusted install button' for PWAs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;em&gt;Express.js&lt;/em&gt; project has &lt;a href="https://javascriptweekly.com/link/185320/rss" style=" color: #3366aa; font-weight: 500;   "&gt;an all new look&lt;/a&gt;, including a new site, logo, and &lt;a href="https://javascriptweekly.com/link/185321/rss" style=" color: #3366aa; font-weight: 500;   "&gt;improved docs.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;RELEASES:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185322/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Angular 22 Release Candidate&lt;/a&gt; – Final is due in early June. Expect &lt;a href="https://javascriptweekly.com/link/185323/rss" style=" color: #3366aa; font-weight: 500;   "&gt;signal-based forms&lt;/a&gt; and the &lt;a href="https://javascriptweekly.com/link/185324/rss" style=" color: #3366aa; font-weight: 500;   "&gt;OnPush&lt;/a&gt; change detection strategy becoming default.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185325/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Bun 1.3.14&lt;/a&gt; – The alternative JS runtime gets &lt;code&gt;Bun.Image&lt;/code&gt;, more HTTP/2 and HTTP/3 support, and more Node compatibility improvements.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185326/rss" style=" color: #3366aa; font-weight: 500;   "&gt;ESLint Config Inspector 3.0&lt;/a&gt; – A visual tool for inspecting and understanding your ESLint flat configs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185327/rss" style=" color: #3366aa; font-weight: 500;   "&gt;TypeORM 1.0&lt;/a&gt;, &lt;a href="https://javascriptweekly.com/link/185328/rss" style=" color: #3366aa; font-weight: 500;   "&gt;ESLint 10.4.0&lt;/a&gt;, &lt;a href="https://javascriptweekly.com/link/185329/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Relay 21.0&lt;/a&gt;, &lt;a href="https://javascriptweekly.com/link/185330/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Rolldown 1.0.1&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;📖  Articles and Videos&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://javascriptweekly.com/link/185331/rss" style=" color: #3366aa;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/echd5tqlridpzz6jd2bx.jpg" width="640" style="    line-height: 100%;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;span&gt;🤖&lt;/span&gt; &lt;a href="https://javascriptweekly.com/link/185331/rss" title="blog.isquaredsoftware.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;Mark Erikson's Agent Setup, Workflow, and Tools&lt;/a&gt;&lt;/span&gt; — Mark, well known for maintaining Redux and creating Redux Toolkit, goes deep into his daily development workflow, including his use of &lt;a href="https://javascriptweekly.com/link/185332/rss" style=" color: #3366aa;   "&gt;OpenCode&lt;/a&gt; (an open source JavaScript-powered coding agent), how he manages his knowledge base, tasks, and more.&lt;/p&gt;
  &lt;p&gt;Mark Erikson &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185333/rss" title="go.clerk.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;Clerk API Keys Are Now Generally Available&lt;/a&gt;&lt;/span&gt; — Let your users create credentials that delegate access to your API. Verify server-side, revoke instantly — all via the Backend SDK.&lt;/p&gt;
  &lt;p&gt;Clerk &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #993 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;span&gt;📗&lt;/span&gt; &lt;a href="https://javascriptweekly.com/link/185334/rss" title="www.thenodebook.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;NodeBook: An Advanced Guide to Node.js Internals&lt;/a&gt;&lt;/span&gt; — Eight in-depth chapters for understanding Node.js internals, covering topics like &lt;a href="https://javascriptweekly.com/link/185335/rss" style=" color: #3366aa;   "&gt;event loop internals&lt;/a&gt;, &lt;a href="https://javascriptweekly.com/link/185336/rss" style=" color: #3366aa;   "&gt;what V8 does&lt;/a&gt;, &lt;a href="https://javascriptweekly.com/link/185337/rss" style=" color: #3366aa;   "&gt;streams&lt;/a&gt;, &lt;a href="https://javascriptweekly.com/link/185338/rss" style=" color: #3366aa;   "&gt;module resolution&lt;/a&gt;, and &lt;a href="https://javascriptweekly.com/link/185339/rss" style=" color: #3366aa;   "&gt;async/await&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Ishtmeet Singh &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185340/rss" title="css-tricks.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;Soon We Can Finally Banish JavaScript to the &lt;em&gt;ShadowRealm&lt;/em&gt;&lt;/a&gt;&lt;/span&gt; — A tour of the &lt;em&gt;in-progress&lt;/em&gt; &lt;a href="https://javascriptweekly.com/link/185341/rss" style=" color: #3366aa;   "&gt;TC39 proposal&lt;/a&gt; for running JavaScript in an isolated ‘pseudo-realm’ with its own globals and intrinsics. Handy for third-party code or anything you want to keep away from global scope.&lt;/p&gt;
  &lt;p&gt;Mat Marquis &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📄 &lt;a href="https://javascriptweekly.com/link/185342/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Hardening TanStack After the npm Compromise&lt;/a&gt; – What TanStack is doing to improve supply chain security after &lt;a href="https://javascriptweekly.com/link/185343/rss" style=" color: #3366aa; font-weight: 500;   "&gt;an attacker published&lt;/a&gt; malicious versions of TanStack packages last week. &lt;cite&gt;The TanStack Team&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📺 &lt;a href="https://javascriptweekly.com/link/185344/rss" style=" color: #3366aa; font-weight: 500;   "&gt;The &lt;em&gt;TanStack Start&lt;/em&gt; Story: Tanner Linsley on Competing with Next.js&lt;/a&gt; – A candid 40-minute interview with TanStack’s founder. &lt;cite&gt;Nuno Maduro&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://javascriptweekly.com/link/185345/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Cross-Document View Transitions: The Gotchas Nobody Mentions&lt;/a&gt; &lt;cite&gt;Durgesh Rajubhai Pawar (CSS Tricks)&lt;/cite&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;🛠 Code &amp;amp; Tools&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://javascriptweekly.com/link/185346/rss" style=" color: #3366aa;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/wbo5vpin96clokiyeke5.jpg" width="640" style="    line-height: 100%;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185346/rss" title="orval.dev" style=" color: #3366aa;    font-size: 1.05em;"&gt;Orval: Generate Type-Safe Clients from OpenAPI/Swagger Specs&lt;/a&gt;&lt;/span&gt; — Given a valid OpenAPI v3 or Swagger v2 spec, generate models, requests, hooks, and mocks for React, Vue, Svelte, Solid, and Hono apps, or even plain &lt;code&gt;fetch&lt;/code&gt;.&lt;/p&gt;
  &lt;p&gt;Victor Bury &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185347/rss" title="github.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;Brownies: Browser Storage as a Plain Object, With Change Events&lt;/a&gt;&lt;/span&gt; — One tiny API over cookies, localStorage, sessionStorage and IndexedDB. Typed values survive automatically, and you get &lt;code&gt;subscribe()&lt;/code&gt; for change events.&lt;/p&gt;
  &lt;p&gt;Francisco Presencia &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185348/rss" title="www.tigerdata.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;Querying a Billion Rows Shouldn't Freeze Your API&lt;/a&gt;&lt;/span&gt; — TimescaleDB extends Postgres so analytics queries stay fast at scale. No pipeline, no drift. &lt;a href="https://javascriptweekly.com/link/185348/rss" style=" color: #3366aa;   "&gt;$1000 credit to start&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Tiger Data (creators of TimescaleDB) &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #993 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;span&gt;🖼️&lt;/span&gt; &lt;a href="https://javascriptweekly.com/link/185349/rss" title="nodeca.github.io" style=" color: #3366aa;    font-size: 1.05em;"&gt;Pica 10.0: High Quality Image Resizing in the Browser&lt;/a&gt;&lt;/span&gt; — High quality in-browser image resizing that leans on WASM and Web Workers or falls back to pure JS as necessary. &lt;a href="https://javascriptweekly.com/link/185350/rss" style=" color: #3366aa;   "&gt;v10&lt;/a&gt; is a modernization build (the first since 2021) that adds ESM and split builds and migrates to TypeScript. &lt;a href="https://javascriptweekly.com/link/185351/rss" style=" color: #3366aa;   "&gt;GitHub repo.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Vitaly Puzrin &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;span&gt;🗓️&lt;/span&gt; &lt;a href="https://javascriptweekly.com/link/185352/rss" title="svar.dev" style=" color: #3366aa;    font-size: 1.05em;"&gt;SVAR Calendar: A Calendar Component for React, Svelte and Vue&lt;/a&gt;&lt;/span&gt; — A flexible calendar component with a MIT-licensed core and extended commercial version. &lt;a href="https://javascriptweekly.com/link/185353/rss" style=" color: #3366aa;   "&gt;Here’s a live demo&lt;/a&gt; of the open source version.&lt;/p&gt;
  &lt;p&gt;XB Software Sp. &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 &lt;a href="https://javascriptweekly.com/link/185354/rss" style=" color: #3366aa; font-weight: 500;"&gt;Schedule-X&lt;/a&gt; is another great option in this space and &lt;a href="https://javascriptweekly.com/link/185355/rss" style=" color: #3366aa; font-weight: 500;"&gt;v4.6&lt;/a&gt; just landed.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185356/rss" title="fate.technology" style=" color: #3366aa;    font-size: 1.05em;"&gt;Fate 1.0: A Modern Data Framework for React&lt;/a&gt;&lt;/span&gt; — A new data framework from former Jest lead and ex-Meta engineer Christoph Nakazawa.&lt;/p&gt;
  &lt;p&gt;Christoph Nakazawa &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185357/rss" title="github.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;Alien Signals: 'The Lightest Signal Library'&lt;/a&gt;&lt;/span&gt; — Boils the best of Vue, Preact and Svelte’s approaches down into the lightest signal library going. A push-pull reactivity core so well-tuned it got merged back into Vue.&lt;/p&gt;
  &lt;p&gt;Johnson Chu &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185358/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Critical 8.0&lt;/a&gt; – Addy Osmani's library for extracting and inlining above-the-fold CSS into HTML.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185359/rss" style=" color: #3366aa; font-weight: 500;   "&gt;SQL Formatter 15.8&lt;/a&gt; – Pretty-printer for SQL queries. (&lt;a href="https://javascriptweekly.com/link/185360/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Demo&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185361/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Shiki 4.1&lt;/a&gt; – Popular, powerful syntax highlighter.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185362/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Redux Toolkit 2.12.0&lt;/a&gt; and &lt;a href="https://javascriptweekly.com/link/185363/rss" style=" color: #3366aa; font-weight: 500;   "&gt;React Redux 9.3&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185364/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Vue.js Language Tools 3.3&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px;"&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
	&lt;p&gt;📰 Classifieds&lt;/p&gt;
  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185365/rss" style=" color: #3366aa; font-weight: 500;   "&gt;HyperFormula&lt;/a&gt;: The headless spreadsheet engine with 400+ Excel-compatible formulas. Run complex calculations at high speed.&lt;/p&gt;
 
&lt;p&gt;Flaky tests slowing down dev? &lt;a href="https://javascriptweekly.com/link/185366/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Meticulous&lt;/a&gt; gives engineers confidence to ship faster by autonomously testing every edge case of your web app.&lt;/p&gt;
 
&lt;p&gt;⚙️ &lt;a href="https://javascriptweekly.com/link/185367/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Middleware, but for AI agents&lt;/a&gt;. Compose Claude Code, Codex &amp;amp; Gemini as one TypeScript harness — 100+ agent recipes. &lt;a href="https://javascriptweekly.com/link/185367/rss" style=" color: #3366aa; font-weight: 500;   "&gt;agentfield.ai/github&lt;/a&gt;.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;📢  Elsewhere in the ecosystem&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://javascriptweekly.com/link/185368/rss" style=" color: #3366aa;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/azx9afpomjipp3vdrpxi.jpg" width="640" style="    line-height: 100%;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Andrea Giammarchi &lt;a href="https://javascriptweekly.com/link/185368/rss" style=" color: #3366aa; font-weight: 500;   "&gt;proposes &lt;code&gt;JSONRegistry&lt;/code&gt;&lt;/a&gt; &lt;em&gt;(above)&lt;/em&gt;, an alternative to &lt;code&gt;JSON&lt;/code&gt; that lets you define a registry for serializing and reviving custom/branded types.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🐝 &lt;a href="https://javascriptweekly.com/link/185369/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Wasp&lt;/a&gt; is a Rails-like framework for Node, React and Prisma. It started life as a new programming language of its own before moving to JavaScript. Founder Matija Sosic tells the story in &lt;a href="https://javascriptweekly.com/link/185370/rss" style=" color: #3366aa; font-weight: 500;   "&gt;5 Years and $5M Later: Inventing a New Programming Language for Web Development Was a Mistake&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Did you know that &lt;a href="https://javascriptweekly.com/link/185371/rss" style=" color: #3366aa; font-weight: 500;   "&gt;some browsers render certain sites 'differently'&lt;/a&gt; on an ad hoc basis? Firefox and Safari ship with &lt;a href="https://javascriptweekly.com/link/185372/rss" style=" color: #3366aa; font-weight: 500;   "&gt;built-in 'tweaks' for popular sites&lt;/a&gt; to fix elements that don't render correctly by default.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🤖 Simon Willison shares &lt;a href="https://javascriptweekly.com/link/185373/rss" style=" color: #3366aa; font-weight: 500;   "&gt;a quick look at the last six months in LLMs.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://javascriptweekly.com/open/786/rss" width="1" height="1" /&gt;</description>
      <pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate>
      <guid>https://javascriptweekly.com/issues/786</guid>
    </item>
    <item>
      <title>Cryptographically valid malware hits npm</title>
      <link>https://javascriptweekly.com/issues/785</link>
      <description>

  

    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;div&gt;    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;
&lt;td align="left" style="padding-left: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;#​785 — May 12, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185046/rss" style=" color: #3366aa;"&gt;Read on the Web&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0 12px;"&gt;&lt;p&gt;JavaScript Weekly&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://javascriptweekly.com/link/185001/rss" style=" color: #3366aa;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ckou53i84jyf1ujrgken.jpg" width="640" style="    line-height: 100%;    "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185001/rss" title="tanstack.com" style=" color: #3366aa;    font-size: 1.1em; line-height: 1.4em;"&gt;Anatomy of the TanStack npm Compromise&lt;/a&gt;&lt;/span&gt; — A new strain of the &lt;a href="https://javascriptweekly.com/link/185002/rss" style=" color: #3366aa;   "&gt;Shai-Hulud worm&lt;/a&gt; pushed malicious versions of TanStack packages to npm yesterday (containing a tripwire that would delete files if it detected token revocation), though &lt;a href="https://javascriptweekly.com/link/185003/rss" style=" color: #3366aa;   "&gt;it hit ~170 other packages too&lt;/a&gt;. &lt;strong&gt;Maintainer credentials weren’t stolen&lt;/strong&gt;, with the attack instead chaining &lt;code&gt;pull_request_target&lt;/code&gt; abuse, cache poisoning, and OIDC token theft from CI &lt;em&gt;memory&lt;/em&gt;.&lt;/p&gt;
  &lt;p&gt;Tanner Linsley &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;❓ &lt;strong&gt;What should you do?&lt;/strong&gt; Consider an install-time cooldown (e.g. with &lt;code&gt;npm config set min-release-age=7&lt;/code&gt; or &lt;a href="https://javascriptweekly.com/link/185004/rss" style=" color: #3366aa; font-weight: 500;"&gt;pnpm&lt;/a&gt;'s &lt;code&gt;minimumReleaseAge&lt;/code&gt;), as the packages were only compromised for 26 minutes. Plus, audit your GitHub Actions workflows for security issues with a tool like &lt;a href="https://javascriptweekly.com/link/185005/rss" style=" color: #3366aa; font-weight: 500;"&gt;zizmor&lt;/a&gt;.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  &lt;a href="https://javascriptweekly.com/link/185000/rss" style=" color: #3366aa;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/8c7fe4d2.jpeg" width="155" height="155" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185000/rss" title="sentry.io" style=" color: #3366aa;    font-size: 1.05em;"&gt;Next.js Debugging Workshop: Logs, Tracing, Full Context&lt;/a&gt;&lt;/span&gt; — Stop jumping between tools to piece together a Next.js bug. Sentry's hands-on workshop shows you how to write logs that explain where, what, and why, then connect them to traces across client and Node runtimes. &lt;a href="https://javascriptweekly.com/link/185000/rss" style=" color: #3366aa;   "&gt;Register today&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Sentry &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #993 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185006/rss" title="voidzero.dev" style=" color: #3366aa;    font-size: 1.05em;"&gt;Announcing Rolldown 1.0: The High Performance JS Bundler&lt;/a&gt;&lt;/span&gt; — The Rust-based bundler built as the backbone for Vite 8 reaches a stable v1.0. You get huge performance gains, but with Rollup plugin API compatibility: it's 10–30x faster than Rollup, with early adopters reporting big drops in build time.&lt;/p&gt;
  &lt;p&gt;The VoidZero Team &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The &lt;a href="https://javascriptweekly.com/link/185007/rss" style=" color: #3366aa; font-weight: 500;   "&gt;notes from Node.js's recent collaboration summit&lt;/a&gt; make for good reading if you want to see what the Node team is working on right now.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Regarding Bun's experimental port to Rust (from Zig), Jarred Sumner says the now-960k LOC rewrite &lt;a href="https://javascriptweekly.com/link/185008/rss" style=" color: #3366aa; font-weight: 500;   "&gt;passes 99.8% of Bun's pre-existing test suite.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🤖 A developer has &lt;a href="https://javascriptweekly.com/link/185047/rss" style=" color: #3366aa; font-weight: 500;   "&gt;launched a challenge to port NetHack to JavaScript.&lt;/a&gt; Can LLMs port the complex roguelike game &lt;em&gt;perfectly?&lt;/em&gt; So far, no, with &lt;a href="https://javascriptweekly.com/link/185047/rss" style=" color: #3366aa; font-weight: 500;   "&gt;the leaderboard&lt;/a&gt; showing a &lt;em&gt;transpiled&lt;/em&gt; version coming closest.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Did you know &lt;a href="https://javascriptweekly.com/link/185017/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Firefox has a &lt;code&gt;$$$&lt;/code&gt; helper&lt;/a&gt; for querying through the Shadow DOM?&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;RELEASES:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185009/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Jest 30.4.0&lt;/a&gt; – A strong release for the popular JavaScript testing framework as it improves ESM, Temporal and React 19 support.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185010/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Node 26.1 (Current)&lt;/a&gt; – Last week's &lt;a href="https://javascriptweekly.com/link/185011/rss" style=" color: #3366aa; font-weight: 500;   "&gt;big Node 26 release&lt;/a&gt; may have had the Temporal API, but 26.1 adds (experimental) official FFI support. I did a writeup of what this means at the end of &lt;a href="https://javascriptweekly.com/link/185012/rss" style=" color: #3366aa; font-weight: 500;   "&gt;last week's Node Weekly.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185013/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Electron 42&lt;/a&gt; – Updates to Chromium 148/Node 24.15/V8 14.8 and no longer downloads the Electron binary in a &lt;code&gt;postinstall&lt;/code&gt; script for added security.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185014/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Capacitor 9.0 Alpha 1&lt;/a&gt;, &lt;a href="https://javascriptweekly.com/link/185015/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Playwright 1.60.0&lt;/a&gt;, &lt;a href="https://javascriptweekly.com/link/185016/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Mantine 9.2&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;📖  Articles and Videos&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185051/rss" title="33jsconcepts.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;33 JavaScript Concepts&lt;/a&gt;&lt;/span&gt; — What began life as a &lt;a href="https://javascriptweekly.com/link/185052/rss" style=" color: #3366aa;   "&gt;Medium article&lt;/a&gt; and turned into &lt;a href="https://javascriptweekly.com/link/185053/rss" style=" color: #3366aa;   "&gt;a popular GitHub repo&lt;/a&gt; is now a full site covering a wide array of JavaScript concepts, &lt;a href="https://javascriptweekly.com/link/185054/rss" style=" color: #3366aa;   "&gt;even going beyond the 33&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Leonardo Maldonado &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185018/rss" title="jadjoubran.io" style=" color: #3366aa;    font-size: 1.05em;"&gt;9 Times the Web Platform Was Influenced by JavaScript Libraries&lt;/a&gt;&lt;/span&gt; — How various libraries like Lodash, Dojo and jQuery often did the “&lt;em&gt;R&amp;amp;D work in production&lt;/em&gt;” for various features that eventually ended up in browser APIs.&lt;/p&gt;
  &lt;p&gt;Jad Joubran &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185019/rss" title="fandf.co" style=" color: #3366aa;    font-size: 1.05em;"&gt;Easy and Rapid Azure Migrations. Azure Copilot Migration Agent&lt;/a&gt;&lt;/span&gt; — Check out Microsoft’s &lt;a href="https://javascriptweekly.com/link/185019/rss" style=" color: #3366aa;   "&gt;Introduction to Azure Copilot Agents free learning module&lt;/a&gt; to learn more and &lt;a href="https://javascriptweekly.com/link/185019/rss" style=" color: #3366aa;   "&gt;try it yourself&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Microsoft Azure Copilot Migration Agent &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #993 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185020/rss" title="evilmartians.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;From React to Web Components: A Migration That Saved 100 KB&lt;/a&gt;&lt;/span&gt; — &lt;em&gt;“How I migrated a site from React to native Web Components, why that worked better than I expected, and how the patterns I used along the way grew into a small library called &lt;a href="https://javascriptweekly.com/link/185021/rss" style=" color: #3366aa;   "&gt;nanotags&lt;/a&gt;.”&lt;/em&gt;&lt;/p&gt;
  &lt;p&gt;Pavel Grinchenko (Evil Martians) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185048/rss" title="valibot.dev" style=" color: #3366aa;    font-size: 1.05em;"&gt;Why Migrate to Valibot?&lt;/a&gt;&lt;/span&gt; — &lt;a href="https://javascriptweekly.com/link/185049/rss" style=" color: #3366aa;   "&gt;Valibot&lt;/a&gt; is a light, modular TypeScript schema validation library and an alternative to the likes of Zod. &lt;a href="https://javascriptweekly.com/link/185050/rss" style=" color: #3366aa;   "&gt;v1.4.0&lt;/a&gt; just dropped, too.&lt;/p&gt;
  &lt;p&gt;Fabian Hiller &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📄 &lt;a href="https://javascriptweekly.com/link/185022/rss" style=" color: #3366aa; font-weight: 500;   "&gt;A Vanilla Routing Experiment&lt;/a&gt; – A look at the tripping points when building client-side routing for a small site &lt;em&gt;without&lt;/em&gt; using a framework. &lt;cite&gt;Daniela Baron&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://javascriptweekly.com/link/185023/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Preserving DOM Changes Across Live Reloads&lt;/a&gt;  &lt;cite&gt;Kitty Giraudel&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://javascriptweekly.com/link/185024/rss" style=" color: #3366aa; font-weight: 500;   "&gt;I Keep Tripping Over &lt;code&gt;true, false, true&lt;/code&gt;&lt;/a&gt; &lt;cite&gt;Matt Smith&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://javascriptweekly.com/link/185025/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Stop Using Yarn Classic&lt;/a&gt;  &lt;cite&gt;Nicolas Charpentier&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://javascriptweekly.com/link/185026/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Introducing TanStack Form&lt;/a&gt; &lt;cite&gt;Adam Rackis&lt;/cite&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;🛠 Code &amp;amp; Tools&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://javascriptweekly.com/link/185027/rss" style=" color: #3366aa;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/aspuyiohodby5rhpai86.jpg" width="640" style="    line-height: 100%;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185027/rss" title="zero-native.dev" style=" color: #3366aa;    font-size: 1.05em;"&gt;zero-native: Build Desktop Apps with Zig + WebView&lt;/a&gt;&lt;/span&gt; — Vercel Labs’ entry into the &lt;a href="https://javascriptweekly.com/link/185028/rss" style=" color: #3366aa;   "&gt;Neutralinojs&lt;/a&gt;/Electron/Tauri space for building native HTML+JS desktop apps atop a Zig core and the system WebView &lt;em&gt;or&lt;/em&gt; Chromium. There are &lt;a href="https://javascriptweekly.com/link/185029/rss" style=" color: #3366aa;   "&gt;examples&lt;/a&gt; covering how to build vanilla, React, Svelte, and Vue apps on it. &lt;a href="https://javascriptweekly.com/link/185030/rss" style=" color: #3366aa;   "&gt;GitHub repo.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Vercel &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185031/rss" title="www.tigerdata.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;That API Call Takes 3 Seconds. It's Not the Network&lt;/a&gt;&lt;/span&gt; — It's the analytics query behind it. TimescaleDB extends Postgres so queries stay fast at scale. &lt;a href="https://javascriptweekly.com/link/185031/rss" style=" color: #3366aa;   "&gt;$1000 credit to start&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Tiger Data (creators of TimescaleDB) &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #993 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185032/rss" title="github.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;Wakaru: Pull Apart Minified JavaScript Bundles&lt;/a&gt;&lt;/span&gt; — A tool you can feed minified bundled code and get readable modules back, whether for recovering code, reverse-engineering, or security auditing. You can &lt;a href="https://javascriptweekly.com/link/185033/rss" style=" color: #3366aa;   "&gt;try it online here.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Pionxzh &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/185034/rss" title="" style=" color: #3366aa;    font-size: 1.05em;"&gt;BlueJS: Compile JavaScript to Tiny Binaries&lt;/a&gt;&lt;/span&gt; — 
An ahead-of-time compiler for JavaScript with QuickJS optionally embedded for dynamic features and package support. While &lt;em&gt;closed source&lt;/em&gt;, the raw numbers are compelling (~5ms startup; 3.8MB peak memory use, and a GUI app in a 1.2MB binary).
&lt;/p&gt;
  &lt;p&gt;BlueJS &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 &lt;a href="https://javascriptweekly.com/link/185035/rss" style=" color: #3366aa; font-weight: 500;"&gt;PerryTS&lt;/a&gt; is another (open source) option in this space worth a look.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185036/rss" style=" color: #3366aa; font-weight: 500;   "&gt;pnpm 11.1&lt;/a&gt; – Supports a new &lt;code&gt;gh:&lt;/code&gt; prefix for GitHub Packages, &lt;code&gt;pnpm bugs&lt;/code&gt; opens a package's bug tracker in the browser, and &lt;code&gt;pnpm audit signatures&lt;/code&gt; verifies ECDSA registry signatures against keys.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185037/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Astro 6.3&lt;/a&gt; – Adds experimental support for advanced routing: control how requests flow through your app, with full support for frameworks like &lt;a href="https://javascriptweekly.com/link/185038/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Hono&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185039/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Syncpack 15.0&lt;/a&gt; – Large JavaScript monorepo dependency version manager. Now with full support for pnpm and Bun catalogs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📱 &lt;a href="https://javascriptweekly.com/link/185040/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Expo SDK 56 Beta&lt;/a&gt; – The popular React Native framework gets a speed boost and the Jetpack Compose and SwiftUI APIs go stable.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/185041/rss" style=" color: #3366aa; font-weight: 500;   "&gt;MDXEditor 4.0&lt;/a&gt; – Powerful Markdown editor React component.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px;"&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
	&lt;p&gt;📰 Classifieds&lt;/p&gt;
  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;Flaky tests slowing down dev? &lt;a href="https://javascriptweekly.com/link/185043/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Meticulous&lt;/a&gt; gives engineers confidence to ship faster by autonomously testing every edge case of your web app.&lt;/p&gt;
 
&lt;p&gt;🔎 Detect, Highlight, Fix Accessibility - Test for WCAG &amp;amp; ARIA in the browser! Get &lt;a href="https://javascriptweekly.com/link/185044/rss" style=" color: #3366aa; font-weight: 500;   "&gt;A11yInspect Pro&lt;/a&gt; Free for 1 year - A developer friendly tool. &lt;a href="https://javascriptweekly.com/link/185044/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Join the waitlist&lt;/a&gt;.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://javascriptweekly.com/open/785/rss" width="1" height="1" /&gt;</description>
      <pubDate>Tue, 12 May 2026 00:00:00 +0000</pubDate>
      <guid>https://javascriptweekly.com/issues/785</guid>
    </item>
  </channel>
</rss>
