<?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>Flow vs TypeScript in 2026</title>
      <link>https://javascriptweekly.com/issues/790</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;#​790 — June 16, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/186642/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/186567/rss" style=" color: #3366aa;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/nylqu7hc7vyxog0czncx.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/186567/rss" title="medium.com" style=" color: #3366aa;    font-size: 1.1em; line-height: 1.4em;"&gt;Flow for TypeScript Users in 2026&lt;/a&gt;&lt;/span&gt; — &lt;a href="https://javascriptweekly.com/link/186568/rss" style=" color: #3366aa;   "&gt;Flow&lt;/a&gt; is Meta's mature typed dialect of JavaScript, and over the years its syntax has converged closely with TypeScript's. This post walks through where the two now differ:  Flow's stricter defaults reject several crash-prone patterns TypeScript's &lt;code&gt;strict&lt;/code&gt; mode accepts, and it adds features of its own, like exhaustive &lt;code&gt;match&lt;/code&gt; expressions.&lt;/p&gt;
  &lt;p&gt;George Zahariev (Meta) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=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/186566/rss" style=" color: #3366aa;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/d3d40cc9.jpg" width="110" height="110" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/186566/rss" title="frontendmasters.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;Free Claude Code Course from Anthropic + Master.Dev&lt;/a&gt;&lt;/span&gt; — Coding is changing fast, and the engineers who thrive will be the ones who direct AI instead of guessing at it. Lydia Hallie from Anthropic teaches exactly that in our Claude Code course, &lt;a href="https://javascriptweekly.com/link/186566/rss" style=" color: #3366aa;   "&gt;now free for everyone&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Master.dev &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #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/186569/rss" title="github.blog" style=" color: #3366aa;    font-size: 1.05em;"&gt;npm v12 to Stop Running Install Scripts by Default&lt;/a&gt;&lt;/span&gt; — The forthcoming npm v12 will no longer execute &lt;code&gt;preinstall&lt;/code&gt;/&lt;code&gt;install&lt;/code&gt;/&lt;code&gt;postinstall&lt;/code&gt; scripts, unless you explicitly allow them. You can get ready now by using &lt;a href="https://javascriptweekly.com/link/186570/rss" style=" color: #3366aa;   "&gt;npm 11.16.0&lt;/a&gt; which prints warnings about anything v12 &lt;em&gt;would&lt;/em&gt; block.&lt;/p&gt;
  &lt;p&gt;GitHub &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;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/186571/rss" title="htmx.org" style=" color: #3366aa;    font-size: 1.05em;"&gt;Code is Cheap(er)&lt;/a&gt;&lt;/span&gt; — The creator of &lt;a href="https://javascriptweekly.com/link/186572/rss" style=" color: #3366aa;   "&gt;htmx&lt;/a&gt; says that while code is increasingly easy to produce, &lt;em&gt;understanding&lt;/em&gt; is still expensive, and &lt;em&gt;“complexity remains our apex predator.”&lt;/em&gt;&lt;/p&gt;
  &lt;p&gt;Carson Gross &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=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 pnpm team has created a &lt;a href="https://javascriptweekly.com/link/186573/rss" style=" color: #3366aa; font-weight: 500;   "&gt;new GitHub Action to set up both &lt;code&gt;pnpm&lt;/code&gt; and a JS runtime&lt;/a&gt; (Node, Deno, or Bun).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🐈 &lt;a href="https://javascriptweekly.com/link/186574/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Compilecat&lt;/a&gt; (&lt;a href="https://javascriptweekly.com/link/186575/rss" style=" color: #3366aa; font-weight: 500;   "&gt;repo&lt;/a&gt;) is a new, experimental JavaScript performance compiler that does &lt;a href="https://javascriptweekly.com/link/186576/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Closure&lt;/a&gt;-style optimizations.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Several major projects are taking shape in beta/pre-release stages right now, including &lt;a href="https://javascriptweekly.com/link/186577/rss" style=" color: #3366aa; font-weight: 500;   "&gt;SvelteKit 3.0&lt;/a&gt;, &lt;a href="https://javascriptweekly.com/link/186578/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Vue 3.6&lt;/a&gt;, &lt;a href="https://javascriptweekly.com/link/186579/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Vite 8.1&lt;/a&gt;, and &lt;a href="https://javascriptweekly.com/link/186580/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Astro 7.0&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/186581/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Playwright 1.61&lt;/a&gt; – You can now register and test passkeys, as well as read/write to &lt;code&gt;localStorage&lt;/code&gt; and &lt;code&gt;sessionStorage&lt;/code&gt; via a new &lt;a href="https://javascriptweekly.com/link/186582/rss" style=" color: #3366aa; font-weight: 500;   "&gt;WebStorage&lt;/a&gt; API.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/186583/rss" style=" color: #3366aa; font-weight: 500;   "&gt;ESLint v10.5.0&lt;/a&gt; – Five core rules now highlight smaller ranges of code to avoid shadowing other problems in editors.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🤖 &lt;a href="https://javascriptweekly.com/link/186584/rss" style=" color: #3366aa; font-weight: 500;   "&gt;TanStack AI Beta&lt;/a&gt; – Framework and provider-agnostic AI toolkit.&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/186586/rss" title="tanstack.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;How TanStack Cut TypeScript Type-Checking Work by Up to 86%&lt;/a&gt;&lt;/span&gt; — TanStack Table v9 (&lt;a href="https://javascriptweekly.com/link/186588/rss" style=" color: #3366aa;   "&gt;now in beta&lt;/a&gt;) made its features modular, but the generic types behind that flexibility introduced noticeable editor lag in alpha. This deep-dive shows how the team used &lt;code&gt;tsc&lt;/code&gt; diagnostics to cut type-checking work by 62–86%, with lessons for anyone authoring type-heavy libraries.&lt;/p&gt;
  &lt;p&gt;Kevin Van Cott (TanStack) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=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/186589/rss" title="www.robinwieruch.de" style=" color: #3366aa;    font-size: 1.05em;"&gt;React Libraries and Tools for 2026&lt;/a&gt;&lt;/span&gt; — Every year, Robin updates this post covering his opinionated list of essential React ecosystem libraries.&lt;/p&gt;
  &lt;p&gt;Robin Wieruch &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=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/186590/rss" title="wallabyjs.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;Your AI Writes Tests That Pass but Prove Nothing. Fix It&lt;/a&gt;&lt;/span&gt; — Wallaby CLI makes test generation 10x smarter with live coverage and runtime data, using 3x fewer tokens. One skill to install.&lt;/p&gt;
  &lt;p&gt;Wallaby Team &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/186592/rss" title="sighery.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;Changing the Kindle's Homepage by Editing Hermes Bytecode&lt;/a&gt;&lt;/span&gt; — The Kindle’s UI now runs on a &lt;a href="https://javascriptweekly.com/link/186594/rss" style=" color: #3366aa;   "&gt;Hermes&lt;/a&gt;-powered JavaScript stack. Here’s how you can edit the bytecode Hermes produces to change the Kindle UI’s behavior.&lt;/p&gt;
  &lt;p&gt;Nicholas Tarta &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=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/186595/rss" title="nico.codes" style=" color: #3366aa;    font-size: 1.05em;"&gt;Making &lt;code&gt;numpy-ts&lt;/code&gt; as Fast as Native&lt;/a&gt;&lt;/span&gt; — How a &lt;a href="https://javascriptweekly.com/link/186596/rss" style=" color: #3366aa;   "&gt;TypeScript NumPy port&lt;/a&gt; went from 15x slower to matching native, by changing not whether to use WASM, but who owns the bytes.&lt;/p&gt;
  &lt;p&gt;Nico Dupont &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=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/186597/rss" style=" color: #3366aa; font-weight: 500;   "&gt;How Building an HTML-First Site Doubled Our Users Overnight&lt;/a&gt; – Out with the React, and in with the Astro. &lt;cite&gt;Alistair Davidson&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://javascriptweekly.com/link/186598/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Building a Real Blog Easily in Astro&lt;/a&gt; – By &lt;em&gt;real&lt;/em&gt;, Zell means something beyond demo-level, with excerpts, post update dates, etc. &lt;cite&gt;Zell Liew&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://javascriptweekly.com/link/186599/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Streaming HTML with &lt;code&gt;textStream()&lt;/code&gt; in Chrome Canary&lt;/a&gt;  &lt;cite&gt;Ollie 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/186600/rss" title="github.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;eslint-plugin-unicorn 67.0: More Than 200 Powerful ESLint Rules&lt;/a&gt;&lt;/span&gt; — Sindre’s set of curated rules has grown a lot, with almost 100 added or updated in the past few weeks alone. Like enforcing &lt;a href="https://javascriptweekly.com/link/186602/rss" style=" color: #3366aa;   "&gt;better comments&lt;/a&gt;, &lt;a href="https://javascriptweekly.com/link/186603/rss" style=" color: #3366aa;   "&gt;limiting the depth of nested calls&lt;/a&gt;, &lt;a href="https://javascriptweekly.com/link/186604/rss" style=" color: #3366aa;   "&gt;preferring &lt;code&gt;Temporal&lt;/code&gt; over &lt;code&gt;Date&lt;/code&gt;&lt;/a&gt;, and &lt;a href="https://javascriptweekly.com/link/186605/rss" style=" color: #3366aa;   "&gt;preferring HTTPS over HTTP&lt;/a&gt; in URLs. These rules will seriously challenge (and improve!) your code.&lt;/p&gt;
  &lt;p&gt;Sindre Sorhus et al. &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; 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/186606/rss" title="github.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;zod-compiler: Compile Zod Schemas into Zero-Overhead Validators&lt;/a&gt;&lt;/span&gt; — A build-time compiler that plugs into Vite, webpack, et al. and rewrites existing schemas into optimized, tree-shakeable validators. Claims 2–75x faster validation with no source changes and the full Zod API preserved.&lt;/p&gt;
  &lt;p&gt;Gajus Kuizinas &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/186607/rss" title="www.tigerdata.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;That Slow Analytics Endpoint? It's a Database Problem&lt;/a&gt;&lt;/span&gt; — Pipelines, sync lag, stale data. That's the cost of a split stack. TimescaleDB extends Postgres so your app stays fast.&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/186608/rss" title="netil.medium.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;billboard.js 4.0: A JavaScript Chart Library Based on D3&lt;/a&gt;&lt;/span&gt; — At almost nine years old, billboard.js now has a new, opt-in canvas-based rendering mode (SVG remains the default), smaller bundles, and better performance on large datasets. There are &lt;a href="https://javascriptweekly.com/link/186609/rss" style=" color: #3366aa;   "&gt;hundreds of demos&lt;/a&gt; ranging from &lt;a href="https://javascriptweekly.com/link/186610/rss" style=" color: #3366aa;   "&gt;donut charts&lt;/a&gt; and &lt;a href="https://javascriptweekly.com/link/186611/rss" style=" color: #3366aa;   "&gt;funnel charts&lt;/a&gt; to &lt;a href="https://javascriptweekly.com/link/186612/rss" style=" color: #3366aa;   "&gt;overlapping bar charts&lt;/a&gt; and &lt;a href="https://javascriptweekly.com/link/186613/rss" style=" color: #3366aa;   "&gt;radar charts&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Jae Sung Park (NAVER) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=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/186614/rss" title="polycss.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;PolyCSS: CSS 3D Engine for the DOM&lt;/a&gt;&lt;/span&gt; — Renders textured 3D polygon meshes entirely in the DOM using CSS &lt;code&gt;matrix3d()&lt;/code&gt; transforms — no WebGL or &amp;lt;&lt;code&gt;canvas&lt;/code&gt;&amp;gt; required. Works with vanilla JS, React, and Vue. There’s a &lt;a href="https://javascriptweekly.com/link/186615/rss" style=" color: #3366aa;   "&gt;gallery&lt;/a&gt; to explore and a &lt;a href="https://javascriptweekly.com/link/186616/rss" style=" color: #3366aa;   "&gt;live builder&lt;/a&gt; if you want to play around.&lt;/p&gt;
  &lt;p&gt;LayoutitStudio &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 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;"&gt;
  &lt;a href="https://javascriptweekly.com/link/186617/rss" style=" color: #3366aa;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/dywvkeo9lzhcxdrflnyq.jpg" width="640" style="    line-height: 100%;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/186617/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Tabulator 6.5&lt;/a&gt; &lt;em&gt;(above)&lt;/em&gt; – Create interactive tables from any HTML table, JS array or JSON data.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🕒 &lt;a href="https://javascriptweekly.com/link/186618/rss" style=" color: #3366aa; font-weight: 500;   "&gt;&lt;code&gt;&amp;lt;relative-time&amp;gt;&lt;/code&gt; 5.2.0&lt;/a&gt; – Web Component for formatting automatically-updating timestamps as localized strings or relative times.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/186619/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Fable 5.2&lt;/a&gt; – No, not the LLM you can't use, but an F# to JS/TS (and now Erlang too) compiler you &lt;em&gt;can&lt;/em&gt; use. &lt;a href="https://javascriptweekly.com/link/186620/rss" style=" color: #3366aa; font-weight: 500;   "&gt;More info.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/186621/rss" style=" color: #3366aa; font-weight: 500;   "&gt;React Native 0.86&lt;/a&gt; – Edge-to-edge support on Android 15+ and improvements to its DevTools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/186622/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Biome 2.5&lt;/a&gt; – The fast code formatting and linting toolchain has now passed 500 lint rules.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/186623/rss" style=" color: #3366aa; font-weight: 500;   "&gt;get-value 4.1&lt;/a&gt; – Use paths like &lt;code&gt;a.b.c&lt;/code&gt; to get a nested value from an object.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/186624/rss" style=" color: #3366aa; font-weight: 500;   "&gt;axios v1.18.0&lt;/a&gt; – Promise-based HTTP client for the browser and Node.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📊 &lt;a href="https://javascriptweekly.com/link/186625/rss" style=" color: #3366aa; font-weight: 500;   "&gt;visx 4.0&lt;/a&gt; – Airbnb's visualization primitives for React.&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;📸 Add robust in-browser barcode scanning to your web apps using &lt;a href="https://javascriptweekly.com/link/186626/rss" style=" color: #3366aa; font-weight: 500;   "&gt;STRICH&lt;/a&gt;, a lean JS library. &lt;a href="https://javascriptweekly.com/link/186626/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Free 30-day trial, try the demo app today!&lt;/a&gt;&lt;/p&gt;
 
