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 RSS feed (recommended), on Mastodon and Bluesky, or through other channels

Entry (Sources) and TopicsDate#
JavaScript Framework Reality Check: What’s Actually Working (the)15,253
, , , , ,
Mastering HTML: The Art of Minimal and Valid Code in Professional Web Development (AI Edition) (j9t)15,252
, , , , , , ,
Break Google’s Search Monopoly Without Breaking the Web (owa)15,251
, , , , ,
Contextual Logging With “console.context()” (pat)15,250
, , ,
Next Steps for Privacy Sandbox and Tracking Protections in Chrome15,249
, , , ,
Creating CSS Theme Variables From a JS File (mic)15,248
, , , ,
What Is llms.txt, and Should You Care About It? (ahr)15,247
, ,
Unlocking 7 Hidden Benefits Through Web Site Redesign (uxm)15,246
, , , , , , ,
Buttons vs. Links: What’s the Difference and Why Does It Matter?15,245
, , , ,
Why Use Personal OKRs (cwo)15,244
, ,
Fixing Vercel’s Landing Page15,243
, , ,
State of Devs 2025 (sac/dev)15,242
,
Keeping It on the “<dl>”—Another HTML Gem You Never Use (cod)15,241
, ,
“Pretty” Is in the Eye of the Beholder (geo/css)15,240
, , , , , , ,
State of AI 2025 [Results] (sac/dev)15,239
, , ,
So, You Want to Give Up CSS Pre- and Post-Processors… (zel/css)15,238
, , , ,
AI Overviews Reduce Clicks by 34.5% (ahr)15,237
, , , ,
“:only-child” (kev)15,236
,
How to Begin a WordPress Blog: A Step-by-Step Guide for Beginners15,235
, ,
Serverless Is a Scam15,234
, ,
Image Alt Text Guide: How to Write and Add Image Alt Text Reference15,233
, , , , , ,
5 Ways to Reduce HTML File Size on Your Website, Step 0 (j9t)15,232
, ,
State of AI [Results] (ver)15,231
, , , , ,
What Happens When a Program Calls Sleeps?15,230
,
Out of Order (don)15,229
, ,
Local SEO vs. National SEO vs. Global SEO: A Strategy Guide (sem)15,228
, , , ,
Google Is Ending Support for Country-Code Google Domains Like google.fr or google.co.uk15,227
Can LLMs Earn $1M From Real Freelance Coding Work?15,226
, , , ,
[Records and Tuples] Proposal Is Withdrawn (ash)15,225
SvelteKit Is the Best Way to Build Single Page Apps—and It Just Got Even Better15,224
, ,
Inclusive Dark Mode: Designing Accessible Dark Themes for All Users (sma)15,223
, ,
Why You Need to Know Your Site’s Performance Plateau (and How to Find It) (tam/spe)15,222
, ,
Tech Hiring: Is This an Inflection Point? (ger)15,221
, , ,
Firefox 137.0.2 Is a Big Bug Fix and Security Update Release15,220
, ,
A11y 101: 1.4.5 Images of Text (nat)15,219
, , , ,
Getting Specific About CSS Specificity (kat)15,218
, ,
Hako15,217
Next Level CSS Styling for Cursors (val/css)15,216
, ,
The Post-Developer Era (jos)15,215
, , , ,
Deploying TypeScript: Recent Advances and Possible Future Directions (rau)15,214
,
A Flowing WebGL Gradient, Deconstructed15,213
, , ,
Is “Ethical AI” an Oxymoron? (hdv)15,212
, , ,
LLMs Can’t Stop Making Up Software Dependencies and Sabotaging Everything (tho/the)15,211
, ,
Never Lose a “z-index” Battle Again (mat)15,210
,
How to Use GenAI With OKRs (Without Letting It Think for You) (cwo)15,209
, , , ,
Tooltip Should Not Start an Accessible Name15,208
,
The Case for Web Components With Lit15,207
, , ,
The Case for Angular15,206
,
5 Ways to Reduce HTML File Size on Your Website (deb)15,205
, , , ,
Stop Writing If–Else Trees: Use the State Pattern Instead15,204
, ,
Exploring TypeScript: TS 5.8 Edition (rau)15,203
, ,
Significant Performance Improvements With Edge 13415,202
, ,
Tailwind’s “@ apply” Feature Is Better Than It Sounds (zel/css)15,201
, , ,
Preventing N+1 Issues Globally in Laravel Using Auto Eager Loading (ami)15,200
,
Mastering Default Values in JavaScript With the Nullish Coalescing (“??”) Operator15,199
,
Secure a Vue App With OpenID Connect and the BFF Pattern (due)15,198
, , ,
Zero-Config Debugging With Deno and OpenTelemetry (lca/den)15,197
, , , , ,
Deploy Angular and Next.js Apps With App Hosting, Now GA (fir)15,196
, , , , , ,
Milana Cap on the Interactivity and HTML APIs, and Their Enormous Potential (mil+)15,195
, , , , ,
The Untold Story of Git15,194
, , , , ,
VS Code Agent Mode Just Changed Everything (bur/vsc)15,193
, , , ,
What It Means to Shift Left on Accessibility and How to Do It Right (lul)15,192
, , , , , , , , ,
Just Say the Word—Try Our New AI Website Builder for Free (nee/wor)15,191
, ,
10 Hard Truths Every Dev Must Learn in 202515,190
, ,
How to Build a Multi-Tenant SaaS Application With Next.js15,189
, , ,
Comparison Tables: 5 Scenarios When Not to Use Them15,188
, , ,
The “min()” and “max()” Functions (kev)15,187
,
Thin Fonts Are a Usability Nightmare—and Finally, Designers Are Waking Up (web)15,186
, , , ,
CSS Naked Day 2025 (mey)15,185
,
CSS Carousels (geo/css)15,184
,
ARIA in HTML (sco+/w3c)15,183
, , ,
Why I Value Firebreak Sprints for Managing Technical Debt (tre)15,182
, ,
React Reconciliation: The Hidden Engine Behind Your Components15,181
, ,
Your Frontend, Backend, and Database—Now in One Cloudflare Worker (clo)15,180
,
Use “shape()” for Responsive Clipping (nom/dev)15,179
, , , ,
Top 5 CSS Navigation Menu Mistakes (zor/css)15,178
, , ,
How to Select a UX Metric15,177
, , ,
CSS Naked Day 2025 (fyr)15,176
,
Designing AI for Cultural Diversity (uxm)15,175
, , ,
UX Localization: Adapting Experiences to Users Worldwide (uxm)15,174
, ,
Design for the AI Age15,173
,
A11y 101: 1.4.4 Resize Text (nat)15,172
, , ,
Creating a Software Engineering Culture15,171
, ,
The Precise Language of Good Management15,170
,
A Note About WCAG Conformance Levels (dec)15,169
, ,
Some Features That Every JavaScript Developer Should Know in 202515,168
, , , ,
Dropping Support for Twitter/X (fro)15,167
, ,
WebAIM Million Results Show That Shopping Sites Have Worst Accessibility (cer)15,166
, , ,
Making Node.js Downloads Reliable (nod)15,165
, ,
Cover Flow With Modern CSS: Scroll-Driven Animations in Action (add)15,164
, , , , ,
Open-Source Is Just That (val)15,163
, ,
The Future of Redwood Launches Today (red)15,162
Lessons Learned From My First Dive Into WebAssembly15,161
,
How to Track and Analyze Your AI Traffic (lou/ahr)15,160
, , , ,
The Importance of Alt Text for Images15,159
, , , , , , ,
First Look at the Modern “attr()” (sha)15,158
, , ,
AI and Accessibility: Opportunities and Challenges for Content Creators15,157
, ,
Making “:visited” More Private (dev)15,156
, , , , ,
Debugging JavaScript Memory Leaks (jar/bun)15,155
, , , , , , ,
Digital Accessibility Is a Civil Right (kar)15,154
, , , ,
TypeSpec 1.0-RC: Design Faster Today, Scale Easier Tomorrow (mic)15,153
,
Mastering Cross-Framework State Management in Micro-Frontends (des)15,152
, , , , , ,
Building a Drupal to Storyblok Migration Tool: An Engineering Perspective (edo/sma)15,151
, ,
A Guide to Alt Text Across Popular Tools (pop)15,150
, , , ,
Four Rules for How Design Influences Technology (uxd)15,149
, ,
Your AI UX Intern15,148
, , ,
How I Found My Own Path as an Introverted Engineering Manager15,147
,
SMIL On? (geo/css)15,146
, ,
How GenAIs Build Diverging Color Schemes (uxd)15,145
, , ,
Prioritizing Accessibility Bugs for Maximum Impact (civ)15,144
, ,
Implementing Multi-Brand Theming With Style Dictionary (stu)15,143
, , ,
What’s the Difference Between WCAG, the EAA, and EN 301 549? (tpg)15,142
, , , , ,
React 19’s New Hooks: With Practical Examples (let)15,141
, , ,
New in Chrome 135 (rac/dev)15,140
, , ,
Micro-Scrum (j9t)15,139
, , ,
In Defense of Ruthless Managers15,138
,
You Don’t Know Git (eth/ndc)15,137
, ,
WebKit Features in Safari 18.4 (jen+/web)15,136
, , , ,
There Is No Vibe Engineering15,135
, ,
The WebAIM Million: The 2025 Report on the Accessibility of the Top 1,000,000 Home Pages (web)15,134
, , , ,
How Does Chrome Prioritize Image Requests? (deb)15,133
, , , ,
Testing Tools for Accessibility Enhancement II15,132
, , ,
Poisoning Well (hey)15,131
, , ,
State of Drupal Presentation (dri)15,130
How AI Agents Are Quietly Transforming Frontend Development (the)15,129
, , ,
Design Isn’t Dead—You Sound Dumb (uxd)15,128
, ,
Minimal CSS-Only Blurry Image Placeholders (kal)15,127
, , , ,
Deno vs. Oracle Update 3: Fighting the JavaScript Trademark (tin/den)15,126
, , , ,
Resolving Invalid Custom Tailwind Classname ESLint Warning (ama)15,125
, ,
My Favorite Tools for Web Accessibility Testing (ale)15,124
, , ,
Browser Choice Is an Accessibility Consideration (bee)15,123
, ,
Breaking Down Circular Dependencies in JavaScript15,122
,
Meet llms.txt, a Proposed Standard for AI Website Content Crawling (sea)15,121
, , ,
How to Set Up TypeScript With Node.js and Express (log)15,120
, , ,
Expanding CSS Shadow Effects (pre/fro)15,119
, ,
Interop 2025—Which Browser Features to Get Acquainted With This Year and Why You Should Care (uti/iod)15,118
, , ,
How to Easily Reproduce a Flaky Test in Playwright (cha)15,117
, , ,
Item Flow: A New Unified Concept for Layout (sar+/web)15,116
, , , ,
React Email 4.015,115
, ,
Mastering Typography in Design Systems With Semantic Tokens and Responsive Scaling (uxd)15,114
, , , , ,
Could JavaScript Have Synchronous “await”? (rau)15,113
,
Markup Languages (j9t)15,112
, , , , , , , , , ,
Automated Visual Regression Testing With Playwright (css)15,111
, , , ,
Mind the WCAG Automation Gap (ste)15,110
, ,
If It Works, It’s Right (bel/pic)15,109
5 GitHub Actions Every Maintainer Needs to Know (git)15,108
, , , ,
How to Write Blog Posts That Developers Read (mtl)15,107
, ,
Online Tracking Is Out of Control—Privacy Badger Can Help You Fight Back (eff)15,106
, , ,
Scrum Not Working? Try It as Is Before You Modify It (ste)15,105
, ,
Website Hijack Campaign Now Impacting 150,000 Sites (gad)15,104
How to Conduct an Accessibility Audit: A Step-by-Step Guide15,103
, , , ,
AI Won’t Take Your Job—but Someone Who Uses It Better Than You Will (cwo)15,102
, , ,
Jo Minney on Website Usability Testing for WordPress Projects (jom+)15,101
, , , ,
[“a:focus-visible”] (ada)15,100
, ,
JavaScript’s Missing Link: Wasp Offers Full Stack Solution (low/the)15,099
, , ,
Direct Access vs. Sequential Access: Why Direct Is Better15,098
,
Malware Found on npm Infecting Local Package With Reverse Shell (rev)15,097
, ,
What’s the Future of Platform Engineering? (ma1+/the)15,096
, , ,
What’s New in WebGPU (Chrome 135) (dev)15,095
, , , ,
The Case for “Old School” CSS (hui)15,094
, ,
A11y 101: 1.4.3 Contrast (Minimum) (nat)15,093
, , , , ,
Land Ahoy: Leaving the Sea of Nodes15,092
, , ,
React Query API Design: Lessons Learned (tkd)15,091
, , , , ,
You Should Know This Before Choosing Next.js (edu)15,090
, ,
“input type="number"” (kev)15,089
,
Artificial Intelligence Needs Community Intelligence (all)15,088
, ,
The “<select>” Element Can Now Be Customized With CSS (arg/dev)15,087
,
Expressing Japanese Grammar Through TypeScript Type System15,086
, ,
Is Vibe Coding Agile or Merely a Hype? (scr)15,085
, , ,
War Story: The Hardest Bug I Ever Debugged (jak)15,084
, , , , ,
UX or PX? Why Naming Matters (uxd)15,083
,
Mission jQuery Zero: How FreeAgent Removed jQuery From Our Application (fre)15,082
, , ,
Layered Text Headers (chr/fro)15,081
, , ,
“aria-label” Is a Letdown (thi/wag)15,080
, , ,
Support Logical Shorthands in CSS (geo/css)15,079
, ,
When Do Retry, Backoff, and Jitter Work? (the)15,078
,
Whose Design Process? (uxd)15,077
, , ,
Grid First, Flex Third (fim)15,076
, , ,
Directives: A Core Feature of the Angular Toolkit15,075
,
AI Is the Future of Accessibility (kar)15,074
, ,
Don’t Use Scores From Automatic Tools in Your Accessibility Statement (cer)15,073
, , ,
Holographic Masks (hej)15,072
, , , ,
Is Vite Faster Than Turbopack?15,071
, , , , , ,
UI Algorithms: A Tiny Undo Stack (jul)15,070
, ,
How Navigation Should Work for Keyboard Users (tem)15,069
, , ,
The Software Engineering Identity Crisis (cod)15,068
, , ,
Mitigating Browser Fingerprinting in Web Specifications (npd+/w3c)15,067
, , , ,
Create an HTML Dialog When You Click an Image (cas)15,066
, ,
Cursor, “Vibe Coding,” and Manus: The UX Revolution That AI Needs (uxd)15,065
, , , , ,
Previewing Content Changes in Your Work With “document.designMode” (sma)15,064
, , , ,
JavaScript Basics for a Senior Dev15,063
, , ,
How to Create Quality Content (Follow Our 5-Level Framework) (ahr)15,062
, , , ,
Cracking the Code of Vibe Coding (uxd)15,061
, , , , , ,
This Is the Optimal Team Size That Improves Performance by 400%15,060
,
Revisiting CSS “border-image” (mal/css)15,059
, , ,
Testing Design Systems in 2025 (blv)15,058
, , ,
Revisiting Fluid Type (ric+/odd)15,057
, , , ,
Five Things Vibe Coders Should Know (From a Software Engineer) (uxd)15,056
, ,
Cowardly Defaults and Courageous Overrides With Modern CSS (tyl/clo)15,055
, ,
Carousels With CSS (arg/dev)15,054
, ,
Composite vs. Simple Tokens15,053
, , ,
How WebAssembly Components Can Replace JavaScript SDKs (sac)15,052
, ,
SSR Deep Dive for React Developers15,051
, , ,
Web Accessibility Requirements in the EU (mar/uxd)15,050
, , , , ,
Stop Chasing New JavaScript Frameworks: Build With Fundamentals Instead15,049
, , , , , , ,
My Thoughts on Asynchronous Accessibility APIs (jcs)15,048
, ,
The “contenteditable” “plaintext-only” Attribute Value Combination Is Now Baseline Newly Available (tom/dev)15,047
, , , ,
Where Frontend Dogma Gets Its News From (j9t)15,046
, , ,
Quick Reminder That “:is()” and “:where()” Are Basically the Same With One Key Difference (geo/css)15,045
, ,
Why UI Automation Is Insufficient as an Accessibility API for the Web (jcs)15,044
, ,
Naming Things in Design Systems—and Why It’s the Worst (pjo)15,043
, ,
Quick Accessibility Wins That Are Easy to Implement (kev)15,042
, , , , , , , , , ,
Not All AI-Assisted Programming Is Vibe Coding (but Vibe Coding Rocks) (sim)15,041
, , ,
Generate Growing Images Using Gemini API15,040
, ,
Minding the Gaps: A New Way to Draw Separators in CSS (pat)15,039
,
Understanding the European Accessibility Act (EAA) (tin/tet)15,038
, ,
Node.js TSC Votes to Stop Distributing Corepack (sar/soc)15,037
,
Introducing Motion for Vue (cit)15,036
, , ,
Style Legend (ada)15,035
,
GitHub Suffers a Cascading Supply Chain Attack Compromising CI/CD Secrets (inf)15,034
, ,
The Bare Minimum You Need to Enable View Transitions on Your Website (ami)15,033
, , ,
Designing Design Systems: A Framework for Names, Terms, and Definitions15,032
, , ,
Next.js vs. TanStack15,031
,
Polite is Often Better Than Being Alerted (oze)15,030
, ,
How to Think About Baseline and Polyfills (mal/dev)15,029
, , , ,
Downtime vs. Slowtime: Which Costs You More? (tam/spe)15,028
, ,
A Deep Dive Into the Inline Background Overlap Problem (ana/fro)15,027
, , , ,
Reducing CSS Complexity With the “:is()” Pseudo-Class (cfe)15,026
, ,
Self Gap (sha)15,025
, ,
Past and Present Futures of User Interface Design15,024
, , ,
Breadcrumbs Are Dead in Web Design (web)15,023
, ,
A11y 101: 1.4.2 Audio Control (nat)15,022
, , ,
Bulk Actions: 3 Design Guidelines15,021
, , ,
Is React Accessible? That’s the Wrong Question15,020
, , , ,
Explaining UX Design Through the Lens of Construction (uxm)15,019
, , ,
Web Components vs. Framework Components: What’s the Difference? (sma)15,018
, , , ,
Leveraging 3 Types of User Feedback to Create Better User Experiences (uxm)15,017
,
Please Stop Externalizing Your Costs Directly Into My Face (sir)15,016
, , ,
Styling Counters in CSS (mon/css)15,015
, ,
But How to Get to That European Cloud? (ber)15,014
, ,
Let’s Knock Down Social Media’s Walled Gardens (tim/fin)15,013
,
10 Uses for Variables Beyond Light and Dark Mode (ali)15,012
, ,
Web Scraping With Cheerio in 2025 (api)15,011
, ,
Maintaining Screenshot Quality and Color Profile in Figma (max)15,010
, , , ,
Accessibility Requires Clear Responsibilities or It Will Fail (cer)15,009
, ,
“Classless.css” Framework15,008
,
Coding vs. Vibe Coding15,007
, , , ,
Why the Latest JavaScript Frameworks Are a Waste of Time15,006
, , ,
The Hidden Burden of Architectural Decision Fatigue (and How to Fix It)15,005
,
System Design Roadmap for Beginners15,004
,