Friday Issue Nr.147

2025-11-28

back

This week is a good one if you enjoy seeing long-standing defaults finally questioned. Angular 21 lands with zoneless change detection, Signal-powered forms, and new AI tooling, while there are thoughtful posts on what counts as “just JavaScript”, when not to reach for useTransition, and how to move a mature codebase from Enzyme to React Testing Library. On the data and perf side, TanStack DB edges towards 1.0 with query-driven sync and differential updates, and there is a neat look at using the Speculation Rules API to get instant loads by prerendering pages in invisible tabs, trading a bit more RAM for much snappier navigations.

In HTML and CSS land, subgrid finally gets the deep dive it deserves, joined by experiments that treat CSS as a proper programming environment, from multi-stage timetables with grids, round and mod through to layered 3D image effects, “two-phase” view transitions, and a long-running saga over what we are even calling masonry layouts. There are also sharp takes on when numeric inputs are the wrong choice, tooltip UX that probably should not exist, and a font licensing detective story that feels more like true crime than front-end.

Mixed news rounds things off with Cloudflare’s outage write-up and rapid response, reflections on what day-to-day development looks like in the AI era, and a fresh reminder that npm supply chain attacks are not slowing down. Plenty to read, tinker with, and worry about, in the best possible way. Happy reading!

JavaScript News

Angular v21

I believe Angular devs are super excited about this one! Some of the updates:

https://blog.angular.dev/announcing-angular-v21-57946c34f14b

Just JavaScript

Excellent post on what is and isn't “just JavaScript”.

https://pedrocattori.com/posts/just-javascript/

useTransition in React

Interesting observation on useTransition in React.

https://www.charpeni.com/blog/dont-blindly-use-usetransition-everywhere

From Enzyme to React Testing Library

https://product.hubspot.com/blog/migrated-from-enzyme-to-react-testing-library

Omit for Discriminated Unions in TypeScript

https://tkdodo.eu/blog/omit-for-discriminated-unions-in-type-script

TanStack DB 0.5 - Query-Driven Sync

“Query-Driven Sync (0.5) completes the core vision: intelligent loading that adapts to your queries, instant client-side updates via differential dataflow, and seamless persistence back to your backend. We're targeting 1.0 for December 2025, focusing on API stability and comprehensive docs.”

https://tanstack.com/blog/tanstack-db-0.5-query-driven-sync

Instant loads with Speculation Rules API

Interesting concept about those speculation rules API, however, my worry is that in the end it will eat more RAM than my second personal computer.

https://blog.sentry.io/less-than-100ms-e-commerce-instant-loads-with-speculation-rules-api/

Image convertor

Another great tool that uses your browser to convert any image to any format.

https://imageconverter.dev/

HTML & CSS News

CSS Subgrid

As usual, Josh Comeau puts so much effort into creating a post full of examples and step-by-step guides that even if you have never used subgrid before, you will get the idea after reading it.

https://www.joshwcomeau.com/css/subgrid/

Faking Two-Phase View

https://www.bram.us/2025/11/17/faking-two-phase-view-transitions-with-the-navigation-apis-precommithandler/

Tooltips on the page

Some good points in the post, but if you replace tooltips with titles, will that really fix the issue? Still, totally agree that not all users will use a mouse.

https://tkdodo.eu/blog/tooltip-components-should-not-exist

Programming with CSS

Basically, this post is solid proof that CSS is a full-scale programming language 🙂 A modern approach using grids, subgrids, round(), mod(), and loads of calculations

https://9elements.com/blog/building-a-multi-stage-timetable-with-modern-css-using-grid-subgrid-round-and-mod/

Thoughts on Random

https://frontendmasters.com/blog/more-css-random-learning-through-experiments/

When to use an input number

More importantly, when NOT to use the input number and choose inputmode="numeric" .

https://olliewilliams.xyz/blog/guide-to-html-number-input/

Detective story (or phishing) about font licensing

I guess some companies would rather pay money than research and figure out the issue, since the number of people and hours involved to determine which fonts were used where and which licenses were obtained is real detective work.

https://www.insanityworks.org/randomtangent/2025/11/14/monotype-font-licencing-shake-down

3D images in CSS

The post explores a layered pattern for building 3D effects, using CSS perspective and transform properties to create 3D objects. Clean CSS.

https://frontendmasters.com/blog/how-to-create-3d-images-in-css-with-the-layered-pattern/

Masonry layout

I wonder if the naming of the Masonry is the longest event in CSS history 🙂 Anyway, after long discussions, it seems that the name is display: grid-lanes

https://github.com/w3c/csswg-drafts/issues/12022

The Range Syntax

The post explains how to compare literal numeric values in CSS and, for example, change colour based on lightness.

1
color: if(
2
  style(--lightness < 50%): white;
3
  style(--lightness >= 50%): black
4
);

https://css-tricks.com/the-range-syntax-has-come-to-container-style-queries-and-if/

Also, an amazing post by Una Kravets shows how to change the card design based on the rain percentage. Sounds crazy, right? 🙂

1
@container style(--sunny: true) and style(--cloudy: true) {
2
    .weather-card {
3
      background: linear-gradient(24deg, #f0aec9, #a590ce);
4
    } 
5
    //....
6
}
7

8
/* Range style query in an if() statement */
9
.weather-card {
10
  background: if(
11
    style(--rain-percent > 45%): blue;
12
    else: gray;
13
  );
14
}

https://una.im/range-style-queries

Mixed News

Cloudflare outage

What matters is how you manage issues and communicate. I trust Cloudflare did a good job on this one, and CEO Matthew Prince responded within less than 24 hours, explaining everything in detail.

https://blog.cloudflare.com/18-november-2025-outage/

Thoughts on development in the AI era

https://davegriffith.substack.com/p/software-development-in-the-time

Another scary NPM story

https://helixguard.ai/blog/malicious-sha1hulud-2025-11-24

Comment on BlueSky and Mastodon

Andris Švarcs

Somehow, I've survived over 15 years as a web developer without losing my interest in the craft. Quite the opposite, with so many great improvements in the Web standards, what was nearly impossible now is easy to make.

My career has been a wild ride through small agencies and big corporations, building everything from finance apps to health dashboards.

I'm that annoying person who needs to understand products beyond just slinging code. I ask questions like 'Why is this feature important?' and 'How will this improve the customer journey?' – you know, the kind of questions that make project managers reach for the pint aspirin. This curiosity has led me down the rabbit holes of design, accessibility, and SEO. Because apparently, making websites pretty, usable, and findable wasn't challenging enough on its own.

P.S. If this bio sounds too polished, blame my evil AI twin. I'm still working on teaching it sarcasm.

Copyright © since 2021, Andris Švarcs. All rights reserved.

Lets connect

bluesky

youtube

linkedin