&lt;p&gt;Flaky tests slowing down dev? &lt;a href="https://javascriptweekly.com/link/186627/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;🤖 Generate 50,000 invoices overnight. &lt;a href="https://javascriptweekly.com/link/186628/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Foxit's DocGen API&lt;/a&gt; merges JSON data into branded PDFs at scale, with no PDFKit and no copy-paste.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 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/186630/rss" style=" color: #3366aa;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ixupyzbbgqjnvtbe54el.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;🌐 The WebKit team &lt;a href="https://javascriptweekly.com/link/186630/rss" style=" color: #3366aa; font-weight: 500;   "&gt;shows off MapKit JS 6&lt;/a&gt; &lt;em&gt;(above)&lt;/em&gt;, a way to integrate Apple Maps into your site &lt;a href="https://javascriptweekly.com/link/186631/rss" style=" color: #3366aa; font-weight: 500;   "&gt;like in this example&lt;/a&gt;. You need a token from an Apple Developer account though.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;😱 A developer was sent &lt;a href="https://javascriptweekly.com/link/186632/rss" style=" color: #3366aa; font-weight: 500;   "&gt;a malicious JavaScript 'coding test' by a fake recruiter on LinkedIn&lt;/a&gt; in an attempt to backdoor his machine. I've heard about this vector a few times this year, so be careful.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/186634/rss" style=" color: #3366aa; font-weight: 500;   "&gt;WASI 0.3 (WebAssembly System Interface) has launched&lt;/a&gt;, bringing native async support to WebAssembly Components.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/186635/rss" style=" color: #3366aa; font-weight: 500;   "&gt;performative-ui&lt;/a&gt; is a fun set of modern clichéd "AI startup" UI components for React, like &lt;a href="https://javascriptweekly.com/link/186637/rss" style=" color: #3366aa; font-weight: 500;   "&gt;ASCII hero art&lt;/a&gt; and &lt;a href="https://javascriptweekly.com/link/186638/rss" style=" color: #3366aa; font-weight: 500;   "&gt;node graph backgrounds&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A dev had an old USB scanner with no modern drivers, but &lt;a href="https://javascriptweekly.com/link/186639/rss" style=" color: #3366aa; font-weight: 500;   "&gt;got it working via a browser-based WASM-powered emulator&lt;/a&gt; bridged to the physical scanner through WebUSB. He previously did something similar &lt;a href="https://javascriptweekly.com/link/186640/rss" style=" color: #3366aa; font-weight: 500;   "&gt;with an old printer&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/790/rss" width="1" height="1" /&gt;</description>
      <pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://javascriptweekly.com/issues/790</guid>
    </item>
    <item>
      <title>VoidZero → Cloudflare, and Angular 22 lands</title>
      <link>https://javascriptweekly.com/issues/789</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;#​789 — June 9, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/186263/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/186265/rss" style=" color: #3366aa;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/hlyw3ywdgrgvmsgf7b8f.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/186265/rss" title="voidzero.dev" style=" color: #3366aa;    font-size: 1.1em; line-height: 1.4em;"&gt;VoidZero is Joining Cloudflare&lt;/a&gt;&lt;/span&gt; — One of the year’s big moves in JS tooling, as told by Evan himself. The company he founded to build Vite, Vitest, Rolldown, Oxc, etc. is joining Cloudflare. He’s candid about why (monetization is hard). Good news: all projects stay MIT-licensed, and Evan and co remain in charge.&lt;/p&gt;
  &lt;p&gt;Evan You &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💰 In &lt;a href="https://javascriptweekly.com/link/186266/rss" style=" color: #3366aa; font-weight: 500;"&gt;the Vite team's post&lt;/a&gt;, they reveal Cloudflare is starting a $1 million fund to support Vite ecosystem maintainers and contributors.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  &lt;a href="https://javascriptweekly.com/link/186264/rss" style=" color: #3366aa;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/8e18d877.png" width="142" height="110" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/186264/rss" title="posetteconf.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;Come for Great PostgreSQL Talks – Virtual and Free&lt;/a&gt;&lt;/span&gt; — Attend talks about PostgreSQL-backed app development at POSETTE: An Event for Postgres 2026 (16-18 June). Join live and chat directly with PostgreSQL speakers, other developers and users. There is also swag waiting for you. &lt;a href="https://javascriptweekly.com/link/186264/rss" style=" color: #3366aa;   "&gt;Register for updates&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Microsoft | AMD &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #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/186267/rss" title="blog.angular.dev" style=" color: #3366aa;    font-size: 1.05em;"&gt;Announcing Angular v22&lt;/a&gt;&lt;/span&gt; — Google’s batteries-included framework graduates three big features to stable/production-ready: &lt;a href="https://javascriptweekly.com/link/186268/rss" style=" color: #3366aa;   "&gt;Signal Forms&lt;/a&gt;, &lt;a href="https://javascriptweekly.com/link/186269/rss" style=" color: #3366aa;   "&gt;Angular Aria&lt;/a&gt;, and &lt;a href="https://javascriptweekly.com/link/186270/rss" style=" color: #3366aa;   "&gt;asynchronous reactivity&lt;/a&gt;. The router also adds experimental support for the native browser &lt;a href="https://javascriptweekly.com/link/186271/rss" style=" color: #3366aa;   "&gt;Navigation API&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;The Angular 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;Safari 27 (beta), announced at WWDC, &lt;a href="https://javascriptweekly.com/link/186272/rss" style=" color: #3366aa; font-weight: 500;   "&gt;includes a standards-compliant ESM loader rewrite&lt;/a&gt; improving top-level &lt;code&gt;await&lt;/code&gt; support, and &lt;a href="https://javascriptweekly.com/link/186273/rss" style=" color: #3366aa; font-weight: 500;   "&gt;adds support for JSPI&lt;/a&gt; (JavaScript Promise Integration) in WebAssembly.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/186274/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Electron 43 is in beta&lt;/a&gt; with big perf boosts, thanks to an embedded Node.js snapshot, bundles cached as V8 bytecode, and link-time optimization on the main binary.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;a href="https://javascriptweekly.com/link/186275/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Rust port of &lt;em&gt;React Compiler&lt;/em&gt;&lt;/a&gt; is ready to test (Meta is already seeing &lt;em&gt;"great results"&lt;/em&gt;) – it's set to be merged imminently.&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/186276/rss" style=" color: #3366aa; font-weight: 500;   "&gt;TanStack Table v9 Beta&lt;/a&gt; – A powerful headless engine for creating data grids with support for React, Preact, Solid, Vue, Angular, Svelte, and Lit.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/186277/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Node-RED 5.0&lt;/a&gt; – 'Low-code' flow programming environment, built on Node.js.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/186278/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Rolldown 1.1&lt;/a&gt;, &lt;a href="https://javascriptweekly.com/link/186279/rss" style=" color: #3366aa; font-weight: 500;   "&gt;pnpm 11.5&lt;/a&gt;, &lt;a href="https://javascriptweekly.com/link/186280/rss" style=" color: #3366aa; font-weight: 500;   "&gt;RunJS 4&lt;/a&gt;, &lt;a href="https://javascriptweekly.com/link/186281/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Emscripten 6.0&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/186282/rss" title="cpojer.net" style=" color: #3366aa;    font-size: 1.05em;"&gt;Modern Engineering Values&lt;/a&gt;&lt;/span&gt; — &lt;em&gt;“I cannot believe that I used to write code by hand!”&lt;/em&gt; The creator of Jest and &lt;a href="https://javascriptweekly.com/link/186283/rss" style=" color: #3366aa;   "&gt;Fate&lt;/a&gt; says that as agents write more software, the engineering values that matter shift, with ownership, taste, and strict-but-fast feedback loops at the fore.&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/186284/rss" title="hackers.pub" style=" color: #3366aa;    font-size: 1.05em;"&gt;'I Wish Deno Would Keep Doing What It Does Best'&lt;/a&gt;&lt;/span&gt; — A Deno fan argues that chasing Node.js/npm compatibility is costing the runtime its edge as a zero-config, web-standards, all-in-one-binary experience.&lt;/p&gt;
  &lt;p&gt;Hong Minhee &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://javascriptweekly.com/link/186285/rss" title="try.expo.dev" style=" color: #3366aa;    font-size: 1.05em;"&gt;How Is Your App Performing in Production?&lt;/a&gt;&lt;/span&gt; — Ship a release this morning. By tonight you can know if the app got faster, slower, or worse for any specific cohort of users.&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/186286/rss" title="redmonk.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;What Bun Can Tell Us About AI and Open Source&lt;/a&gt;&lt;/span&gt; — An analyst looks at Bun, whose code is increasingly AI-produced rather than human-written, as a bellwether for whether AI-authored core infrastructure is sustainable.&lt;/p&gt;
  &lt;p&gt;Stephen O'Grady (RedMonk) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=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/186287/rss" style=" color: #3366aa; font-weight: 500;   "&gt;All 17 &lt;em&gt;TanStack&lt;/em&gt; Projects in One App&lt;/a&gt; – &lt;a href="https://javascriptweekly.com/link/186288/rss" style=" color: #3366aa; font-weight: 500;   "&gt;TanStack&lt;/a&gt; is now a huge suite of libraries, and if anyone can pull them all into one app, Jack can! &lt;cite&gt;Jack Herrington&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://javascriptweekly.com/link/186289/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Everything You Need to Know About Source Maps&lt;/a&gt; &lt;cite&gt;Neciu Dan&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://javascriptweekly.com/link/186290/rss" style=" color: #3366aa; font-weight: 500;   "&gt;How TypeScript Infers Type Variables&lt;/a&gt; &lt;cite&gt;Nicolas Laurent&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/186291/rss" style=" color: #3366aa;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/c29kb1qwq5glgjbzbwkv.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/186291/rss" title="www.harryjstevens.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;Geometric.js: A Library for Doing Geometry&lt;/a&gt;&lt;/span&gt; — Created by someone who works on graphics for the NYT, this elegant library lets you work with polygons, bounding boxes, reflection, interpolation, rotation, and the like (&lt;a href="https://javascriptweekly.com/link/186292/rss" style=" color: #3366aa;   "&gt;examples&lt;/a&gt;). Does one polygon intersect with another? There’s &lt;a href="https://javascriptweekly.com/link/186293/rss" style=" color: #3366aa;   "&gt;a function for that.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Harry Stevens (The New York Times) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=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/186294/rss" title="www.tigerdata.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;Ship Real-Time Features Without a Second Database&lt;/a&gt;&lt;/span&gt; — TimescaleDB extends Postgres for live analytics on event data. No pipeline, no extra infrastructure. &lt;a href="https://javascriptweekly.com/link/186294/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/186295/rss" title="micromodal.vercel.app" style=" color: #3366aa;    font-size: 1.05em;"&gt;Micromodal.js: A Tiny Library for Accessible Modal Dialogs&lt;/a&gt;&lt;/span&gt; — No-dependency library for WAI-ARIA guideline-compliant modal dialogs. Offers extra polish versus &lt;a href="https://javascriptweekly.com/link/186296/rss" style=" color: #3366aa;   "&gt;&lt;code&gt;&amp;lt;dialog&amp;gt;&lt;/code&gt;&lt;/a&gt;, with hooks, scroll-locking, in/out transitions, and click backdrop to dismiss.&lt;/p&gt;
  &lt;p&gt;Ghosh and 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;span&gt;📝&lt;/span&gt; &lt;a href="https://javascriptweekly.com/link/186297/rss" title="pdfslick.dev" style=" color: #3366aa;    font-size: 1.05em;"&gt;PDFSlick 4.0: View and Interact with PDFs in JS Apps&lt;/a&gt;&lt;/span&gt; — A PDF viewer for React, Solid, Svelte &amp;amp; vanilla JS apps that goes from simple PDF viewing up to working with multiple, large documents with annotations. &lt;a href="https://javascriptweekly.com/link/186298/rss" style=" color: #3366aa;   "&gt;Demo.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Vancho Stojkov &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=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/186299/rss" title="github.com" style=" color: #3366aa;    font-size: 1.05em;"&gt;&lt;code&gt;babel-plugin-zod-hoist&lt;/code&gt;: Hoist Zod Schema Definitions to the Top of the File&lt;/a&gt;&lt;/span&gt; — From the creator of &lt;a href="https://javascriptweekly.com/link/186300/rss" style=" color: #3366aa;   "&gt;Slonik&lt;/a&gt; comes a way to make Zod validation significantly faster.&lt;/p&gt;
  &lt;p&gt;Gajus Kuizinas &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/186301/rss" style=" color: #3366aa; font-weight: 500;   "&gt;eslint-plugin-functional 10.0&lt;/a&gt; – Linter rules to disallow mutation and encourage functional programming.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://javascriptweekly.com/link/186302/rss" style=" color: #3366aa; font-weight: 500;   "&gt;ts-loader 9.6&lt;/a&gt; – The TypeScript loader for webpack &lt;a href="https://javascriptweekly.com/link/186303/rss" style=" color: #3366aa; font-weight: 500;   "&gt;adds webpack 4 support back again&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🧊 &lt;a href="https://javascriptweekly.com/link/186304/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Draco.js&lt;/a&gt; – A pure JS Draco mesh loader for three.js by mrdoob himself. (&lt;a href="https://javascriptweekly.com/link/186305/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/186306/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Taiga UI 5.10&lt;/a&gt; – Popular suite of 50+ components for Angular.&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/186307/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/186308/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Clerk now shows your top orgs by member count&lt;/a&gt; — ranked, visualized, with per-tenant detail links. Know how your B2B accounts are growing.&lt;/p&gt;
 
