Frontend Dogma

News and Tools for Frontend Developers

Articles and videos and books, people and projects and processes, tools and tips and tricks from the world of frontend development. Also great for web and full-stack developers.

(Stay up-to-date on all topics by RSS feed, on Mastodon, and through other channels.)

Featured on Frontend Dogma? Confirm and whitelist your domain.

Hiring remote frontend specialists? Compare benefits and post your job ad.

  1. Past HTML, Future HTML? (by/via) · ·
  2. Almost, but Not Quite, Entirely Unlike… (by/via) · · , , ,
  3. CSS Wrapped 2024 (by+/via) · · , , ,
  4. What Is HTML Optimization? What Is It Not? (by) · · , ,
  5. Forced Colors Mode Futility (by/via) · · , , ,
  6. A Leap in the Evolution of Airtable’s Codebase: Scaling TypeScript to Thousands of Projects (via) · · , ,
  7. Control the Viewport Resize Behavior on Mobile With “interactive-widget” (by/via) · · , , , , ,
  8. How Does the React Compiler Perform on Real Code (by/via) · · , , , ,
  9. 24 Best AI Tools for Developers in 2025 (by/via) · · , ,
  10. Googling Is for Old People: What This Means for Web Designers (via) · · , , ,
  11. Creating an Effective Multistep Form for Better User Experience (by/via) · · , , ,
  12. Why We Switched to Astro (and Why It Might Interest You) (by/via) · · , ,
  13. Smooth Multi-Page Experiences With Just a Few Lines of CSS (by/via) · · , ,
  14. A Beginner’s Guide to Information Architecture in UX (via) · · , ,
  15. How GenAI Impacts User Experiences—Even Beyond AI (via) · · , ,
  16. Starting Off Right: Where Autofocus Shines (by/via) · · , ,
  17. How to Usability Test Your Product (if You Want Bad UX) (by) · · , , ,
  18. Blast From the Past: 2advanced.com (via) · · , , ,
  19. Development Advent Calendars for 2024 (by) · · ,
  20. A Link on a Logo in the Header, What Should the Alt-Text Be? (by/via) · · , , , , ,
  21. Why You Should Avoid Grand System Redesigns (by) · · , , ,
  22. How to Join Blue Beanie Day: Wear and Share (by) · · , ,
  23. Angular v19 No Signals Edition (by/via) · ·
  24. The Many Faces of Digital Accessibility (by/via) · · , ,
  25. Let’s Learn Generators in JavaScript · · ,
  26. If Not React, Then What? (by) · · , , , ,
  27. Why Pipes Sometimes Get “Stuck”: Buffering (by) · · ,
  28. New to the Web Platform in November (by/via) · · , , , , , ,
  29. Understanding CSS Inheritance: A Guide to Consistent Styling (by) · · , ,
  30. Preloading Responsive Images (by) · · , , ,
  31. 10 Git Commands You’ll Wish You Knew Earlier · · ,
  32. When Is It Time to Move Prototyping From Figma to ProtoPie? (by/via) · · , , ,
  33. A Quick Snapshot of the Microblogging Landscape (by) · · , , , , , ,
  34. Prisma 6: Better Performance, More Flexibility, and Type-Safe SQL (by/via) · ·
  35. Observation: CSS Math Eval (by) · · , ,
  36. Decoupling OKRs: It’s Time to Let Go (by) · · , , ,
  37. Unit Testing in Node.js With Jest (by/via) · · , ,
  38. Optimizing JavaScript Engine Performance (by/via) · · , , ,
  39. Contributing to JavaScript and TypeScript (by/via) · · , , , ,
  40. Create Accessible Websites: Top Free Tools You Need to Know (by) · · , , , , , , ,
  41. Faster TypeScript Compilation (by/via) · · , , ,
  42. Jekyll to Astro: An AI-Assisted Migration · · , , , ,
  43. Avoid Hotlinking Images With “Cross-Origin-Resource-Policy” · · ,
  44. How to Cut Water Usage in Cloud Data Centers (by/via) · · ,
  45. The Hype Around Signals (by/via) · · , ,
  46. A Framework for Evaluating Browser Support (by) · · , , ,
  47. Why AI Can’t Replace Developers: The Real Limits of AI in Coding (by) · · ,
  48. The Free Web (by) · · ,
  49. Which IDEs Do Software Engineers Love, and Why? (by) · · , ,
  50. Designing (and Evolving) a New Web Performance Score (by) · · ,
  51. X’s Objection to the Onion Buying Infowars Is a Reminder You Do Not Own Your Social Media Accounts (by/via) · · ,
  52. Automated Decision Logs in AI-Assisted Coding (by) · · ,
  53. How I Feel About AI (by) · · , , , ,
  54. Agile Is Dead · · , , , , ,
  55. How Browsers Really Load Web Pages (by/via) · · , , , , ,
  56. Design Systems vs. Style Guides (via) · · , , , , ,
  57. Deno vs. Oracle: Canceling the JavaScript Trademark (by/via) · · , ,
  58. What Causes “Bad Days” for Developers? (by) · · , ,
  59. Old Alt Text Advice (by) · · , , , , ,
  60. Content Security Policy Level 3 (by/via) · · , ,
  61. Solved by CSS: Donuts Scopes (by/via) · · ,
  62. Screenshot-Driven Development (by) · · , ,
  63. Recursion Explained in Simple Terms (by) · · ,
  64. The PHP Foundation Turns Three (by/via) · · ,
  65. Node.js 22 Runtime Now Available in AWS Lambda (by/via) · · , ,
  66. Third Parties (by+/via) · · , , , , , , , , , , , , ,
  67. Where Has All the Valid HTML Gone (by) · · , ,
  68. Doing the Numbers: Digital Accessibility and Shifting Left (via) · · , , ,
  69. What’s Next for WebGPU (by/via) · ·
  70. CSS Selectors: Unlocking Advanced Selectors for Modern Web Design (by) · · ,
  71. Tailwind CSS v4.0 Beta 1 (by/via) · ·
  72. Why We Need to Have a Change of HEART With UX Metrics (by/via) · · , ,
  73. Exploring Alternative Interactions in JavaScript (by/via) · · , , ,
  74. I Don’t Have Time to Learn React (by) · · , , ,
  75. Avoid Read-Only Controls (by) · · , ,
  76. Make Creative Borders With “background-clip: border-area” (by/via) · · , , , , ,
  77. An Outline Version of the New CSS Logo (by) · ·
  78. React.js Best Practices for Beginners: A Comprehensive Guide (via) · · , , , , , ,
  79. What We Learned Migrating From Webpack to Vite (via) · · , , ,
  80. Static Site Generation With Next.js: Using Next.js for React.js Applications (via) · · , ,
  81. My 3 Most-Wanted CSS Table Features (by) · · , , ,
  82. So You Decided to Do a Technical Migration (by/via) · · , ,
  83. How to Use Lighthouse Wisely in Your Front-End Projects (by/via) · · , , , , , , ,
  84. The CSS Reset Contradiction (by/via) · · ,
  85. WP Engine Updates Its Original Legal Complaint Against Automattic and Matt Mullenweg (by/via) · · , , ,
  86. Avoiding False Positives in Node.js Tests (via) · · ,
  87. Mastering Accessible Modals With ARIA and Keyboard Navigation (via) · · , , , ,
  88. How to Prerelease an npm Package (by/via) · · , , , ,
  89. Why WASM: Quickstart (by) · ·
  90. Migrating From VuePress to VitePress (by) · · , ,
  91. AI’s Transformative Impact on Web Design: Supercharging Productivity Across the Industry (by/via) · · , , ,
  92. Meet Angular v19 (by/via) · · ,
  93. Node.js Corepack: Version Control for Package Managers (by) · · , , ,
  94. State of JavaScript 2024 (by/via) · · ,
  95. Testing Digital Products the RITE Way (by/via) · · , ,
  96. Foundations: Types of Disability (via) · · ,
  97. Anchor Positioning Is Disruptive (by/via) · · , ,
  98. Why Is Hiring Software So Impersonal? (by/via) · · , ,
  99. The Future of Voice User Interfaces (via) · · ,
  100. Importing a Frontend JavaScript Library Without a Build System (by) · · , , , , ,
  101. AWS Lambda Turns Ten—Looking Back and Looking Ahead (by/via) · · , , , ,
  102. Web Accessibility and the Second Trump Administration (via) · · ,
  103. Addressing Users’ Painpoints: Best Practices for Identifying and Solving UX Design Problems (by/via) · · , , , ,
  104. Why Responsive Design Is Failing Modern Users (via) · · , , ,
  105. No Fuss Light/Dark Modes (by/via) · · ,
  106. Can [Open Source Pledge] Fix Open Source Sustainability? (by) · · , ,
  107. Content Design Practices for Sustainable Communication in Tech (via) · · , ,
  108. The Tragedy of Running an Old Node Project (by) · ·
  109. The Root Causes for the Dev–Design Mismatch (by/via) · · , ,
  110. CSS Gets a New Logo: And It Uses the Color “rebeccapurple” (by) · ·
  111. The Art of Clean Code: A Practical Guide to Writing Maintainable JavaScript · · , , ,
  112. Against Best Practices (by) · · ,
  113. Some Tips for Keyboard Support on Native Mobile Applications (by) · · , , , ,
  114. When Is the Right Time to Share Our Excitement About New Web Features? (by) · · , ,
  115. The Next Improvement in Angular Reactivity (by/via) · · ,
  116. Ghost Jobs Should Be Illegal (by) · · ,
  117. Exploring JavaScript Symbols (by) · ·
  118. What Is User Experience (and What Is It Not)? (by/via) · · , ,
  119. Alt Text: Not Always Needed (by/via) · · , ,
  120. How Is Digital Accessibility Awareness Being Promoted Across the Globe? (via) · · ,
  121. 10 Advanced TypeScript Concepts Every Developer Should Know (by) · · ,
  122. Self-Contained Executable Programs With Deno Compile (by+/via) · · , , ,
  123. Adding Interactive Charts in Astro · · , ,
  124. State of HTML 2024 [Results] (by/via) · · ,
  125. Reimagining Prototyping With AI (by/via) · · , , ,
  126. 1 + 2 Engineering Team Priorities (by) · · , , ,
  127. Global Digital Accessibility Salary Survey (via) · · , ,
  128. Most Disabled People “Excluded” by Unfit Designs (via) · · , ,
  129. Custom Progress Element Using Anchor Positioning and Scroll-Driven Animations (by/via) · · , , ,
  130. View Transitions API: Single Page Apps Without a Framework (by/via) · · , , ,
  131. Modern CSS for Sites: View Transitions, Scroll Effects, and More (by/via) · · , , , ,
  132. The European Accessibility Act—Get Ready (via) · · ,
  133. Learn Big O Notation Once and for All · · , ,
  134. Cookie Permissions: 5 Common User Types (by/via) · · , , , ,
  135. Accessibility Misinformation (by) · · , ,
  136. An Official Logo for CSS (by) · ·
  137. Why Developers Should Give Next.js App Router Another Chance (by/via) · · ,
  138. The “br” Element (by) · · ,
  139. Understanding Bitwise Shifts in JavaScript: “<<” and “>>” (by) · · ,
  140. What Accessibility Statements Are Really For (by) · · ,
  141. Overflow Clip (by) · ·
  142. How to Optimize Performance in Vue Apps (by/via) · · , , ,
  143. Color in CSS or How I Learned to Disrespect Tennis (by/via) · · , , ,
  144. Carving Your Space (by) · · ,
  145. A CSS Logo Hatches! (by) · · ,
  146. Angular Best Practices (by) · · , ,
  147. The Art in Everyday Life (by) · · ,
  148. Automattic Launches “WP Engine Tracker” to Monitor Sites Leaving WP Engine, Sparking Controversy (by/via) · · ,
  149. Why I Will Always Be Angry About Software Engineering (by) · · ,
  150. Anchoreum—a Game for Learning CSS Anchor Positioning (via) · · , , ,
  151. Ecommerce (via) · · , , , , ,
  152. Design Tokens: Authoring vs. Consuming (by) · · , , ,
  153. (Up-)Scoped Scroll Timelines (by/via) · · , ,
  154. Are AI Assistants Making Us Worse Programmers? (by) · · , , , ,
  155. CDN (via) · · , , , ,
  156. Implementing Astro Search Functionality · · , ,
  157. Don’t Forget to Localize Your Icons (by) · · , , ,
  158. Jamstack (by/via) · · , , , , ,
  159. Accessibility (by/via) · · , , , ,
  160. Security (by+/via) · · , , , ,
  161. Structured Data (by/via) · · , , , , ,
  162. Sustainability (by+/via) · · , , , ,
  163. Performance (by+/via) · · , , , ,
  164. CMS (by+/via) · · , , , ,
  165. Fonts (by/via) · · , , , ,
  166. Cookies (by/via) · · , , , ,
  167. Markup (by/via) · · , , , ,
  168. Essential tsconfig.json Options You Should Use (by) · · ,
  169. Should Destructive Buttons Be Hard to Find? (by) · · ,
  170. Two Different Kinds of “Focusable” UI Elements (by) · · , ,
  171. Biome.js, a Toolchain to Format and Lint Your Web Project (via) · · , , ,
  172. JavaScript Import Attributes (ES2025) (by) · · ,
  173. Why Does JavaScript’s “parseInt(0.0000005)” Print “5”? · ·
  174. Why I Moved From Google Analytics to Simple Analytics (by) · · , ,
  175. Test Smart: Which Automation Strategy to Choose for Peace of Mind? (via) · · , , ,
  176. Release Notes for Safari Technology Preview 207 (by/via) · · , , ,
  177. The Different (and Modern) Ways to Toggle Content (via) · · , , ,
  178. Node.js Implements Stricter Policies for Semver-Major Pull Requests Ahead of Release Deadlines (by/via) · ·
  179. How a BBC Navigation Bar Component Broke Depending on Which External Monitor It Was On (by) · · , ,
  180. Mapping Over Promises in JavaScript (by/via) · · ,
  181. State of CSS and State of HTML 2024 (by) · · ,
  182. The Rebellion Will Be Federated (by) · · , ,
  183. Five Lessons for Five Years in Tech (by) · · ,
  184. AI Features Must Solve Real User Problems (by/via) · · , ,
  185. The Lowdown on Dropdowns in HTML and CSS (by/via) · · ,
  186. Bluesky’s AT Protocol: Pros and Cons for Developers (by/via) · · , ,
  187. Next.js to htmx—a Real World Example (via) · · , ,
  188. How to Identify Decorative Images and Boost Accessibility (via) · · , , , , ,
  189. Node.js Now Supports TypeScript Natively (by) · · , ,
  190. Why Alpine Is the New jQuery and Why That Is an Awesome Thing (by/via) · ·
  191. Should Web Designers Learn JavaScript or CSS? (by) · · , , ,
  192. How to Set Up Next.js 15 for Production in 2024 (by/via) · · ,
  193. The Deterioration of Google (by) · · ,
  194. More Options for Styling “<details>” (by/via) · · ,
  195. Exploring Internet Traffic Shifts and Cyber Attacks During the 2024 US Election (by+/via) · · ,
  196. My Anti-Overlay Client Letter (by) · · , , , ,
  197. Celebrating Innovation and Impact: JavaScriptLandia Community Awards (via) · · ,
  198. Web Audio API 1.1 (by+/via) · · , ,
  199. How Do HTML Event Handlers Work? (by) · · , ,
  200. A Guide to Designing Errors for Workflow Automation Platforms (via) · · , , ,
  201. What’s a Single-Page App? (by) · · , , , , , , ,
  202. Unlocking Accessibility: Content Designers Share Their Experience and Advice (via) · · , ,
  203. How Bun Supports V8 APIs Without Using V8 II (via) · · , , ,
  204. How to Test JavaScript for Accessibility Compliance (by/via) · · , , , , ,
  205. Introducing the vlt Package Manager and Serverless Registry (by+/via) · · , , , ,
  206. Beautiful Focus Outlines (by) · · , , ,
  207. JavaScript’s “&&=” Operator: Understanding Logical “AND” Assignment (by) · · ,
  208. Mastering Interaction to Next Paint (INP) (by/via) · · ,
  209. What’s the Deal With WebKit Font Smoothing? (by) · · , ,
  210. Vercel Makes Changes to Next.js to Simplify Self-Hosting (by/via) · · , ,
  211. JavaScript’s “??=” Operator: Default Values Made Simple (by) · · ,
  212. Fluid Everything Else (via) · · , ,
  213. Why Optimizing Your Lighthouse Score Is Not Enough for a Fast Website (by/via) · · , , , ,
  214. How to Optimize React Performance: Best Practices and Techniques (via) · · , , , , ,
  215. Platform vs. DevEx Teams: What’s the Difference? (by) · · , ,
  216. Designing for “How Might Things Go Wrong?” (by/via) · · , ,
  217. Disabled and Obscured (by) · · , , , ,
  218. How I Improved Video Streaming With FFmpeg and Node.js (by) · · , ,
  219. What Do Survey Demographics Tell Us? (by/via) · · , ,
  220. Sustainable Web Interest Group Is Formed (by/via) · · , ,
  221. Using Cache Control in Nuxt to Improve Performance (by) · · , ,
  222. The Psychology of Attention for UX Designers (by/via) · · ,
  223. How Gestalt Principles Influence UX Design (via) · · , ,
  224. Named Scroll and View Timelines (by/via) · · ,
  225. The Impact of Artificial Intelligence on UX Design (via) · · , , , , ,
  226. The “button” Element (by) · · , , ,
  227. A Friendly Introduction to Container Queries (by) · · , ,
  228. Exploring the Browser Rendering Process (by) · · , , , ,
  229. What Happened to the Agile Movement? (by) · · , , , ,
  230. Securing Your Express REST API With Passport.js (by/via) · · , , , , ,
  231. Building My Resume in HTML Using Eleventy (by) · · , ,
  232. How to Write Better TypeScript Code: Best Practices for Clean, Effective, and Scalable Code (by) · · ,
  233. The Only Accessibility Video You Will Ever Need (by) · · ,
  234. Your CSS Reset Should Be Layered (by) · · , ,
  235. Please Publish and Share More (by) · · ,
  236. The Open Source AI Definition 1.0 (by) · · ,
  237. JavaScript Do’s and Don’ts (by) · · ,
  238. AI in Chrome DevTools (by/via) · · , , , , ,
  239. You Are Not a CSS Dev if You Have Not Made a CSS Reset (by) · · , ,
  240. The “<details>” and “<summary>” Elements Are Getting an Upgrade (by) · ·
  241. The Real Question We Should Be Asking About Agile Transformation (by/via) · · , ,
  242. CSS Masonry Layout Syntax (by/via) · · , ,
  243. 25 Accessibility Tips to Celebrate 25 Years (by/via) · · , , ,
  244. “Functionality” Is Not Constrained by Content (by/via) · · , , ,
  245. The “body” Element (by) · · ,
  246. I Followed the Official AWS Amplify Guide and Was Charged $1,100 · ·
  247. A Comprehensive Introduction to CI/CD Pipelines (by) · · , , ,
  248. @ wasmer/sdk Adds Node.js and Bun Support (by/via) · · , ,
  249. Maintaining a Growth Mindset (by/via) · · , , ,
  250. The Importance of Giving Feedback Early: Don’t Let Resentment Fester (by) · · , ,