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.

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

  1. Feature Detect Style Queries Support in CSS (by/via) · · , , , ,
  2. An Introduction to WebAssembly (by+/via) · · , ,
  3. ESLint Now Officially Supports Linting of JSON and Markdown (by/via) · · , , , ,
  4. cpx—the npx Counterpart of the PHP Ecosystem (by) · · ,
  5. Benchmarking the Performance of CSS “@ property” (by/via) · · , ,
  6. Interview With Björn Ottosson, Creator of the Oklab Color Space (by+/via) · · , ,
  7. Unleash JavaScript’s Potential With Functional Programming (by) · · , ,
  8. Web Components Are Not Framework Components—and That’s Okay (by) · · , ,
  9. Web Components vs. State-Based UI (by) · · , ,
  10. Eleventy v3.0.0: Possums ❤️ ESM (by/via) · · ,
  11. An Interesting HTML Parser Conundrum (by) · · ,
  12. What’s the Difference Between HTML’s Dialog Element and Popovers? (by/via) · · , , ,
  13. The Reality of Balancing Pregnancy in Developer Relations (by) · · ,
  14. Release Notes for Safari Technology Preview 204 (by/via) · · , , ,
  15. Why Gumroad Didn’t Choose htmx (by/via) · · ,
  16. Understanding Cultural Norms to Design Inclusive User Experiences (via) · · , , ,
  17. The “bdi” Element (by) · · , ,
  18. New to the Web Platform in September (by/via) · · , , , , , , , ,
  19. 4 Tips for Unlocking the Benefits of Svelte in Frontend Development (by/via) · · , ,
  20. How to Learn HTML: 46 Great Sites, Courses, and Books (All Free) · · , , , , ,
  21. Solved by CSS Scroll-Driven Animations: Hide a Header When Scrolling Down, Show It Again When Scrolling Up (by/via) · · , , ,
  22. Matt Mullenweg Announces Temporary Lifting of WP Engine Ban (via) · · ,
  23. Web Components Are Okay (by) · ·
  24. POSSE: Reclaiming Social Media in a Fragmented World (by) · · ,
  25. Untrained Engineering Managers (by) · · , , ,
  26. NIST Recommends Some Common-Sense Password Rules (by) · · , ,
  27. “img sizes=auto” for Native Lazy Loading (by) · · , , , ,
  28. A Complete Guide to Session Management in Next.js (via) · · , , ,
  29. Making Maps Accessible to Screen Readers (via) · · , , , ,
  30. Catching Up on the WordPress WP Engine Sitch (by/via) · · ,
  31. Web Components Are Not the Future (by) · · , ,
  32. 5 Questions for Craig Buckler (by+/via) · · , ,
  33. Dynamic Numbering With CSS Counters (by) · · ,
  34. Observing Style Changes (by/via) · · ,
  35. Automattic Sends WP Engine Its Own Cease-and-Desist Over WordPress Trademark Infringement (by/via) · · , ,
  36. Will Deno 2.0 Replace Node.js? (by) · · , , ,
  37. I Finally Understand OAuth · · , , ,
  38. Feature Detecting Scroll-Driven Animations With “@ supports”: You Want to Check for “animation-range” Too (by/via) · · , , , , , ,
  39. Conway’s Law: The Hidden Force Shaping Your Software Architecture (by) · · , ,
  40. A Comprehensive Guide to Node.js Addons (by) · · ,
  41. 2000s + 2010s = 10,000 (via) · · ,
  42. Error Messages: 4 Guidelines for Effective Communication (by/via) · · , , ,
  43. Firefox DevTools Newsletter 130 (by/via) · · , , , ,
  44. Bad CSS-Dad Jokes II (by) · ·
  45. Keeping Pixely Images Pixely (and Performant!) (by/via) · · , ,
  46. Getting Started With CI/CD: A Beginner’s Guide to Automating Your First Pipeline (With Jenkins) · · , , , ,
  47. Your Accessibility Questions Answered by a Blind Person (via) · ·
  48. Outdated Docs Are Tech Debt (by) · · , , ,
  49. No Authentication Like Button (by) · · , ,
  50. Masonry and Good Defaults (by) · · ,
  51. Angular Routing Essentials: All You Need to Know in One Post (by) · · , ,
  52. Powerful WebStorm Tips and Tricks: Boost Your Productivity · · , , , ,
  53. If You Don’t Write Unit Tests… It’s a Skill Issue (by) · · ,
  54. Good UX Is Not Just About Minimizing Clicks (by/via) · · , , ,
  55. Pfizer’s Future of Development (by/via) · · , , , ,
  56. Fundamentals of Frontend Architecture (by) · · , ,
  57. A Beginner’s Guide to Using Bluesky for Business Success (via) · · , ,
  58. Deno 2.0 Release Candidate (by+/via) · · ,
  59. Paying Down Tech Debt: Further Learnings (via) · · ,
  60. Fake GitHub Site Targeting Developers (by/via) · · ,
  61. Code Wins Arguments (by) · · ,
  62. Don’t Sleep on AbortController (by) · ·
  63. Dealing With Rejection After Applying to Hundreds of Jobs (by) · · ,
  64. Node.js 20 Upgrade: A Journey Through Unexpected Heap Issues With Kubernetes (by/via) · · , , ,
  65. The Nine Node Pillars (by/via) · · , ,
  66. Why We Switched From Cypress to Playwright (via) · · , , , , ,
  67. Better Vue Components With TypeScript (by) · · , , ,
  68. SVG Coding Examples: Useful Recipes for Writing Vectors by Hand (via) · · , ,
  69. Compile and Run C in JavaScript (by/via) · · ,
  70. What’s New in DevTools: Chrome 127–129 (by+/via) · · , , , ,
  71. A Step-by-Step Guide to Conducting a Web Accessibility Audit (via) · · , , , ,
  72. Improving Rendering Performance With CSS “content-visibility” (by) · · , , ,
  73. On Ticket Management (by) · · , , ,
  74. Introduction to Micro Frontends: An Overview (via) · · , ,
  75. Animate to “height: auto;” (and Other Intrinsic Sizing Keywords) in CSS (by/via) · · ,
  76. The Problem of Knowledge Debt in Tech (by/via) · · , ,
  77. Clever Polypane Debugging Features I’m Loving (by/via) · · , , ,
  78. Get Ready for Interop 2025: Your Chance to Shape the Web (by/via) · · , , ,
  79. The Continuing Tragedy of Emoji on the Web (by) · · , , ,
  80. CSS Grid Layout Module Level 3 (by+/via) · · ,
  81. Accessibility Preference Settings, Information Architecture, and Internalized Ableism (by) · · , , ,
  82. Submit Your Proposals for Interop 2025 (by/via) · · , , ,
  83. The Real Cost of Meetings: What FAANG Companies Do Differently (by) · · , , , , , ,
  84. Rethinking Code Reviews With Stacked PRs (by) · · , , ,
  85. Selecting Previous Siblings (by/via) · · ,
  86. Optimising for High Latency Environments (by) · · , , , ,
  87. Why HTML Has Both “<b/i>” and “<strong/em>”? (by) · · ,
  88. When to Start Blogging? (by) · ·
  89. WebKit Features in Safari 18.0 (by/via) · · , , , ,
  90. Oracle, It’s Time to Free Javascript (by+) · · , ,
  91. How to Teach CSS (by/via) · · , ,
  92. Making Orbit Animations With CSS Custom Properties (by) · · , , ,
  93. Stop Designing Your Web Application for Millions of Users When You Don’t Even Have 100 (by) · · , ,
  94. What’s the Difference Between Information Architecture and Content Strategy? (by) · · , , , , ,
  95. The Magic Behind Laravel’s New “defer()” Helper (by) · ·
  96. How to Create a Type to Retrieve All Keys of an Object in TypeScript (by) · · , ,
  97. Evolve or Become Irrelevant (by) · · ,
  98. Noisy, Hungry Data Centers Are Catching Communities by Surprise (by/via) · · ,
  99. Let’s Bring Back Browsing (by) · · ,
  100. The HTTP QUERY Method (by+/via) · · ,
  101. Bitwise Operators in JavaScript and When to Use Them (via) · · ,
  102. Do You Still Use Git in the Terminal? (by) · · , ,
  103. Company Culture Happens Outside Management (by) · · ,
  104. Brief Note on Disclosures in Fieldsets (by) · · , ,
  105. The Importance of Title Tags: Tips and Tricks to Optimize for SEO (via) · · , , ,
  106. Deceptive Patterns in Copy Are Killing Me (via) · · , ,
  107. Two CSS Properties for Trimming Text Box Whitespace (via) · ·
  108. But Why?? (by) · · , , , , , , ,
  109. Good Forms (by) · · , , , ,
  110. Introducing TanStack Router (by/via) · · , , ,
  111. Make “git diff” Look Beautiful in the Terminal (by) · · ,
  112. CSS Values and Units Module Level 5 (by+/via) · · ,
  113. Predicting Developer Attrition (by) · · ,
  114. Speed Up Your Website With “<link rel=preconnect>” (by) · · ,
  115. Five Ways to Lazy Load Images for Better Website Performance (by/via) · · , ,
  116. When Should You Actually Worry About Tech Debt? (by) · ·
  117. Prioritize Accessibility in Procurement for Better CX and EX (by/via) · · , ,
  118. A Billion New Developers Thanks to AI? (by) · · , , ,
  119. The Folly of Chasing Demographics (by/via) · · , ,
  120. The Redmonk Programming Language Rankings: June 2024 (by/via) · · , , , , , , , , , , ,
  121. Understanding the “Why” Around Neurodivergent Inclusive Web Design (by/via) · · , ,
  122. 10 Developer Tools to Improve Your Daily Life as a Developer · · , ,
  123. State of HTML 2024 (by/via) · · ,
  124. Reasons I Still Love the Fish Shell (by) · · ,
  125. A Day in the Life of a DevOps Engineer: Real Stories and Challenges · · , ,
  126. Rethinking CSS in JS · · , , , , , ,
  127. Using Controllers for Keyboard Accessibility (by/via) · · , ,
  128. Split Effects With No Content Duplication (by/via) · · , ,
  129. Why Copilot Is Making Programmers Worse at Programming (by) · · , , , , ,
  130. React 19 Cheat Sheet (by) · · ,
  131. Verso Taking Shape as a Servo-Powered Web Browser (by/via) · · , ,
  132. Something Went Wrong (by) · · , , , ,
  133. Google Is Killing Information Economics on the Internet (by) · · , ,
  134. Express.js 5.0 Released After Long Delay, Though Not Yet Default as Project Appeals for Contributors (via) · ·
  135. 2024: 0.5% of the Global Top 200 Websites Use Valid HTML (by) · · , , , ,
  136. Standalone Components Are the Future · · , ,
  137. Logical Properties in Size Queries (by/via) · · , ,
  138. How to Find the Accessible Name of a Button With Google Chrome (by) · · , , , , , ,
  139. WCAG and Accessibility Beyond Naive Misconceptions (by) · · , , ,
  140. What Price? (by) · · , ,
  141. From Node.js to Deno: How It All Began (by+/via) · · , , , , ,
  142. Stop Recreating the Wheel: Local Government Organizations Sharing Accessibility Information (by/via) · · , , , ,
  143. Tips for Reducing Cyclomatic Complexity (by) · · , , ,
  144. The Neverending Story (by) · · , , , ,
  145. Top 10 Angular Architecture Mistakes You Really Want to Avoid (by/via) · · , ,
  146. The Easiest Way to Start Working with OKRs (by) · · , ,
  147. Anchor Positioning Quirks (by/via) · · ,
  148. Chrome Ends Support for First Input Delay (by/via) · · , , , , ,
  149. Create a Toggle Switch in React as a Reusable Component (by+/via) · · , , , ,
  150. How to Build an AI-Driven User Research Repository (via) · · , , ,
  151. A Web Component for CodePen Embeds? (by) · · , ,
  152. GitHub Trick to Find the Commit That Deleted a File (by/via) · · ,
  153. Time Travelling CSS With “:target” (via) · · ,
  154. The Undeniable Utility of CSS “:has” (by) · · , ,
  155. What Does Hydration Mean? (by/via) · · , , , ,
  156. JavaScript Promises in Depth With V8 Engine Internals (by) · · , ,
  157. More npm Packages on Cloudflare Workers: Combining Polyfills and Native Code to Support Node.js APIs (by+/via) · · , , , ,
  158. Ensuring the Staying Power of User Experience in Your Organization (by/via) · · , ,
  159. CSS Triggers (by) · · , ,
  160. “setImmediate()” vs. “setTimeout()” in JavaScript (by) · · ,
  161. Building the Same App Using Various Web Frameworks (by) · · , , ,
  162. Manual ’Till It Hurts (by) · · ,
  163. The State of ES5 on the Web (by) · · , , ,
  164. Story of a Button (via) · ·
  165. Data Centers Are Eating and Drinking Our Environment (by) · · , ,
  166. Frontend Dev Plus Data Structures and Algorithms: How DSA Can Power Your React App · · ,
  167. Simplicity (via) · · ,
  168. Gaining Access to Anyone’s Browser Without Them Even Visiting a Website (by) · · , , ,
  169. The Secrets of the “delete” Operator in JavaScript (by) · · ,
  170. Unrealistic Deadlines in Software Engineering (by) · · , , ,
  171. Mobile Accessibility Testing: Enhancing User Experience for All (by/via) · · , , ,
  172. A Complete Guide to Beginning with TypeScript (by/via) · · , , ,
  173. “display: contents” Is Not a CSS Reset (by) · · , ,
  174. The Goal Isn’t to Write Less Code (by) · · , ,
  175. I Need an Accessible Hero (via) · · ,
  176. Quick Tip: Using “flatMap()” to Extract Data From a Huge Set Without Any Loop (by) · · , ,
  177. A Compelling Case for the Comma Operator (by) · · ,
  178. UX Design isn’t Dead, You’re Just Confused (via) · · , ,
  179. Design Systems Should Do Less (by/via) · · , ,
  180. caniuse-cli (by) · · , , , , ,
  181. Look Out, Kids: PHP Is the New JavaScript (by/via) · · , , ,
  182. How to Create a Weekly Google Analytics Report That Posts to Slack (by/via) · · , , , , ,
  183. How to Detect Broken Links With Playwright (by/via) · · , , ,
  184. Understanding JavaScript Closures With Examples (by) · · , ,
  185. Bad CSS-Dad Jokes (by) · ·
  186. JavaScript/Python Array Quick Reference (via) · · , , ,
  187. Sticky Headers and Full-Height Elements: A Tricky Combination (via) · · ,
  188. The HTML History and Optimization Cheat Sheet (by) · · , , ,
  189. The Story of Figma: Living Long Enough as a Hero to Become a Villain? (via) · ·
  190. CSS Display Contents (by) · · ,
  191. The Helpful Content Update Was Not What You Think (by/via) · · , ,
  192. Inlay Hints Make It Easy to Read Code in VS Code (by) · · , , ,
  193. Cleaning and Speeding Up the JS Ecosystem—Journey So Far (by) · · ,
  194. Avoiding Accessibility Barriers With a Checklist for Custom Controls—Opinion (via) · · ,
  195. Should Form Labels Be Wrapped or Separate? (by/via) · · , , , ,
  196. A Release Note for the Web Platform (by) · · , , , ,
  197. A Complete Guide to Beginning With JavaScript (by/via) · · , , ,
  198. Dreaming About Drupal [and] Its Long Term Potential (by) · · ,
  199. What’s New in React 19 (by/via) · ·
  200. Writing Effective Pull Request Descriptions: A Developer’s Guide (by) · · , , , ,
  201. Notes on Setting Up a Static Website With AWS (Route 53, S3, ACM) (by) · ·
  202. Sanding UI (by) · · ,
  203. Paying Down Tech Debt (via) · · , ,
  204. Another Stab at Truncated Text (by/via) · · , , ,
  205. Under-Engineered Estimated Reading Time Feature (by) · · ,
  206. Tackling a System’s Accessibility Without Testing (by+/via) · · , , ,
  207. Scroll-Enhanced Experiences (by/via) · · , ,
  208. CSS “@ property” and the New Style (by) · · ,
  209. Captured Custom Properties (by) · · ,
  210. Skeleton Screens vs. Progress Bars vs. Spinners (by/via) · · , ,
  211. What Is React.js? (by) · · , ,
  212. Backgrounds for the Box Model (and Why It Can Be Useful) (by/via) · · , ,
  213. How to Deploy Node.js to AWS Lambda With OpenTofu and GitHub Actions · · , , , , , , ,
  214. “AggregateError” in JavaScript (by) · · ,
  215. Get Window Size in Pure CSS (via) · · ,
  216. Be Careful When Using Generative Artificial Intelligence to Produce Code (by) · · , ,
  217. What It Is Like to Work in Meta’s (Facebook’s) Monorepo (by) · · ,
  218. Lazy Loading Isn’t Just Lazy, It’s Late: The Web Deserves Faster · · , , , ,
  219. I Want the Read Write Suggest-Edit Accept-Edit Update Web (by) · · ,
  220. Semi-Annual Reminder to Learn and Hire for Web Standards (by) · · , , , ,
  221. Reducing UX Debt (or Die Trying) (by/via) · · ,
  222. How I Created a 3.78 MB Docker Image for a JavaScript Service · · ,
  223. Headings (via) · · , ,
  224. Faster Pages With React (by/via) · · ,
  225. Java Optionals (by/via) · ·
  226. An Enhancement to Accessible Responsive Tables (by) · · , , ,
  227. Understanding Web Storage: LocalStorage, SessionStorage, and Cookies (by) · · , ,
  228. A/B Testing 101 (by/via) · · , , ,
  229. Supporting AVIF in Google Search (by/via) · · , , , ,
  230. An SSR Performance Showdown (by) · · , , , , , , ,
  231. Stuck in the Steps? (via) · · ,
  232. Harnessing Copilot and Other Gen-AI Tools to Increase Digital Accessibility Efficiency (by) · · , , , , ,
  233. Querying the Color Scheme (by) · · , , ,
  234. Why Playwright Is Less Flaky Than Selenium (by) · · , , ,
  235. What the Heck Is ARIA? A Beginner’s Guide to ARIA for Accessibility (by/via) · · , , , ,
  236. Drupal 11: New Features to Empower Ambitious Site Builders (via) · ·
  237. HTTP 1 vs. HTTP 2 vs. HTTP 3 (by) · · , , , ,
  238. OpenAI Is Shockingly Good at Unminifying Code (by) · · , ,
  239. Hidden Cost of Frontend Frameworks · · , ,
  240. Python Developers Survey 2023 Results (via) · · ,
  241. When Regex Goes Wrong (by) · ·
  242. Why I Don’t Block AI Scrapers (by) · · , ,
  243. Paragraphs (by) · · ,
  244. CSS Style Observer (by) · · , ,
  245. New to the Web Platform in August (by/via) · · , , , , , ,
  246. Caching Demystified: Inspect, Clear, and Disable Caches (by/via) · · , , , , , ,
  247. Building Better Logins: A UX and Accessibility Guide for Developers (via) · · , ,
  248. Anchor Positioning (by/via) · · , ,
  249. The “aside” Element (by) · · , ,
  250. The Ultimate Guide to Font Performance Optimization (via) · · , , ,