Accessibility
You’re getting sued. What happens now?
I’ve written twice on this topic, once in 2015 and another in 2016 and both of those posts are still pretty good, but I wanted to write a new version with some new information and key recommendations.
Since 2016 there’ve been between 8000 and 9000 web-related ADA cases filed every year. Let’s look at how to address a new lawsuit. Nothing in this post is meant to be legal advice. Instead, I’m drawing from my own experience in helping the defendants deal with their management of accessibility.
CSS
40+ Beautiful CSS Radio Button Examples
Copy stunning CSS radio button styles. Custom designs with animations and hover effects.
Avoiding z-index
Argues that developers should avoid using the CSS z-index property whenever possible because it often leads to fragile layouts and hard-to-debug layering conflicts. Instead of relying on increasingly large z-index values, the author recommends structuring elements so that their DOM order naturally determines stacking (elements rendered later appear on top).
BaseWatch — Track CSS & Browser Feature Support, Get Baseline Alerts
BaseWatch came from a practical frustration: compatibility data exists, but the real question is usually more specific. Is this ready for production? Which browsers still matter? Is support actually stable, or just hiding behind preview builds and flags? And if it is not ready yet, how do I avoid checking again and again by hand?
Building dynamic toggletips using anchored container queries - Piccalilli
Anchored container queries are only available in Chrome 143 upwards right now, but here’s Daniel Schwarz to show you how to use progressive enhancement to build up to using that new capability in the context of position-aware toggle tips.
Automated accessible text with contrast-color()
Let the browser pick the most readable text color for any background with the new contrast-color() CSS function.
contrast-color() beyond black & white
Yesterday I wrote about contrast-color(), a new feature landing in Chrome 147 (already in Firefox and Safari). This feature takes any color and returns either black or white, whichever provides the highest contrast against the input color. Originally the feature was specced to test against a list of color options, but this didn’t make the final cut for the v1 spec. However, there are ways you can work around this limitation, and I’ll cover two of them in this blog post.
Flexbox Masonry Layout (Explained with Math)
We’re going to get into building a somewhat unusual layout. It’s going to be multiple rows of differently sized elements, each with a known aspect ratio (like images), which span the full and exact width of the container.
We’re going to do this with flexbox in CSS and have a deep and very mathematical look at how it works.
Add a Wobbling Animation to your Images
Use shape() and my fancy frames generator to create an infinite wobbling animation for images or any elements. It's a single-element implementation with simple code.
Demo here.
HTML
You Don’t Know HTML Tables
This is a deep dive into HTML tables that cover its vocabulary & parts, Table Object Model, Cell headers, and the semantic value of table headers and footers.
JavaScript
React is changing the game for streaming apps with the Activity component
Learn how to use React 19.2's <Activity> component to prevent video playback from resetting or playing in the background when users hides and shows a video player.
The <Activity> component introduces a new way to handle visibility in React. Instead of mounting and unmounting components, <Activity> keeps them in the DOM while toggling their visibility state.
5 React Hooks Techniques to Improve Component Performance
Modern React development has largely shifted toward functional components powered by Hooks. Since their introduction in React 16.8, Hooks have replaced many class-based patterns and enabled developers to write cleaner and more composable components.
However, using Hooks does not automatically guarantee good performance. In fact, poorly applied Hooks can easily introduce unnecessary renders, expensive recalculations, and subtle memory leaks. Many applications that appear simple at first gradually slow down as their component tree grows and state interactions become more complex.
React SSR Benchmark: TanStack, React Router, Next.js
These benchmarks show there are big performance differences between SSR frameworks when running the same app under load:
- TanStack Start emerged as the performance leader, handling 1,000 req/s with 13ms average latency.
- React Router delivered reliable performance with zero failures.
- Next.js struggled at this load, but improved a lot after upgrading to v16 canary. Throughput doubled and latency dropped by six times.
Miscellaneous
IconsRoom - Free SVG Icons | 250K+ Icons
Search 250,000+ free SVG icons. Customize colors, download SVG/PNG/WebP. React & Vue exports. No signup.
The Developer’s Guide to Secure Job Hunting in 2026
Is your technical task a malware delivery system? Attackers now utilize "high-touch" operations that mimic legitimate hiring stages to deceive even senior technical professionals, not only easy-to-spot phishing scenarios.
The Agent Skills Directory
Skills are reusable capabilities for AI agents. Install them with a single command to enhance your agents with access to procedural knowledge.
Cookie Consent Management in 2026, Part 1: Overview
I’ve noticed a trend. Over the last few months, multiple customers have asked us to help with cookie consent compliance. Either it is a mighty coincidence or something has caused companies to start taking privacy compliance more seriously.
I think the renewed interest is because ambitious lawyers have started sending threatening letters to companies that aren’t in compliance with the California Consumer Privacy Act (CCPA) and the EU’s General Data Protection Regulation (GDPR) provisions. I know of at least one company with over $100k in related legal fees.