Monthly-ish learnings and discoveries related to frontend, the web, and software engineering in general.
Curated by me, Andreas š mostly for myself and my dear coworkers at DigitalService.
šØ September 2025
Supply-chain security, platform APIs, evil package managersIn light of the recent supply-chain attacks in the NPM and Node world (this one and that one), weāre starting with some food for thought about protecting ourselves from malicious dependencies. Obsidianās philosophy of Less is safer is the best collection of measures to mitigate the risk of successful supply-chain attacks Iāve seen so far. In short:
- Avoid dependencies if possible
- Re-implement or vendor small to medium dependencies (if licensing allows)
- Update large dependencies only periodically after careful manual review
- Block postinstall scripts
- Pin dependencies to patch versions
- Install strictly whatās in the lockfile (
npm ci
) - Delay updates, as malicious packages are usually detected within hours.
This sounds reasonable to me. Yet itās also quite different from our current practice of mostly immediate, mostly automated updates. Interested in hearing your thoughts š§
It can also be tricky to avoid dependencies. In Norms, for example, we have very few client-side dependencies. But our toolchain for linting, formatting, and testing is pretty complex. I donāt see how we can reduce that by much without compromising code quality and consistency. This is one of the reasons Iām excited about Vite+, the Vite teamās attempt at replacing the zoo of linters, formatters, test runners, etc. with a unified toolchain. Weāll learn more at this yearās ViteConf!
-
Are package managers evil? An interesting argument against automating dependency management in the first place. I tend to agree. In fact I have started vendoring stuff manually for small, personal projects. But as mentioned above, I donāt have good ideas for making this practical for bigger projects that involve many people.
-
A good way of reducing dependencies is using features that the platform already offers. Did you know the browser has an internationalization API? Among other things, you can use it for formatting dates, relative time, and numbers. Similarly, the Temporal API already works in Firefox and can be polyfilled in other browsers, removing the need to use dayjs or similar libraries. The browser also has APIs for client-side form validation that can get you pretty far for many basic use cases.
-
In my recent post about Tailwind I argued that CSS is much more dynamic than it used to be. If you had no idea what I was talking about, here are some good examples: subgrid & container queries change how we can create layouts, and a new approach to container and wrapper classes.
-
The Progressive Complexity Manifesto lays out a useful mental model for thinking about server-side rendering and client-side interactivity beyond the static vs. single-page app binary.
-
tldr is a project to make man pages more approachable by giving you the most important ways of running commands in an easy to read format. You can use their client to run it in your terminal or try it on the web.
-
The new Apple OSes have been released and with them the (controversial) liquid glass design. Be that as it may, people have attempted to recreate it on the web. Always love to see that type of experimentation! Wouldnāt be required though if we had access to Appleās private CSS property that enables the effect.
-
New Apple OSes also come with a new major version of Safari. Recently theyāve been packed with features, and this year is no different. Among others, anchor positioning, scroll-driven animations, and SVG favicons are now supported in Safari, which should get them closer to Baseline availability.
-
Java 25 has been released with some nice quality of life features such as more flexible constructors, top-level
main
methods, and a new way to import things.
Previous editions
- āµļø August 2025: State of CSS, debugging Java in VS Code, building software quickly
- š July 2025: JSNation 2025, JSON modules, CSS if()
- šļø June 2025: AI skepticism, Safari 26, Remix waking up
- š³ May 2025: Dotfiles, new JavaScript APIs, Generators
- š° April 2025: State of Vue, visual effects in CSS, Temporal API
- šŖ» March 2025: Interop, customizable select, vanilla JS date formatting
Find all previous editions in the archive.