Editor's Pick
Angular: The Documentary | An origin story
Born as an internal Google experiment - and initially brushed off by Gmail and Google Maps - AngularJS soon became a JavaScript sensation. But when internal pressures pushed the team towards a radical overhaul of the framework, the community felt left behind. What followed was years of attempts to bring Angular back to its former glory without breaking the world again.
From Angular 2 to Ivy, incorporating Signals to converging with Wiz and everything in between, get ready to explore the journey of Angular with a star-studded cast including Miško Hevery, Igor Minor, Brad Green, Minko Gechev, Sarah Drasner, Alex Rickabaugh, Addy Osmani, Ryan Carniato and Simona Cotin, among others.
Accessibility
The European Accessibility Act for websites and apps
The European Accessibility Act (EAA) goes into effect on June 28, 2025 - just 5 months from now. From that point, websites and apps of companies operating in the EU must meet accessibility standards. Only microenterprises are exempt.
In this article, I'll dive into the requirements of the EAA for websites and apps, the timeline, and a plan to help you get started.
How to Use ARIA Alert Effectively
Do you know how to make sure users of assistive technology don’t miss important updates on your website? The best strategy here is to use ARIA alerts – they’re like a gentle tap on the shoulder for users, making sure they receive urgent information at the right time.
ARIA alerts (using role="alert"
) help you communicate time-sensitive information to people using screen readers and other assistive technologies. When content marked with this role updates, it triggers a notification that screen readers announce straight away.
But getting ARIA alerts right can be tricky. Use them too much, and you might overwhelm your users. Use them incorrectly, and your important messages might not reach everyone. It’s a bit like finding the right volume for an announcement – too quiet and people miss it, too loud and it becomes annoying.
In this guide, we’ll show you exactly how to implement ARIA alerts effectively, along with plenty of practical tips to help you avoid common mistakes.
CSS
Rhythm in Web Typography
Horizontal rhythm mostly impacts the legibility, while vertical rhythm impacts the readability of the text and establishes a sense of visual hierarchy.
This guide is based on chapter 6 from the book Better Web Typography for a Better Web by Matej Latin. The book consists of 13 chapters through which the reader designs and builds an example website.
New capabilities for attr()
The ability to use attr()
references in CSS is getting more powerful. Shipping in Chrome 133 (stable rollout beginning next week), this highly-requested feature gives you ability to supercharge attributes and use them in CSS beyond simple strings. You can reference colors, numbers, percentages, named values as custom identifiers, and more.
Attributes, including but not limited to data attributes, can be referenced in css using the attr() function.
Some Things You Might Not Know About Custom Counter Styles
I was reading through Juan’s recent Almanac entry for the @counter-style
at-rule and I’ll be darned if he didn’t uncover and unpack some extremely interesting things that we can do to style lists, notably the list marker. You’re probably already aware of the ::marker
pseudo-element. You’ve more than likely dabbled with custom counters using counter-reset
and counter-increment
. Or maybe your way of doing things is to wipe out the list-style (careful when doing that!) and hand-roll a marker on the list item’s ::before
pseudo.
But have you toyed around with @counter-style
? Turns out it does a lot of heavy lifting and opens up new ways of working with lists and list markers.
Create Auto-Expanding Form Fields Using field-sizing CSS Property
Find out how to easily create auto-expanding input and textarea form fields using the field-sizing: content;
CSS property and value.
Here's Why Your Anchor Positioning Isn't Working
It is frustrating to track down why an anchor isn’t being found. I’ve found a simple way that should work in most cases. If that doesn’t work, step through the checklist, and then dive in to get a better understanding of how Anchor Positioning works.
How to implement view transitions in multi-page apps
In this article, I will focus on view transitions in MPAs. This is defined in the CSS View Transitions Module Level 2 specification and is referred to as cross-document view transitions. The cool thing is that the basics can be achieved without JavaScript — just a bit of declarative CSS will get you up and running. JavaScript is required when you want to implement some conditional logic.
The major difference between a view transition in a SPA and an MPA is how the transition is triggered. In an MPA, a view transition is triggered by navigating to another page — this can happen by clicking on a link or submitting a form. Navigations that don’t trigger a view transition include navigating using the URL address bar, clicking a bookmark, and reloading a page.
View Transitions Snippets: Keeping the page interactive while a View Transition is running
When using View Transitions you’ll notice the page becomes unresponsive to clicks while a View Transition is running. This happens because of the ::view-transition
pseudo element – the one that contains all animated snapshots – gets overlayed on top of the document and captures all the clicks.
To make clicks fall through to the document underneath, you need to disable pointer events on the pseudo.
CSS scrollbar-color and scrollbar-gutter are Baseline Newly available
CSS scrollbar-color
and scrollbar-gutter
have landed in all major browser engines, making it Baseline Newly available.
With the scrollbar-color
property you can change the colors used for scrollbars. You can specify the color of the thumb and the color track with it. Using scrollbar-width
you can opt-in to a narrower scrollbar, or even to hide the scrollbar completely without affecting scrollability.
Don't animate height!
Our app was mysteriously using 60% CPU and 25% GPU on my M2 MacBook. It turned out this was due to a tiny CSS animation! In this post, I show how to find expensive animations, why some are so expensive, and how to make many animations much cheaper. Along the way, we'll learn how the browser renders CSS animations and how to use Chrome's dev tools for performance profiling.
Tailwind Lite - One line of code. Thousands of classes. No Build Step.
Tailwind Lite is a stripped back version of Tailwind - the popular utility-first CSS framework, that can be added to your site or app with a single line of code (as opposed to the usual setup steps that Tailwind requires).
The benefits of using Tailwind Lite are easy setup and a lower maintenance burden. The drawback is that Tailwind Lite does not enable all of the classes that regular Tailwind does.
HTML
Fighting inter-component HTML bloat
The separation of concerns we aim for in design systems has an unwanted byproduct: bloated HTML in the space between components. What can we do as component authors to encourage good markup hygiene at the inter-component level?
How to Favicon in 2025: Three files that fit most needs
Prefer SVG over PNG, trust browsers to downscale, drop obscure formats—the ultimate, exhaustive guide to favicons for modern web. Includes steps for static HTML and Webpack.
HTML Whitespace is Broken
A deep dive into HTML whitespace collapsing: How it works, why it sucks, how it should work, and how to deal with it.
JavaScript
Introducing Mentoss: The fetch mocker
A new approach to mocking global fetch() calls that works in both browsers and server-side runtimes.
Blendy – Smoothly transition elements
Meet Blendy, a framework-agnostic tool that smoothly transitions one element into another with just a few lines of code.
Simple Toast Notifications using plain Javascript
This article explains how I added toast messages to my side-project, Tailcolors, with nothing but native Javascript & CSS.
Implementing React Islands in static web applications
React Islands integrates React into legacy codebases, enabling modernization without requiring a complete rewrite.
There are a lot of ways to break up long tasks in JavaScript
It's very common to intentionally break up long, expensive tasks over multiple ticks of the event loop. But there are sure are a lot of approaches to choose from. Let's explore them.
10 Essential Custom React Hooks to Supercharge Your Projects
While built-in Hooks like useState and useEffect are indispensable, custom Hooks allow developers to encapsulate reusable logic, making codebases cleaner, modular, and easier to maintain.
This article dives into 10 powerful custom React Hooks that every developer should have in their toolkit. These Hooks will optimize your workflow, improve app performance, and simplify complex logic.
JavaScript Decorators & Annotations: A Practical Guide to Metaprogramming
Metaprogramming in JavaScript is an exciting technique that lets you dynamically modify, inspect, or even generate code. If you've used annotations in Java, you might wonder if JavaScript has an equivalent. While JavaScript doesn't have built-in annotations, it does provide decorators, which serve a similar purpose.
Decorators are still a Stage 3 ECMAScript proposal, but they are widely adopted in TypeScript and Babel for class-based programming. Additionally, JavaScript provides the Reflect API, which enables metadata reflection and dynamic property access, making decorators even more powerful.
This guide will break down decorators, the Reflect API, and real-world examples in a way that's easy to follow and practical for your projects.
Declarative 3D with React
Today we're proud to announce the release of PlayCanvas React, a new declarative way to build 3D content using React.
PlayCanvas React is a thin React wrapper around the PlayCanvas API. It allows you to build rich 3D content in a declarative way that fully integrates with the React ecosystem. You can create rich, complex 3D content with assets, physics, gaussian splats, audio, and more, all while leveraging the powerful state management of React.
Angular: The Documentary | An origin story
Born as an internal Google experiment - and initially brushed off by Gmail and Google Maps - AngularJS soon became a JavaScript sensation. But when internal pressures pushed the team towards a radical overhaul of the framework, the community felt left behind. What followed was years of attempts to bring Angular back to its former glory without breaking the world again.
From Angular 2 to Ivy, incorporating Signals to converging with Wiz and everything in between, get ready to explore the journey of Angular with a star-studded cast including Miško Hevery, Igor Minor, Brad Green, Minko Gechev, Sarah Drasner, Alex Rickabaugh, Addy Osmani, Ryan Carniato and Simona Cotin, among others.
Penguin UI - Tailwind CSS & Alpine JS UI Component Library
Beautifully crafted UI components for Tailwind CSS and Alpine JS.
To use Penguin UI, you simply copy and paste the code from our website; therefore, Penguin UI doesn’t require any installation or npm package.
UX
Error Message Usability
This article is about Jakob Nielsen’s Usability Heuristic number 9: “Help Users Recognize, Diagnose, & Recover from Errors.” See also the list of all 10 usability heuristics.
Jakob Nielsen’s ninth usability heuristic emphasizes that effective user interfaces must help users recognize, diagnose, and recover from errors. At its core, this principle is about empathy: when users encounter problems, they should not feel lost, frustrated, or blamed. Instead, interfaces should guide them toward resolution with clarity and actionable support.
Miscellaneous
The Most Demanded Frontend Frameworks in 2024
Discover the top frontend frameworks of 2024 with an in-depth analysis of over 250,000 job listings from LinkedIn, Glassdoor, and more, identifying the highest demand and best-paying technologies in the industry.
ComponentLibraries - Find UI component libraries for any framework
The ultimate directory for top UI component libraries in React, Tailwind, Figma, Webflow Angular, and more. Build faster and smarter now.
Page bloat update: How does ever-increasing page size affect your business and your users?
The median web page has grown 8% in one year. How does this affect your Core Web Vitals, your search rank, your business and your users?
Free Web & Mobile Templates for Startups
Over 25,000 businesses worldwide chose our Vue, Angular, React and React Native templates to build their web & mobile business applications, SAAS and E-Commerce platforms faster.
All our templates ARE FREE now!
Dive straight into the code here.
Notes on the Code Editors with AI Landscape
No surprise to anyone: there is a lot of movement in the AI space in regards to helping with code. It’s a rather perfect use case for AI and a perfect set of customers, so I expect it to continue. I’m not an expert in any of this, but I’ve been having a play lately and figured I’d jot down notes.