Tech does not just watch: Take action against Russia’s war on Ukraine 🇺🇦, and take action against Israel’s genocide on the Palestinian people and the destruction of Palestine 🇵🇸 Hide

Frontend Dogma

News and Tools for Web Developers

Updated daily

Featured on Frontend Dogma? Verify and whitelist your domain (no rel=nofollow).

Articles and videos and books, people and projects and processes, tools and tips and tricks from the world of web development and design.

→ Stay up-to-date on all topics by various RSS feeds (main feed: only $10/year), on Mastodon and Bluesky, or through other channels

Entry (Sources) and TopicsDate#
One Corner, Two Border Radii (kev)17,562
,
Understanding UC Browser Developer Tools as a Frontend Professional (des)17,561
, , ,
State of JavaScript 2025 (sac/dev)17,560
,
Linting, Automated: AI-Powered Static Analysis With Gemini17,559
, , , , ,
Targeting Specific Characters With CSS Rules (ede)17,558
, ,
To Vibe or Not to Vibe (bbo/mfo)17,557
,
GPT-5’s Enhanced Reasoning Comes With a Steep Hidden Cost (the)17,556
, ,
Why Your Brand Is Your Most Important SEO Asset in 2026 (sem)17,555
, ,
Why Technical Debt Is Inevitable (kev)17,554
, , ,
Your Next Design Might Be Your Last (uxd)17,553
,
The “picture” Element (kev)17,552
Learning Web Development: Version Control via Git and GitHub (rau)17,551
, , ,
4 Simple Ways to Know if You Are Stuck With Zombie Scrum17,550
, , ,
Why Now Is Not the Time to Think About WCAG 3 (kar)17,549
, , , ,
CSS to Speech: Alternative Text for CSS-Generated Content (sar)17,548
, , , , , , ,
A Quick Primer on Accessible Pagination (kar)17,547
, , , , ,
This May Be the Worst One (the)17,546
, , ,
Middleware in React Router (bro/rem)17,545
,
Wasm 3.0 Completed17,544
Moving Off of TypeScript17,543
,
The Web’s Most Tolerated Feature (boc)17,542
, ,
Is It Time to Un-Sass? (jef/css)17,541
, , ,
Why Europe’s New Tech Laws Have the World on Edge (edr)17,540
SerpApi: A Complete API for Fetching Search Engine Data (pre/sma)17,539
,
How Software Engineers Can Take Advantage of Gen AI Tools17,538
, , ,
React Won by Default—and It’s Killing Frontend Innovation (che)17,537
, , , , ,
Ongoing Supply Chain Attack Targets CrowdStrike npm Packages (pvd+/soc)17,536
, ,
How Tech Companies Measure the Impact of AI on Software Development (ger+)17,535
, , , , , , ,
WebKit Features in Safari 26.0 (jen+/web)17,534
, , , ,
K8s and Cloud Observability17,533
,
Replace Your Animated GIFs with SVGs (fro)17,532
, , , ,
Fetch Streams Are Great, but Not for Measuring Upload/Download Progress (jaf)17,531
, ,
ctrl/tinycolor and 40+ npm Packages Compromised17,530
, ,
Accessible Time Format (oze)17,529
,
The “Most Hated” CSS Feature: “cos()” and “sin()” (mon/css)17,528
, ,
Screen Readers Do Not Need to Be Saved by AI (cra)17,527
, ,
How Fast Do Websites Load From Google Search? Comparing Various Prefetching and On-Demand Load Methods (paw)17,526
, , ,
Let’s See Paul Allen’s CSS Reset (dbu)17,525
,
Avoid Adding Modals to Other Modals or Dropdowns (a11)17,524
, ,
Simplicity in Web Design? It’s All Smoke and Mirrors (web)17,523
, , ,
Can Native Web APIs Replace Custom Components in 2025? (dxn/log)17,522
, , , ,
Subgrid: How to Line Up Elements to Your Heart’s Content (sar/web)17,521
, , ,
Single-Colour Gradients (kev)17,520
,
What Can We Actually Do With “corner-shape”? (dxn/css)17,519
, , ,
You Can’t Track AI Like Traditional Search—Here’s What to Do Instead (lou/ahr)17,518
,
The Missing Link in JavaScript Tools (mar)17,517
,
State of QUIC in Node.js (pav)17,516
, , ,
Follow-the-Leader Pattern With CSS Anchor Positioning (una)17,515
, ,
Reviewing the Logic and Value of the W3C’s Accessibility Maturity Model (kar)17,514
, , , ,
You Suck as a Design Leader (pro)17,513
, , ,
Compiling Multiple CSS Files Into One (geo/css)17,512
, , ,
August 2025 Baseline Monthly Digest (mal/dev)17,511
, , , , ,
How to Set Up Express 5 for Production in 2025 (jan)17,510
, ,
Why You Cannot Combine SAFe and LeSS17,509
,
How to Keep package.json Under Control (tmc/val)17,508
, , , ,
How Maintainer Burnout Is Causing a Kubernetes Security Disaster (the)17,507
, , , ,
How Do You Optimize for AI Search? (sem)17,506
, ,
How to Build Microfrontends With Module Federation and Vue (ale)17,505
, , ,
One List to Rule Them All (arg)17,504
, , , , ,
Just Use HTML (cfe)17,503
,
Integrating CSS Cascade Layers to an Existing Project (sma)17,502
, ,
Deno 2.5: Permissions in the Config File (bar/den)17,501
,
Why Algorithms Are Ruining Your Web Experience (web)17,500
,
Behind the Scenes of “bun install” (lyd/bun)17,499
,
2025: 0 of the Global Top 200 Websites Use Valid HTML (j9t)17,498
, , , ,
100 Most Cited Domains in ChatGPT (ahr)17,497
,
AI Cuts Onboarding Time in Half for New Hires in the Enterprise (lau)17,496
, , ,
Auditing Your Design System for Accessibility17,495
, , ,
An Interactive Guide to TanStack DB (max)17,494
, ,
I’m Moving Away From GitHub (pal)17,493
, , ,
View Transitions: What Could Possibly Go Wrong? (mar/vtb)17,492
,
Evan You 2025 Interview: Google, Vue, Vite, Nuxt, Next, Vercel, and VoidZero (eva+)17,491
, , , , , , ,
Finally, Safe Array Methods in JavaScript17,490
, ,
Bringing Node.js HTTP Servers to Cloudflare Workers (yag+/clo)17,489
,
Color Shifting in CSS (jos)17,488
, , ,
How to Make Complex Data Accessible for Users With Disabilities (pop)17,487
, , , , ,
Getting Started With Cursor (fro)17,486
, , ,
Understanding Focus Indicators for Web Accessibility (a11)17,485
, , , ,
Migrating My Open Source Repositories to Codeberg (dan)17,484
, , , , ,
Why I Still Prefer “ems” Over “rems” (cfe)17,483
,
Chrome Mask: Make Firefox Appear as Chrome With a Single Click17,482
, , , ,
npm Author Qix Compromised via Phishing Email in Major Supply Chain Attack (bur+/soc)17,481
, ,
Will Vibe Coding Kill Low-Code17,480
, ,
Anatomy of a Billion-Download npm Supply-Chain Attack17,479
, ,
The Web Behind Glass (med)17,478
, , ,
Composition in CSS (zel/css)17,477
“Make Invalid States Unrepresentable” Considered Harmful17,476
,
Screen Reader HTML Support—Lookup (ste)17,475
, , , ,
The CSS “if()” Function (san)17,474
, ,
The Node.js Handbook, 2025 Edition (fla)17,473
,
Your Images Are (Probably) Oversized17,472
, ,
Un-Sass’ing My CSS: Compiling Multiple CSS Files Into One (stu)17,471
, ,
The CSS “random()” Function (san)17,470
, ,
No, AI Is Not a Bubble (dan)17,469
How to Perform a Comprehensive WCAG Audit (a11)17,468
, , , ,
20 Footer Design Myths You’re Still Believing (and How to Fix Them (web)17,467
, ,
“Why Would Anybody Start a Website?” (dav)17,466
What You Need to Know About CSS Color Interpolation (sun/css)17,465
, , ,
Using the Node 18+ Native Test Runner With TypeScript and React17,464
, , ,
Why I Ditched Docker for Podman (and You Should Too)17,463
, ,
Make Your Proposals for Interop 2026 (rac/dev)17,462
, , ,
Why Every Senior Developer I Know Is Planning Their Exit17,461
, ,
Liquid Glass in the Browser: Refraction With CSS and SVG17,460
, , ,
Don’t Inherit the Box Model (mia/odd)17,459
,
Accessible Writing Techniques for Web Content (a11)17,458
, , ,
You Don’t Need Animations (emi)17,457
,
The Fundamentals of CSS Alignment (css)17,456
, , ,
Functional Custom Elements the Easy Way (gin/pic)17,455
,
Release Notes for Safari Technology Preview 227 (jon/web)17,454
, , ,
Baby Steps Accessibility—Color Contrast of Text (dec)17,453
, , ,
Advanced PostgreSQL Indexing: Multi-Key Queries and Performance Optimization (ada/fro)17,452
, , ,
.htaccess: A Helper Script to Easily Block Website Traffic by Country (j9t)17,451
, , , ,
15 Ways Your Website Loads From Google Search and How to Measure Each One (paw)17,450
, , , , ,
What the Internet Was Like in 1999 (ric)17,449
, , , , , ,
The Last Days of Social Media (jam/noe)17,448
,
UDP in Node.js: Deep Technical Guide (pav)17,447
, ,
Vibe Design for Designers (uxd)17,446
,
Testing Methods: Low or No Background Audio (dec)17,445
, , ,
No, You Don’t Want to Hire “the Best Engineers” (oth)17,444
,
Learning Web Development: Asynchronous JavaScript—Promises and “async” Functions (rau)17,443
, , ,
Why You Should Test Your Page Without JavaScript17,442
, , ,
Why Did I Ever Abandon HTML/CSS? (syl)17,441
,
What We Actually Know About Optimizing for LLM Search (lou/ahr)17,440
, , ,
The Most Popular Python Frameworks and Libraries in 2025 (jet)17,439
, , , ,
Should the CSS “light-dark()” Function Support More Than Light and Dark Values? (sun/css)17,438
, ,
Google Chrome at 17—a History of Our Browser (add)17,437
, , , ,
Design Is a Conversation (uxd)17,436
, ,
How to Minimize Legal Risks in Accessibility Compliance (nat)17,435
, , ,
How Designing for Disability Benefits Everyone17,434
, ,
Anatomy of Good Icons (nng)17,433
, , ,
The Design of Shallow Thinking (uxd)17,432
, ,
We Used AI to Compare and Demo 6 JavaScript Charting Libraries (kyl+/web)17,431
, , , , ,
Why Inclusive Products Are Green Products (tet)17,430
, , , , ,
Who Owns the Web Now? Centralization vs. Decentralization in the Age of AI (web)17,429
, ,
Introduction to Postgres Indexes (ada/fro)17,428
, ,
Best LLM Visibility Trackers for 2025: Track Your Brand in AI Search17,427
, , ,
My AI Predictions for 202717,426
,
Thoughts on Object Creation (fra)17,425
, ,
CSS Overrides Without “!important” Using Layers in Astro Components (jle/cod)17,424
, , ,
Learning Web Development: JSON and Processing Files in Node.js (rau)17,423
, , , ,
Focus on the People That Make Things Happen (tem)17,422
, ,
Why Do Browsers Throttle JavaScript Timers? (nol)17,421
, ,
Learning Web Development: JavaScript Maps (rau)17,420
The Git Workflow That Eliminated Merge Conflicts Forever17,419
, ,
The “-path” of Least Resistance II (ami/fro)17,418
,
Vibe Coding Is Not the Same as AI-Assisted Engineering (add)17,417
, , ,
9 JavaScript Patterns I Wish I Used Earlier17,416
,
Tricks to Write HTML and CSS 10× Faster (jay)17,415
, , ,
Prompting Is a Design Act: How to Brief, Guide, and Iterate With AI (sma)17,414
, ,
Learning Web Development: JavaScript Exceptions (rau)17,413
,
JavaScript’s Trademark Problem (rau)17,412
, , ,
Should You Preload Fonts for Performance? (erw)17,411
, ,
Partytown: Optimize Third Party Scripts With Web Workers (jac/deb)17,410
, , , ,
Learning Web Development: Plain Objects in JavaScript (rau)17,409
,
10 CSS Features I’ve Found Really Useful17,408
The History of Themeable User Interfaces (bra)17,407
, ,
You No Longer Need JavaScript (reb)17,406
, , ,
Why You Absolutely Need to Have Automated Dependency Management in Place (j9t)17,405
, , , , ,
Why Digital Accessibility Starts Within: Lessons From Crystal Preston-Watson (tri/hac)17,404
,
VS Code Tips—How to Restore Deleted Files Easily Using Local History (zor/css)17,403
, , , , ,
The Basics of Anchor Positioning (sha)17,402
, ,
Python: The Documentary (cul)17,401
, ,
Open Source Is One Person (jos)17,400
, ,
Do the Simplest Thing That Could Possibly Work17,399
, ,
Added Support for WebP Images (git)17,398
, ,
The “-path” of Least Resistance (ami/fro)17,397
,
Learning Web Development: Modules and Testing in JavaScript (rau)17,396
, ,
Designing for Discovery: Why AI and Accessibility Are Now UX Priorities (web)17,395
, , ,
Accessible Authentication (kar)17,394
, ,
The One Architecture Decision That Destroyed Every Project I Touched17,393
,
Stop Trying to Kill the SPA (max)17,392
,
Hack to the Future—Frontend (the)17,391
, , , , , , , , , , , , , ,
Visualizing Responsive Typography (mia/odd)17,390
, , ,
Optimizing PWAs for Different Display Modes (val/sma)17,389
, , , , ,
Opening a “details” Element From the URL (chr/fro)17,388
, ,
Nested Scroll Bars Are the One of the Biggest Accessibility Evils, Ever17,387
, , ,
Learning Web Development: Web Servers (rau)17,386
,
JavaScript Engines Explained—Comparing V8, SpiderMonkey, JavaScriptCore, and More (des)17,385
, , , ,
I Am an AI Hater (ant)17,384
How Developers Can Use Tracing in the UI to Add Backend-Style Observability17,383
, , ,
Being a Developer in the Vibe Coding Era17,382
, ,
AI Contrarians on the Problems With Vibe Coding (low/the)17,381
, , ,
10 Web Dev Trends for 2025 That Will Make or Break Your Career (web)17,380
, , , , , , , , ,
Understanding “Promise.any()”: When One Success Is Enough17,379
, ,
Enable “--strict” by Default (dan/typ)17,378
,
Accessibility Statements Are Not Legal Contracts—They’re Value Signals17,377
, , ,
Why Disabled Buttons Hurt UX (and How to Fix Them)17,376
, , ,
Where AI Is Failing Design Systems, and Where We Are Failing AI (ben)17,375
,
Very Early Playing With “random()” in CSS (chr/fro)17,374
, ,
Learning Web Development: Shells and Node.js (rau)17,373
,
How to Create an Accessible Table With Clickable Rows (ale)17,372
, , ,
From McCabe to Essential Complexity17,371
, , ,
An Illustrated Guide to OAuth17,370
, ,
A11y 101: 2.4.3 Focus Order (nat)17,369
, ,
10 Python Libraries That Supercharge Web Scraping17,368
, , ,
Handling 500M Clicks With a $4 VPS (asc)17,367
, ,
Use of Color (Level A) WCAG 1.4.1—Accessibility Design Tips17,366
, , ,
Why Does Big Tech Not Run Accessibility Bug Bounties?17,365
,
React 19 Broke Update Stability, Keeping Half of Developers Stuck17,364
, , , ,
Learning Web Development: Loops in JavaScript (rau)17,363
,
Boosting Laravel Boost17,362
, ,
Big O (sam)17,361
, ,
Unit Formatting With “Intl” in JavaScript (ray)17,360
, ,
Quick Dark Mode Toggles (chr/fro)17,359
, ,
No, Google Did Not Unilaterally Decide to Kill XSLT (mey)17,358
, , ,
Making Sense of CSS Length Units17,357
,
Google Games Numbers to Make AI Look Less Thirsty (tob/the)17,356
, ,
Experimental: Firefox Now Supports Progressive Web Apps on Windows17,355
, , , ,
Design Hacks From the Pre-CSS Era (den/hac)17,354
, , , ,
4 Reasons to Stop Using CSS Preprocessors (hel)17,353
,
3D Layered Text: The Basics (ami/css)17,352
, ,
Why Do Software Developers Love Complexity? (kyr)17,351
,
Creative Ways to Fund Open Source Projects (ger)17,350
,
What Makes Claude Code So Damn Good (and How to Recreate That Magic in Your Agent)!?17,349
, , ,
Interaction Design and Accessibility: UX Without Barriers (a11)17,348
, ,
You’re Loading Fonts Wrong (and It’s Crippling Your Performance) (jon)17,347
, , , , ,
What Are OKLCH Colors? (jak)17,346
,
The ARRM Framework: What It Is and How It Can Be Leveraged for Digital Inclusion (dbo+/kno)17,345
, , ,
Rolling the Dice With CSS “random()” (jon+/web)17,344
, , ,
New Bookmarklet: WCAG SCs Lookup Tool (llo)17,343
, ,
How We Migrated Our Rush.js Monorepo to Node Type Stripping (cal)17,342
, ,
How to Create a CRO Strategy That Turns Traffic Into Revenue (moz)17,341
, , , , ,
How to Audit Developer Docs: A Quick, Effective Method (hac)17,340
, ,
Why Is CSS “::first-letter” Not Working? (whi)17,339
,
What’s Next for JavaScript? (jsd)17,338
,
To Infinity… but Not Beyond (mey)17,337
Open Source Is Dying and We’re All to Blame17,336
, ,
Obsessing Over Smooth “radial-gradient()” Disc Edges (ana/fro)17,335
, ,
Michelle Frechette and Jonathan Desrosiers on the Story of .com and .org (mic+)17,334
, , , ,
Firefox 142 for Developers (mdn)17,333
, , ,
Constant Refactoring: Refactoring My Refactored Website (ope)17,332
,
“Best Practice” Is Just Your Opinion (cra)17,331
, , ,
AWS in 2025: The Stuff You Think You Know That’s Now Wrong (qui/las)17,330
, , , , ,
About “Best Practices” (yat)17,329
,
A Proposal for Inline LLM Instructions in HTML Based on llms.txt (ind/ver)17,328
,
We Must Build AI for People, Not to Be a Person (mus)17,327
How to Stand Out When Anyone Can Build Anything (ant)17,326
, , , ,
Universal Design vs. Inclusive Design (ons/tpg)17,325
, , , ,
The Good, the Bad, and the Unreadable (mal)17,324
, , , ,
Testing Methods: Images of Text (dec)17,323
, , ,
Launching MDN’s New Front End (mdn)17,322
AGENTS.md17,321
, , ,
Web Design: What Is the Web Capable of That Is Hard to Express in Design Software? (chr/fro)17,320
, ,
The State of Python 2025 [Results] (mke/jet)17,319
,
The First Rule of ARIA (nat)17,318
, , ,
Resize Any DOM Element Using Two Lines of CSS (ami)17,317
, ,
Learning Web Development: Arrays in JavaScript (rau)17,316
,
Jack Dorsey’s Vibe Coding Tips (ang/ope)17,315
, ,
Icon Interpretation vs. Recognizability17,314
, , ,
How to Rank in Google’s AI Overviews: 7 Pro Tips (sem)17,313
, , , ,