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 🇵🇸 Protest, boycott, ostracize. Hide

Frontend Dogma

News and Tools for Frontend Developers

Are you hiring remote frontend specialists? Post your frontend job ad.

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#
Functional Custom Elements the Easy Way (gin/pic)17,182
,
What the Internet Was Like in 1999 (ric)17,181
, , , , , ,
Google Chrome at 17—a History of Our Browser (add)17,180
, , , ,
Why You Should Test Your Page Without JavaScript17,179
, , ,
Why Did I Ever Abandon HTML/CSS? (syl)17,178
,
Should the CSS “light-dark()” Function Support More Than Light and Dark Values? (sun/css)17,177
, ,
The Most Popular Python Frameworks and Libraries in 2025 (jet)17,176
, , , ,
What We Actually Know About Optimizing for LLM Search (lou/ahr)17,175
, , ,
Introduction to Postgres Indexes (ada/fro)17,174
, ,
Why Do Browsers Throttle JavaScript Timers? (nol)17,173
, ,
9 JavaScript Patterns I Wish I Used Earlier17,172
,
Vibe Coding Is Not the Same as AI-Assisted Engineering (add)17,171
, , ,
JavaScript’s Trademark Problem (rau)17,170
, , ,
VS Code Tips—How to Restore Deleted Files Easily Using Local History (zor/css)17,169
, , , , ,
Added Support for WebP Images (git)17,168
, ,
You No Longer Need JavaScript (reb)17,167
, , ,
Do the Simplest Thing That Could Possibly Work17,166
, ,
Why You Absolutely Need to Have Automated Dependency Management in Place (j9t)17,165
, , , , ,
The Basics of Anchor Positioning (sha)17,164
, ,
Python: The Documentary (cul)17,163
, ,
Open Source Is One Person (jos)17,162
, ,
Designing for Discovery: Why AI and Accessibility Are Now UX Priorities (web)17,161
, , ,
Learning Web Development: Modules and Testing in JavaScript (rau)17,160
, ,
The “-path” of Least Resistance (ami/fro)17,159
,
Nested Scroll Bars Are the One of the Biggest Accessibility Evils, Ever17,158
, , ,
I Am an AI Hater (ant)17,157
Learning Web Development: Web Servers (rau)17,156
,
Being a Developer in the Vibe Coding Era17,155
, ,
Opening a “details” Element From the URL (chr/fro)17,154
, ,
How Developers Can Use Tracing in the UI to Add Backend-Style Observability17,153
, , ,
Optimizing PWAs for Different Display Modes (val/sma)17,152
, , , , ,
Visualizing Responsive Typography (mia/odd)17,151
, , ,
AI Contrarians on the Problems With Vibe Coding (low/the)17,150
, , ,
JavaScript Engines Explained—Comparing V8, SpiderMonkey, JavaScriptCore, and More (des)17,149
, , , ,
Very Early Playing With “random()” in CSS (chr/fro)17,148
, ,
How to Create an Accessible Table With Clickable Rows (ale)17,147
, , ,
A11y 101: 2.4.3 Focus Order (nat)17,146
, ,
An Illustrated Guide to OAuth17,145
, ,
From McCabe to Essential Complexity17,144
, , ,
Learning Web Development: Shells and Node.js (rau)17,143
,
Big O (sam)17,142
, ,
Learning Web Development: Loops in JavaScript (rau)17,141
,
Boosting Laravel Boost17,140
, ,
3D Layered Text: The Basics (ami/css)17,139
, ,
Google Games Numbers to Make AI Look Less Thirsty (tob/the)17,138
, ,
Making Sense of CSS Length Units17,137
,
No, Google Did Not Unilaterally Decide to Kill XSLT (mey)17,136
, , ,
4 Reasons to Stop Using CSS Preprocessors (hel)17,135
,
Experimental: Firefox Now Supports Progressive Web Apps on Windows17,134
, , , ,
Design Hacks From the Pre-CSS Era (den/hac)17,133
, , , ,
You’re Loading Fonts Wrong (and It’s Crippling Your Performance) (jon)17,132
, , , , ,
How We Migrated Our Rush.js Monorepo to Node Type Stripping (cal)17,131
, ,
What Are OKLCH Colors? (jak)17,130
,
The ARRM Framework: What It Is and How It Can Be Leveraged for Digital Inclusion (dbo+/kno)17,129
, , ,
New Bookmarklet: WCAG SCs Lookup Tool (llo)17,128
, ,
Rolling the Dice With CSS “random()” (jon+/web)17,127
, , ,
How to Create a CRO Strategy That Turns Traffic Into Revenue (moz)17,126
, , , , ,
How to Audit Developer Docs: A Quick, Effective Method (hac)17,125
, ,
AWS in 2025: The Stuff You Think You Know That’s Now Wrong (qui/las)17,124
, , , , ,
Obsessing Over Smooth “radial-gradient()” Disc Edges (ana/fro)17,123
, ,
“Best Practice” Is Just Your Opinion (cra)17,122
, , ,
About “Best Practices” (yat)17,121
,
Why Is CSS “::first-letter” Not Working? (whi)17,120
,
Constant Refactoring: Refactoring My Refactored Website (ope)17,119
,
To Infinity… but Not Beyond (mey)17,118
A Proposal for Inline LLM Instructions in HTML Based on llms.txt (ind/ver)17,117
,
Firefox 142 for Developers (mdn)17,116
, , ,
What’s Next for JavaScript? (jsd)17,115
,
Open Source Is Dying and We’re All to Blame17,114
, ,
Testing Methods: Images of Text (dec)17,113
, , ,
AGENTS.md17,112
, , ,
The Good, the Bad, and the Unreadable (mal)17,111
, , , ,
Universal Design vs. Inclusive Design (ons/tpg)17,110
, , , ,
Launching MDN’s New Front End (mdn)17,109
The State of Python 2025 [Results] (mke/jet)17,108
,
Icon Interpretation vs. Recognizability17,107
, , ,
Web Design: What Is the Web Capable of That Is Hard to Express in Design Software? (chr/fro)17,106
, ,
How to Rank in Google’s AI Overviews: 7 Pro Tips (sem)17,105
, , , ,
Jack Dorsey’s Vibe Coding Tips (ang/ope)17,104
, ,
Learning Web Development: Arrays in JavaScript (rau)17,103
,
GitHub for AI Engineers17,102
The First Rule of ARIA (nat)17,101
, , ,
Accessibility Issues of CAPTCHA (oze)17,100
,
Resize Any DOM Element Using Two Lines of CSS (ami)17,099
, ,
Is There an “AsyncLocalStorage” Penalty?17,098
, ,
Vibe Coding and the Illusion of Progress17,097
, , ,
Email Is Easy (sam)17,096
, ,
Learning Web Development: Strings and Methods in JavaScript (rau)17,095
,
Interviewer: “So You’re a Senior Dev? Then Optimize This Code”—Here’s the Perfect Answer17,094
, , ,
How AI Is Changing Search Behaviors17,093
, , ,
Learning Web Development: Numbers, Variables, Functions in JavaScript (rau)17,092
, ,
The Future of Vue Is You (and You) (eva)17,091
, ,
CSS-Only Solutions Are Not Accessible (cfe)17,090
, ,
Covering “hidden=until-found” (geo/css)17,089
,
Simple Is Not Always Easy17,088
,
My Top 4 [CSS Properties] (don)17,087
Eliminating JavaScript Cold Starts on AWS Lambda (goo)17,086
, , ,
React Mock Interview: Kent C. Dodds, Jack Herrington, and Roadside Coder Solve React Coding Question (ken+/shr)17,085
, , ,
Dynamic Media/Container Queries Using “if()” (css)17,084
, , ,
How Much Should You Spend on Accessibility? (kar)17,083
, ,
Animated Sites Are Unique, but Not Always Accessible (uxd)17,082
, , , ,
Another Article About Centering in CSS (bel/pic)17,081
, ,
How to Write Clean Code, Actually…17,080
, , ,
Style Your Underlines (ada)17,079
, , ,
On Dashes, AI, and Screen Readers (ons/tpg)17,078
, , ,
Has Efficiency Killed Beauty? A Designer’s Search for Meaning (uxd)17,077
, , ,
5 Useful CSS Functions Using the New “@ function” Rule (una)17,076
, ,
Can Components Conform to WCAG? (hdv)17,075
, , ,
Tailwind CSS vs. Bootstrap: Which Framework Is Right for Your Next Project?17,074
, ,
We Might Need Something Between Root and Relative CSS Units for “Base Elements” (zel/css)17,073
,
How a Blind Person Uses Social Media and AI to Drive Accessibility (equ)17,072
, , ,
Conformance vs. Compliance, Accessibility Standards Edition (hdv)17,071
, , , , , ,
A Gentle Introduction to Anchor Positioning (sar/web)17,070
, ,
State of CSS 2025 [Results] (sac/dev)17,069
,
Agent Experience (AX): The Concept of AI Agent Designing17,068
, , ,
Git Rebase—Explained Like You’re New to Git17,067
,
jQuery 4.0.0 Release Candidate 1 (tim/jqu)17,066
,
Reflections on the React Community (lee)17,065
, , ,
5 Heading Accessibility Issues to Avoid (pop)17,064
, ,
Designing With AI, Not Around It: Practical Advanced Techniques for Product Design Use Cases (sma)17,063
, , , ,
CSS Questions (sun)17,062
, ,
A Nice Vanilla App [Architecture] Using Web Components and CSS Module Scripts (chr/fro)17,061
, ,
Getting Creative With Quotes (mal/css)17,060
,
Speeding Up the JavaScript Ecosystem—SemVer (mar)17,059
, , , ,
7 Architecture Mistakes Even Senior Engineers Make (and How to Fix Them)17,058
, ,
Personalization vs. Customization: The Misunderstanding Between the Two (uxd)17,057
, , ,
Mozilla Under Fire for Firefox AI “Bloat” That Blows Up CPU and Drains Battery (neo)17,056
, , , ,
AI Automation Won’t Kill Developer Jobs17,055
, , ,
I Built the Perfect Portfolio—it Got Me Zero Interviews (oso)17,054
,
The Power of the “Intl” API: A Definitive Guide to Browser-Native Internationalization (fuq/sma)17,053
, , ,
Bulk Upgrade Deprecated Node.js Versions (ver)17,052
,
Your A/B Tests Are Lying to You—the Myth of Data Driven Design (web)17,051
, ,
This One CSS Property Fixed My Font Headaches Forever17,050
,
An Engineer’s Perspective on Hiring (jyn)17,049
, ,
Accessibility Pushback17,048
,
Should We Never Use Non-Logical Properties? (j9t)17,047
,
The Best Line Length (gly)17,046
,
How I Learned System Design17,045
,
There’s a New “stretch” Keyword in CSS? (mia/odd)17,044
,
Let’s Stop Pretending That Managers and Executives Care About Productivity (bal)17,043
, , ,
Node.js Supports Import Maps (ste)17,042
,
Using the Custom Highlight API (chr/fro)17,041
,
Think Twice Before Adopting the AI Label (uxd)17,040
, ,
Agentic AI: On Evaluations (ils)17,039
, ,
Item Flow: Next Steps for Masonry (jen+/web)17,038
, ,
Infinite Pixels (mey)17,037
HTML Popovers Shown on Interest Should Be Accessible on Mobile Devices (uti)17,036
, , ,
When HTML Speaks Clearly17,035
, , ,
The Psychology of Coding: Why Developers Avoid Planning (and How AI Planning Tools Like Continue Fix It) (bek)17,034
, ,
Automating Design Systems: Tips and Resources for Getting Started (sma)17,033
, , , ,
Rebuilding Graphs for Accessibility: Inside Khan Academy’s Inclusive Design (kha)17,032
, , ,
Get the Number of “auto-fit”/“auto-fill” Columns in CSS (ana/fro)17,031
,
We Keep Reinventing CSS, but Styling Was Never the Problem (den)17,030
Baseline for CSS Properties Now in Chrome DevTools (mal/dev)17,029
, , , , , ,
HTML Is Dead, Long Live HTML (unc)17,028
, , , ,
The Hidden Cost of Context (mco/pla)17,027
, , , ,
July 2025 Baseline Monthly Digest (mal/dev)17,026
, , , , , , , , ,
Run Express.js on Cloudflare Workers (jro)17,025
, ,
What’s the European Accessibility Act Got to Do With My Design System? (ger/zer)17,024
, , , ,
How to Use the Safari Developer Tools (deb)17,023
, , , ,
What Building Products Looks Like in the Age of AI (uxd)17,022
, , , ,
Information Pollution, Poisoning, and Hygiene (uxd)17,021
, , ,
What We Learned From Creating PostCSS (sit+/evi)17,020
, , ,
What’s New in ViteLand: July 2025 Recap (man/voi)17,019
,
The Problems With Modals, and How to Solve Them (noe)17,018
, , ,
Infinite Marquee Animation Using Modern CSS (css/fro)17,017
, ,
Building Extensible Frontend Systems (cfe)17,016
, , ,
New in PHP 8.5: Closures as Constant Expressions (chr)17,015
Our Fight With Oracle Is Getting Crazy… (den)17,014
, , , ,
How We Made “JSON.stringify” More Than Twice as Fast17,013
, , , , , ,
How JavaScript Really Evolves: Inside TC39 With Daniel Ehrenberg (lit+/wee)17,012
, , ,
Perplexity Is Using Stealth, Undeclared Crawlers to Evade Website No-Crawl Directives (clo)17,011
,
Friends at Last: Tailwind and CSS… Whodathunkit?! (jar/van)17,010
,
Skeleton Screens Are Just Gray Lies We Tell Ourselves (web)17,009
, ,
How to Collect and Clean Usability-Testing Data (uxm)17,008
, ,
A11y 101: 2.4.1 Bypass Blocks (nat)17,007
, , ,
From Data to Decisions: UX Best Practices for Real-Time Performance Dashboard Design (uxm)17,006
, ,
Thinking Deeply About Theming and Color Naming (zel/css)17,005
, , , , ,
A Few Things About the Anchor Element’s “href” You Might Not Have Known (jim)17,004
, , ,
He Was a Senior Developer, Until We Read His Pull Request17,003
,
The Great Disappointment (j9t)17,002
,
Focus Not Obscured (taf)17,001
, , ,
Nobody Waits for Your Fancy Animations Anymore (and They Never Really Did) (web)17,000
, , , , ,
Programming Is Becoming Prompting16,999
, , ,
Deploy Hono Backends With Zero Configuration (ver)16,998
,
Horizontal Scrolling Containers Are Not a Content Strategy (aar)16,997
, ,
JavaScript Isn’t the Problem—Replacing the Browser Was (p4p/red)16,996
, ,
A Quick Guide to a Multi-Language Astro Site16,995
, ,
What Your Website’s Style Says About You—and How Hackers Can Use It Against You (err)16,994
, ,
More Than Just Text: The Real Power of Labels (tpg)16,993
, , ,
Forget SEO—Everyone Does RAO16,992
, , ,
New to the Web Platform in July (rac/dev)16,991
, , , ,
Should We Never Use Non-Logical Properties? (chr/fro)16,990
,
WCAG vs. EAA: Understanding Where WCAG Stops and Where the EAA Starts16,989
, ,
It’s Incredible How Many Bad User Experiences Are Still Out There in 2025 (uxd)16,988
,
Never Forget Anything (jac)16,987
,
npm Trusted Publishing With OIDC Is Generally Available (git)16,986
, , ,
Design System Deviation Is a Signal (ben)16,985
, ,
6 Weeks of Claude Code (ort/puz)16,984
, , , ,
The Biggest Threat to Your Design System Is Your Need to Be Liked (lau)16,983
,
The Web Isn’t URL-Shaped Anymore (jon)16,982
, ,
Vibe Code Is Legacy Code (ste/val)16,981
, ,
The CSS “if()” Function: Conditional Styling Will Never Be the Same (log)16,980
, ,
Built-In Accessibility: Blessing or Curse? (hdv/jsh)16,979
,
Making a Faded Text Effect in (Mostly) CSS (cas)16,978
,
I Know When You’re Vibe Coding (ale)16,977
, ,
Found an Accessibility Issue? Now What? (ser/a11)16,976
, , ,
Publishers Cry Foul Over W3C Crusade to Rid Web of Third-Party Cookies (tho/the)16,975
, ,
Cascading Layers of !mportance (mia/jsh)16,974
, ,
Getting Started With Manual Testing (jay/pop)16,973
, , ,
Testing Methods: Audio Control (dec)16,972
, , ,
Vision for W3C (cdu+/w3c)16,971
, , , ,
Creating a Scroll-Spy With 2 Lines of CSS (una)16,970
,
Hardening Node.js Apps in Production: 8 Layers of Practical Security16,969
, ,
What Do We Have That AI Doesn’t?16,968
HTML-First, Framework-Second: Is JavaScript Finally Growing Up? (the)16,967
, ,
Cross-Browser Testing Strategies: Including Often-Overlooked Browsers in the Frontend QA Process (des)16,966
, , , , , , , , ,
Neo-Brutalism: Breaking Rules, Loudly (uxd)16,965
, ,
Frontend News #15: Transform Order Matters, Creative Drop Caps, Frontend Developer Quiz (zor/css)16,964
, , , , , ,
Customise “Select” Element With CSS (No JS) (jad)16,963
, ,
Content for Fun vs. Content for Purpose: Designing for Two Distinct Modes of Consumption (div/aut)16,962
, ,
Introducing Copilot Mode in Edge: A New Way to Browse the Web (mic)16,961
, , , ,
Foundations: Types of Assistive Technology and Adaptive Strategies (tet)16,960
, , , , , ,
AI Is Eating the Internet (pao)16,959
, , ,
Logical Assignment Operators in JavaScript: Small Syntax, Big Wins16,958
,
The Death of the Click: How Scrolling Took Over the Web (web)16,957
, ,
Web Components: Working With Shadow DOM (sma)16,956
, , ,
The Useless “useCallback” (tkd)16,955
, ,
A11y 101: 2.3.1 Three Flashes or Below Threshold (nat)16,954
, ,
Liquid Glass on the Web (chr/fro)16,953
, , ,
Making a Masonry Layout That Works Today (zel/css)16,952
, ,
The Many, Many, Many JavaScript Runtimes of the Last Decade (shi)16,951
, ,
99% of Developers Haven’t Seen Claude Code Sub Agents (It Changes Everything)16,950
, ,
Ladybird Proves You Can Just Build a New Web Browser16,949
, ,
AI Has Flipped Software Development16,948
, , , ,
AI Won’t Kill UX—We Will (uxd)16,947
, , ,
The Needs of People With Cognitive Disabilities (oze)16,946
,
Countdowns and Timers—Forgotten Detail That Can Make Your Users Really Hate Your Product (cer)16,945
, ,
Making Sense of the Performance Extensibility API (css)16,944
, ,
Stop Skimming Documentation16,943
,
Vanilla JavaScript Support for Tailwind Plus (phi+/tai)16,942
,
Three HTTP Versions Later, Forms Are Still a Mess16,941
, ,
How to Discover a CSS Trick (css)16,940
,
Design Systems in 2025: Why They’re the Blueprint for Consistent UX16,939
, , ,
Tabs vs. Spaces: The War Is Over (xn-)16,938
,
The “figcaption” Problem (chr/fro)16,937
,
The “Accessibility” Link Is a Lie: My Adventures in Weaponizing Corporate Virtue Signaling (wei)16,936
,
Why and How to Write Minimal and Valid HTML, a Link Guide (j9t)16,935
, , , , ,
Implementing Accessible SVG Elements (a11)16,934
, , ,
It’s Time for Modern CSS to Kill the SPA (jon)16,933
, ,