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#
Keeping It on the “<dl>”—Another HTML Gem You Never Use (cod)15,129
, ,
“Pretty” Is in the Eye of the Beholder (geo/css)15,128
, , , , , , ,
So, You Want to Give Up CSS Pre- and Post-Processors… (zel/css)15,127
, , , ,
AI Overviews Reduce Clicks by 34.5% (ahr)15,126
, , , ,
“:only-child” (kev)15,125
,
What Happens When a Program Calls Sleeps?15,124
,
Out of Order (don)15,123
, ,
Local SEO vs. National SEO vs. Global SEO: A Strategy Guide (sem)15,122
, , , ,
Google Is Ending Support for Country-Code Google Domains Like google.fr or google.co.uk15,121
Can LLMs Earn $1M From Real Freelance Coding Work?15,120
, , , ,
[Records and Tuples] Proposal Is Withdrawn (ash)15,119
SvelteKit Is the Best Way to Build Single Page Apps—and It Just Got Even Better15,118
, ,
Inclusive Dark Mode: Designing Accessible Dark Themes for All Users (sma)15,117
, ,
Why You Need to Know Your Site’s Performance Plateau (and How to Find It) (tam/spe)15,116
, ,
Tech Hiring: Is This an Inflection Point? (ger)15,115
, , ,
Firefox 137.0.2 Is a Big Bug Fix and Security Update Release15,114
, ,
Next Level CSS Styling for Cursors (val/css)15,113
, ,
The Post-Developer Era (jos)15,112
, , , ,
A Flowing WebGL Gradient, Deconstructed15,111
, , ,
Is “Ethical AI” an Oxymoron? (hdv)15,110
, , ,
LLMs Can’t Stop Making Up Software Dependencies and Sabotaging Everything (tho/the)15,109
, ,
The Case for Web Components With Lit15,108
, , ,
The Case for Angular15,107
,
Significant Performance Improvements With Edge 13415,106
, ,
Tailwind’s “@ apply” Feature Is Better Than It Sounds (zel/css)15,105
, , ,
Preventing N+1 Issues Globally in Laravel Using Auto Eager Loading (ami)15,104
,
Mastering Default Values in JavaScript With the Nullish Coalescing (“??”) Operator15,103
,
VS Code Agent Mode Just Changed Everything (bur/vsc)15,102
, , , ,
What It Means to Shift Left on Accessibility and How to Do It Right (lul)15,101
, , , , , , , , ,
Just Say the Word—Try Our New AI Website Builder for Free (nee/wor)15,100
, ,
10 Hard Truths Every Dev Must Learn in 202515,099
, ,
How to Build a Multi-Tenant SaaS Application With Next.js15,098
, , ,
Comparison Tables: 5 Scenarios When Not to Use Them15,097
, , ,
The “min()” and “max()” Functions (kev)15,096
,
Secure a Vue App With OpenID Connect and the BFF Pattern (due)15,095
, ,
Thin Fonts Are a Usability Nightmare—and Finally, Designers Are Waking Up (web)15,094
, , , ,
CSS Naked Day 2025 (mey)15,093
,
CSS Carousels (geo/css)15,092
,
ARIA in HTML (sco+/w3c)15,091
, , ,
Why I Value Firebreak Sprints for Managing Technical Debt (tre)15,090
, ,
React Reconciliation: The Hidden Engine Behind Your Components15,089
, ,
Your Frontend, Backend, and Database—Now in One Cloudflare Worker (clo)15,088
,
Use “shape()” for Responsive Clipping (nom/dev)15,087
, , , ,
Top 5 CSS Navigation Menu Mistakes (zor/css)15,086
, , ,
How to Select a UX Metric15,085
, , ,
CSS Naked Day 2025 (fyr)15,084
,
Designing AI for Cultural Diversity (uxm)15,083
, , ,
UX Localization: Adapting Experiences to Users Worldwide (uxm)15,082
, ,
Design for the AI Age15,081
,
A11y 101: 1.4.4 Resize Text (nat)15,080
, , ,
Creating a Software Engineering Culture15,079
, ,
A Note About WCAG Conformance Levels (dec)15,078
, ,
Some Features That Every JavaScript Developer Should Know in 202515,077
, , , ,
Dropping Support for Twitter/X (fro)15,076
, ,
WebAIM Million Results Show That Shopping Sites Have Worst Accessibility (cer)15,075
, , ,
Making Node.js Downloads Reliable (nod)15,074
, ,
Cover Flow With Modern CSS: Scroll-Driven Animations in Action (add)15,073
, , , , ,
Open-Source Is Just That (val)15,072
, ,
The Future of Redwood Launches Today (red)15,071
Lessons Learned From My First Dive Into WebAssembly15,070
,
How to Track and Analyze Your AI Traffic (lou/ahr)15,069
, , , ,
The Importance of Alt Text for Images15,068
, , , , , , ,
First Look at the Modern “attr()” (sha)15,067
, , ,
AI and Accessibility: Opportunities and Challenges for Content Creators15,066
, ,
Making “:visited” More Private (dev)15,065
, , , , ,
Debugging JavaScript Memory Leaks (jar/bun)15,064
, , , , , , ,
Digital Accessibility Is a Civil Right (kar)15,063
, , , ,
TypeSpec 1.0-RC: Design Faster Today, Scale Easier Tomorrow (mic)15,062
,
Mastering Cross-Framework State Management in Micro-Frontends (des)15,061
, , , , , ,
Building a Drupal to Storyblok Migration Tool: An Engineering Perspective (edo/sma)15,060
, ,
A Guide to Alt Text Across Popular Tools (pop)15,059
, , , ,
Four Rules for How Design Influences Technology (uxd)15,058
, ,
Your AI UX Intern15,057
, , ,
How I Found My Own Path as an Introverted Engineering Manager15,056
,
SMIL On? (geo/css)15,055
, ,
Implementing Multi-Brand Theming With Style Dictionary (stu)15,054
, , ,
What’s the Difference Between WCAG, the EAA, and EN 301 549? (tpg)15,053
, , , , ,
React 19’s New Hooks: With Practical Examples (let)15,052
, , ,
New in Chrome 135 (rac/dev)15,051
, , ,
Micro-Scrum (j9t)15,050
, , ,
WebKit Features in Safari 18.4 (jen+/web)15,049
, , , ,
There Is No Vibe Engineering15,048
, ,
The WebAIM Million: The 2025 Report on the Accessibility of the Top 1,000,000 Home Pages (web)15,047
, , , ,
How Does Chrome Prioritize Image Requests? (deb)15,046
, , , ,
Testing Tools for Accessibility Enhancement II15,045
, , ,
Poisoning Well (hey)15,044
, , ,
State of Drupal Presentation (dri)15,043
How AI Agents Are Quietly Transforming Frontend Development (the)15,042
, , ,
Deno vs. Oracle Update 3: Fighting the JavaScript Trademark (tin/den)15,041
, , , ,
Resolving Invalid Custom Tailwind Classname ESLint Warning (ama)15,040
, ,
My Favorite Tools for Web Accessibility Testing (ale)15,039
, , ,
Breaking Down Circular Dependencies in JavaScript15,038
,
How to Set Up TypeScript With Node.js and Express (log)15,037
, , ,
Expanding CSS Shadow Effects (pre/fro)15,036
, ,
Interop 2025—Which Browser Features to Get Acquainted With This Year and Why You Should Care (uti/iod)15,035
, , ,
How to Easily Reproduce a Flaky Test in Playwright (cha)15,034
, , ,
Item Flow: A New Unified Concept for Layout (sar+/web)15,033
, , , ,
React Email 4.015,032
, ,
Mastering Typography in Design Systems With Semantic Tokens and Responsive Scaling (uxd)15,031
, , , , ,
Could JavaScript Have Synchronous “await”? (rau)15,030
,
Markup Languages (j9t)15,029
, , , , , , , , , ,
Automated Visual Regression Testing With Playwright (css)15,028
, , , ,
Mind the WCAG Automation Gap (ste)15,027
, ,
If It Works, It’s Right (bel/pic)15,026
5 GitHub Actions Every Maintainer Needs to Know (git)15,025
, , , ,
How to Write Blog Posts That Developers Read (mtl)15,024
, ,
Online Tracking Is Out of Control—Privacy Badger Can Help You Fight Back (eff)15,023
, , ,
Scrum Not Working? Try It as Is Before You Modify It (ste)15,022
, ,
Website Hijack Campaign Now Impacting 150,000 Sites (gad)15,021
How to Conduct an Accessibility Audit: A Step-by-Step Guide15,020
, , , ,
Jo Minney on Website Usability Testing for WordPress Projects (jom+)15,019
, , , ,
[“a:focus-visible”] (ada)15,018
, ,
JavaScript’s Missing Link: Wasp Offers Full Stack Solution (low/the)15,017
, , ,
Direct Access vs. Sequential Access: Why Direct Is Better15,016
,
Malware Found on npm Infecting Local Package With Reverse Shell (rev)15,015
, ,
What’s the Future of Platform Engineering? (ma1+/the)15,014
, , ,
What’s New in WebGPU (Chrome 135) (dev)15,013
, , , ,
The Case for “Old School” CSS (hui)15,012
, ,
A11y 101: 1.4.3 Contrast (Minimum) (nat)15,011
, , , , ,
Land Ahoy: Leaving the Sea of Nodes15,010
, , ,
React Query API Design: Lessons Learned (tkd)15,009
, , , , ,
You Should Know This Before Choosing Next.js (edu)15,008
, ,
“input type="number"” (kev)15,007
,
Artificial Intelligence Needs Community Intelligence (all)15,006
, ,
The “<select>” Element Can Now Be Customized With CSS (arg/dev)15,005
,
Expressing Japanese Grammar Through TypeScript Type System15,004
, ,
Is Vibe Coding Agile or Merely a Hype? (scr)15,003
, , ,
War Story: The Hardest Bug I Ever Debugged (jak)15,002
, , , , ,
UX or PX? Why Naming Matters (uxd)15,001
,
Mission jQuery Zero: How FreeAgent Removed jQuery From Our Application (fre)15,000
, , ,
Layered Text Headers (chr/fro)14,999
, , ,
“aria-label” Is a Letdown (thi/wag)14,998
, , ,
Support Logical Shorthands in CSS (geo/css)14,997
, ,
Whose Design Process? (uxd)14,996
, , ,
Grid First, Flex Third (fim)14,995
, , ,
Directives: A Core Feature of the Angular Toolkit14,994
,
AI Is the Future of Accessibility (kar)14,993
, ,
Don’t Use Scores From Automatic Tools in Your Accessibility Statement (cer)14,992
, , ,
Holographic Masks (hej)14,991
, , , ,
Is Vite Faster Than Turbopack?14,990
, , , , , ,
UI Algorithms: A Tiny Undo Stack (jul)14,989
, ,
How Navigation Should Work for Keyboard Users (tem)14,988
, , ,
Create an HTML Dialog When You Click an Image (cas)14,987
, ,
Cursor, “Vibe Coding,” and Manus: The UX Revolution That AI Needs (uxd)14,986
, , , , ,
Previewing Content Changes in Your Work With “document.designMode” (sma)14,985
, , , ,
JavaScript Basics for a Senior Dev14,984
, , ,
How to Create Quality Content (Follow Our 5-Level Framework) (ahr)14,983
, , , ,
Cracking the Code of Vibe Coding (uxd)14,982
, , , , , ,
This Is the Optimal Team Size That Improves Performance by 400%14,981
,
Revisiting CSS “border-image” (mal/css)14,980
, , ,
Testing Design Systems in 2025 (blv)14,979
, , ,
Revisiting Fluid Type (ric+/odd)14,978
, , , ,
Five Things Vibe Coders Should Know (From a Software Engineer) (uxd)14,977
, ,
Cowardly Defaults and Courageous Overrides With Modern CSS (tyl/clo)14,976
, ,
Carousels With CSS (arg/dev)14,975
, ,
Composite vs. Simple Tokens14,974
, , ,
How WebAssembly Components Can Replace JavaScript SDKs (sac)14,973
, ,
SSR Deep Dive for React Developers14,972
, , ,
Web Accessibility Requirements in the EU (mar/uxd)14,971
, , , , ,
Stop Chasing New JavaScript Frameworks: Build With Fundamentals Instead14,970
, , , , , , ,
My Thoughts on Asynchronous Accessibility APIs (jcs)14,969
, ,
The “contenteditable” “plaintext-only” Attribute Value Combination Is Now Baseline Newly Available (tom/dev)14,968
, , , ,
Where Frontend Dogma Gets Its News From (j9t)14,967
, , ,
Quick Reminder That “:is()” and “:where()” Are Basically the Same With One Key Difference (geo/css)14,966
, ,
Why UI Automation Is Insufficient as an Accessibility API for the Web (jcs)14,965
, ,
Naming Things in Design Systems—and Why It’s the Worst (pjo)14,964
, ,
Quick Accessibility Wins That Are Easy to Implement (kev)14,963
, , , , , , , , , ,
Not All AI-Assisted Programming Is Vibe Coding (but Vibe Coding Rocks) (sim)14,962
, , ,
Generate Growing Images Using Gemini API14,961
, ,
Minding the Gaps: A New Way to Draw Separators in CSS (pat)14,960
,
Understanding the European Accessibility Act (EAA) (tin/tet)14,959
, ,
Node.js TSC Votes to Stop Distributing Corepack (sar/soc)14,958
,
Introducing Motion for Vue (cit)14,957
, , ,
Style Legend (ada)14,956
,
GitHub Suffers a Cascading Supply Chain Attack Compromising CI/CD Secrets (inf)14,955
, ,
The Bare Minimum You Need to Enable View Transitions on Your Website (ami)14,954
, , ,
Designing Design Systems: A Framework for Names, Terms, and Definitions14,953
, , ,
Next.js vs. TanStack14,952
,
Polite is Often Better Than Being Alerted (oze)14,951
, ,
How to Think About Baseline and Polyfills (mal/dev)14,950
, , , ,
Downtime vs. Slowtime: Which Costs You More? (tam/spe)14,949
, ,
A Deep Dive Into the Inline Background Overlap Problem (ana/fro)14,948
, , , ,
Reducing CSS Complexity With the “:is()” Pseudo-Class (cfe)14,947
, ,
Self Gap (sha)14,946
, ,
Past and Present Futures of User Interface Design14,945
, , ,
A11y 101: 1.4.2 Audio Control (nat)14,944
, , ,
Breadcrumbs Are Dead in Web Design (web)14,943
,
Bulk Actions: 3 Design Guidelines14,942
, , ,
Is React Accessible? That’s the Wrong Question14,941
, , , ,
Explaining UX Design Through the Lens of Construction (uxm)14,940
, , ,
Web Components vs. Framework Components: What’s the Difference? (sma)14,939
, , , ,
Leveraging 3 Types of User Feedback to Create Better User Experiences (uxm)14,938
,
Please Stop Externalizing Your Costs Directly Into My Face (sir)14,937
, , ,
Styling Counters in CSS (mon/css)14,936
, ,
But How to Get to That European Cloud? (ber)14,935
, ,
10 Uses for Variables Beyond Light and Dark Mode (ali)14,934
, ,
Let’s Knock Down Social Media’s Walled Gardens (tim)14,933
,
Web Scraping With Cheerio in 2025 (api)14,932
, ,
Maintaining Screenshot Quality and Color Profile in Figma (max)14,931
, , , ,
Accessibility Requires Clear Responsibilities or It Will Fail (cer)14,930
, ,
“Classless.css” Framework14,929
,
Coding vs. Vibe Coding14,928
, , , ,
Why the Latest JavaScript Frameworks Are a Waste of Time14,927
, , ,
The Hidden Burden of Architectural Decision Fatigue (and How to Fix It)14,926
,
System Design Roadmap for Beginners14,925
,
Designers, Your Excuse Is Gone. Stunning, Animated, and Accessible. Yes, You Can! (bov)14,924
,
Popping Preconceived Popover Ponderings (sco)14,923
, ,
How to Get Deep Traces in Your Node.js Backend With OTel and Deno (den)14,922
, , , , ,
Accelerating Large-Scale Test Migration With LLMs14,921
, , ,
State of Vue.js Report 202514,920
, , ,
ADA Compliance vs. WCAG Conformance14,919
, , , , ,
Browse No More (sta)14,918
, , , ,
How to Prevent WordPress SQL Injection Attacks (sma)14,917
, , , ,
How GitHub Engineers Learn New Codebases (bri/git)14,916
, ,
“Intl.DurationFormat”: Format Time Durations With Locale Support (tre)14,915
,
How WebAssembly Crushes Technical Debt14,914
, ,
Chilled Out Text Underlines (chr/fro)14,913
, ,
“:in-range” Pseudo-Class (kev)14,912
, ,
Nobody Should Be a “Content Creator” (cod)14,911
, , ,
Create a Fun Quick Text Flip Effect (kev)14,910
, ,
A Perplexing JavaScript Parsing Puzzle (hil)14,909
, ,
A 10× Faster TypeScript14,908
,
Retrieval-Augmented Generation With Node.js, Podman AI Lab, and React14,907
, ,
View Transitions Applied: Smoothly Animating a “border-radius” With a View Transition (bra)14,906
, , ,
What’s Missing With AI-Generated Code? Refactoring (ste/the)14,905
, , , , , , ,
On JavaScript Closures (With Examples of Interview Questions) (mar)14,904
, , , , ,
Automated Tools Can Ensure Full Accessibility Compliance14,903
, , ,
Content Churn in Google Doubled Over Five Years (moz)14,902
, , , ,
DOJ Pushes for Google to Sell Chrome to Break Search Monopoly14,901
, , , ,
Future of CSS: “select” Styling Without the Hacks14,900
, , ,
CSS System Colors (ant)14,899
,
Ten Years Ago Today I Coined the Shorthand “js;dr” for “JavaScript Required; Didn’t Read” (tan)14,898
, ,
Design Systems Report 2025 (zer)14,897
, , , ,
A11y 101: 1.4.1 Use of Color (nat)14,896
, , ,
Lazarus Strikes npm Again With New Wave of Malicious Packages (soc)14,895
, ,
The Hype and Risks of Vibe Coding (uxd)14,894
, , , ,
Relative Colors (sha)14,893
, , ,
Here’s How Chrome Could Lose the Browser War14,892
, , , ,
How to Handle “Urgent Request” in Scrum14,891
, , , ,
Is Cursor Better Than VS Code With Copilot? Absolutely and It’s Not Close14,890
, , , , , , ,
WAI a Day (yat)14,889
, ,
Devs: Draw Your Line (rem)14,888
, ,
Great Software Design Looks Underwhelming14,887
,
Prompt Engineering for Web Development14,886
,
What Is the OWASP Top 10 and How Can Your Team Benchmark Security? (jet)14,885
, , , ,
Page Speed: Avoid Large Base64 Data URLs in HTML and CSS (deb)14,884
, , , ,
Implementing “aria-describedby” for Web Accessibility (flo/a11)14,883
, , , ,
DeepSeek and HTML (j9t)14,882
, , ,
Creating Animated Accordions With the “details” Element and Modern CSS (ste/bui)14,881
, , ,
“aria-label” Requires a Valid Role (cfe)14,880
,