#673 — February 1, 2024
JavaScript Weekly
Cytoscape.js: Graph/Network Visualization and Analysis Library — Handy if you need to model and/or visualize relational data, like biological data or social networks. There are many demos to enjoy here. GitHub repo.
Max Franz
Announcing TypeScript 5.4 Beta — TypeScript gains Object.groupBy and Map.groupBy, a new NoInfer<T> utility type is introduced to stop TypeScript from digging in to match against inner types during inference, and lots of smaller bits and pieces covered in this lengthy post. The final release is expected in March.
Daniel Rosenwasser
FlexGrid by Wijmo: The Industry-Leading JavaScript DataGrid — A fast and flexible DataGrid for building modern web apps. Key features and virtualized rendering are included in the grid module. Pick and choose special features to keep your app small. Built for JavaScript, extended to Angular, React, and Vue.
Wijmo from MESCIUS inc sponsor
Deno 1.40: Now with the Temporal API — Most releases of the Deno JS runtime seem significant lately, but 1.40’s implementation of the Temporal API, decorators, and more WebGPU features ups the ante on the path to v2.
The Deno Team
IN BRIEF:
Some Node.js security releases are anticipated next Tuesday (Feb 6.)
TIL: The pnpm project maintains a frequently updated benchmark of package managers (well, npm, pnpm and Yarn, anyway.)
🏀 Bouncy Ball shows a live comparison of 22 ways to animate a bouncing ball in the browser. Most are JS-based and show the code.
Porffor is an experimental, ahead-of-time JS to WASM compiler.
RELEASES:
htmx 2.0.0-alpha1 – There’s a draft 1.x→2.x migration guide showing what will be affected (not a lot).
Puppeteer 21.10.0 – Node.js API for Chrome – now with experimental browser.debugInfo.
Neutralinojs 5.0 – Lightweight cross platform desktop app framework.
Primate 0.28, Prisma 5.9, Ember 5.6, Pixi.js 7.4
📒 Articles & Tutorials
Take a Qwik Break from React with Astro — Paul Scanlon compares React to Qwik using several examples and concludes that Qwik is at least worth exploring as a React alternative.
Paul Scanlon
Import Assertions and Import Attributes — Shu-yu Guo, of both TC39 and the V8 team at Google, explains how import assertions matured into import attributes and are enabled by default in V8 v12.3.
Shu-yu Guo (V8)
A Next.js App Router Migration: The Good, Bad, and Ugly — A team rebuilt their main dashboard from scratch using a modern Next.js approach and here’s some of what they encountered, good and bad, before concluding that they wish they’d considered Remix instead.
Brandon Bayer (Flightcontrol)
Improving Enterprise Design Systems — Live stream for design system builders and users: How can we make working with design systems more seamless?
StackBlitz sponsor
Squeezing the Last Bit of JS Performance for my Automation Game — The author is building CivIdle, a casual ‘idle’ civilization building game, using Pixi.JS. As an idle game, it needs to simulate time that passed behind the scenes which meant a lot of optimization was in order.
Ruoyu Sun
Starting and Publishing a Library: The Modern Way — A walk through the steps involved in creating and packaging a library, publishing a package, adding testing, and automatically publishing it all to the NPM registry.
Tamás Sallai
How to Test Web Bluetooth with Puppeteer — Use Puppeteer to test features that use the Web Bluetooth API in Chrome.
Masso and Beaufort
The Absolute Minimum Every Software Developer Must Know About Unicode — A modern extension to a classic 2003 article by Joel Spolsky.
Nikita Prokopov
Tackling Flaky Tests with Cypress and Playwright through Network Synchronization
Shreya Kurian
Why I’m Excited for Biome’s Type Inference
Arend van Beelen jr.
🛠 Code & Tools
Labyrinthos.js: A Procedural Generator for Mazes, Etc. — The interactive demo on the homepage will give you the basic idea, but the library implements a variety of algorithms for creating mazes and terrain, including the use of Perlin noise, growing trees, spiral backtracking, and more. GitHub repo.
Yantra Works
The Most Comprehensive User Management Platform — Clerk offers drop-in auth & user management with prebuilt UI components, feature-rich SDKs & APIs for the modern web.
Clerk sponsor
React Resizable Panels: Components for Resizable Panels — If you want users to be able to resize content panels with dividers, try this. The site has many code-based examples showing off the features. v2 supports resizing multiple intersecting panels at once. GitHub repo.
Brian Vaughn
Husky 9: Git Hooks Made Easier — Husky provides a structured way to use git hooks to do things like auto-lint your commit messages or code, and run tests upon committing or pushing. v9 makes setting it up and adding hooks much easier.
typicode
David UI Angular 1.0: Tailwind + Angular Components Libary — There are seventeen components so far, covering things like sliders, buttons, notification alerts, and common form elements. GitHub repo.
Creative Tim
React Datepicker 6.0: A Simple Date Picker Component — I can’t remember the last time I saw so many code examples on a homepage 🙂
HackerOne
🎹 Fast, Reliable, Multi-Format Barcode Scanning for Web Apps with STRICH — Reliably scan barcodes in your web app! Easy integration, free demo app and free 30-day trial.
Pixelverse sponsor
goja: An ECMAScript/JavaScript Engine in Pure Go(lang) — A way to add JavaScript-based scripting functionality to apps written in the Go language that doesn’t involve integrating a larger, external JavaScript engine.
Dmitry Panov
🎨 chroma.js: Zero Dependency Color Conversion Library — I love the simple but suitably colorful documentation this library has. GitHub repo.
Gregor Aisch
Faker 8.4 – Generate fake/dummy data, at scale and on demand.
jquery.terminal 2.38 – Create Web based terminal experiences. (Demo.)
Polished 4.3 – A lightweight way to write styles in JavaScript.
Dependency Cruiser 16.1 – Tool to visualize dependencies.
Nightwatch.js 3.4 – Node.js end-to-end testing framework.
OverlayScrollbars 2.5 – JS custom scrollbar plugin.