&lt;p&gt;📄 Skip the HTML-to-PDF headaches. &lt;a href="https://javascriptweekly.com/link/186309/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Foxit's DocGen API&lt;/a&gt; turns Word templates and JSON into clean, formatted PDFs in one API call.&lt;/p&gt;
 
&lt;p&gt;Build and deploy durable AI agents in TypeScript, without managing your own infrastructure. &lt;a href="https://javascriptweekly.com/link/186310/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Ship your first agent with Trigger.dev&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/186311/rss" style=" color: #3366aa;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/sz3wbahatqailcxmca94.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;Oxide Computer Company's &lt;a href="https://javascriptweekly.com/link/186311/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Mitos ASCII Tool&lt;/a&gt; &lt;em&gt;(above)&lt;/em&gt; converts images into ASCII text illustrations &lt;em&gt;and&lt;/em&gt; animations, by way of a built-in livecoding environment (built upon the fantastic &lt;a href="https://javascriptweekly.com/link/186312/rss" style=" color: #3366aa; font-weight: 500;   "&gt;play.core&lt;/a&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔁 &lt;a href="https://javascriptweekly.com/link/186313/rss" style=" color: #3366aa; font-weight: 500;   "&gt;replacements.fyi&lt;/a&gt;, from the e18e team, is a handy way to find replacements for npm packages of your choice, whether that's a simpler package, a code snippet that does the same thing, or a native API.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;⚡ Add &lt;a href="https://javascriptweekly.com/link/186314/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Obs.js&lt;/a&gt; to a page and it adds classes to &amp;lt;html&amp;gt; to customize the UX based on how much performance is available (e.g. bandwidth, CPU, latency). &lt;a href="https://javascriptweekly.com/link/186315/rss" style=" color: #3366aa; font-weight: 500;   "&gt;Harry Roberts explains further.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🕹️ Raymond Camden set out to see &lt;a href="https://javascriptweekly.com/link/186316/rss" style=" color: #3366aa; font-weight: 500;   "&gt;if Chrome's built-in AI could play Zork 1&lt;/a&gt;, the classic text adventure game.&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/789/rss" width="1" height="1" /&gt;</description>
      <pubDate>Tue, 9 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://javascriptweekly.com/issues/789</guid>
    </item>
    <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>
  </channel>
</rss>
