41554 blogs · [ { "id": "01a0bdce-576c-735f-b14e-b133d658db08", "title": "Modern Web Types", "url": "https://philipwalton.com/articles/modern-web-types/", "published_at": "2026-09-14T07:22:45+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96caf8f09e", "title": "The State of ES5 on the Web", "url": "https://philipwalton.com/articles/the-state-of-es5-on-the-web/", "published_at": "2024-09-08T15:18:32+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96cab76131", "title": "Dynamic LCP Priority: Learning from Past Visits", "url": "https://philipwalton.com/articles/dynamic-lcp-priority/", "published_at": "2022-12-28T20:43:44+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96ca766f21", "title": "Performant A/B Testing with Cloudflare Workers", "url": "https://philipwalton.com/articles/performant-a-b-testing-with-cloudflare-workers/", "published_at": "2021-12-20T14:01:14+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96ca407b3b", "title": "My Challenge to the Web Performance Community", "url": "https://philipwalton.com/articles/my-challenge-to-the-web-performance-community/", "published_at": "2021-10-06T07:18:38+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96ca0bbd3d", "title": "Smaller HTML Payloads with Service Workers", "url": "https://philipwalton.com/articles/smaller-html-payloads-with-service-workers/", "published_at": "2020-01-07T08:02:37+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96c9dfc6c0", "title": "Cascading Cache Invalidation", "url": "https://philipwalton.com/articles/cascading-cache-invalidation/", "published_at": "2019-10-09T08:26:44+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96c963fe2a", "title": "Using Native JavaScript Modules in Production Today", "url": "https://philipwalton.com/articles/using-native-javascript-modules-in-production-today/", "published_at": "2019-08-20T07:20:17+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96c8cbbff4", "title": "KV Storage: the Web's First Built-in Module", "url": "https://philipwalton.com/articles/kv-storage-the-webs-first-built-in-module/", "published_at": "2019-03-12T05:27:02+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96c84af156", "title": "Idle Until Urgent", "url": "https://philipwalton.com/articles/idle-until-urgent/", "published_at": "2018-09-20T07:25:36+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96c81b95ca", "title": "Page Lifecycle API", "url": "https://philipwalton.com/articles/page-lifecycle-api/", "published_at": "2018-07-24T18:41:57+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96c75c0e43", "title": "First Input Delay", "url": "https://philipwalton.com/articles/first-input-delay/", "published_at": "2018-05-10T19:15:30+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96c724244e", "title": "Responsive Components: a Solution to the Container Queries Problem", "url": "https://philipwalton.com/articles/responsive-components-a-solution-to-the-container-queries-problem/", "published_at": "2018-02-27T08:12:12+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96c71b5c0f", "title": "Why Web Developers Need to Care about Interactivity", "url": "https://philipwalton.com/articles/why-web-developers-need-to-care-about-interactivity/", "published_at": "2017-12-19T17:25:23+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96c69af36b", "title": "Deploying ES2015+ Code in Production Today", "url": "https://philipwalton.com/articles/deploying-es2015-code-in-production-today/", "published_at": "2017-09-13T19:23:12+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96c6580819", "title": "How We Track Pageviews Is All Wrong", "url": "https://philipwalton.com/articles/how-we-track-pageviews-is-all-wrong/", "published_at": "2017-04-11T17:46:25+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96c651d064", "title": "The Google Analytics Setup I Use on Every Site I Build", "url": "https://philipwalton.com/articles/the-ga-setup-i-use-on-every-site-i-build/", "published_at": "2017-02-08T18:45:45+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96c57cc478", "title": "The Dark Side of Polyfilling CSS", "url": "https://philipwalton.com/articles/the-dark-side-of-polyfilling-css/", "published_at": "2016-12-22T18:18:08+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96c4a5f5b0", "title": "Loading Polyfills Only When Needed", "url": "https://philipwalton.com/articles/loading-polyfills-only-when-needed/", "published_at": "2016-09-27T22:41:26+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96c4489a65", "title": "Untangling Deeply-Nested Promise Chains", "url": "https://philipwalton.com/articles/untangling-deeply-nested-promise-chains/", "published_at": "2016-08-17T14:53:31+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96c34bbf6d", "title": "Learning How to Set Up Automated, Cross-browser JavaScript Unit Testing", "url": "https://philipwalton.com/articles/learning-how-to-set-up-automated-cross-browser-javascript-unit-testing/", "published_at": "2016-07-11T06:48:41+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96c25e0b26", "title": "Houdini: Maybe the Most Exciting Development in CSS You've Never Heard Of", "url": "https://philipwalton.com/articles/houdini-maybe-the-most-exciting-development-in-css-youve-never-heard-of/", "published_at": "2016-03-24T22:43:07+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96c1837b20", "title": "Why I'm Excited About Native CSS Variables", "url": "https://philipwalton.com/articles/why-im-excited-about-native-css-variables/", "published_at": "2015-12-06T20:43:53+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96c16823c7", "title": "Do We Actually Need Specificity In CSS?", "url": "https://philipwalton.com/articles/do-we-actually-need-specificity-in-css/", "published_at": "2015-11-01T22:37:42+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96c09d849f", "title": "How to Become a Great Front-End Engineer", "url": "https://philipwalton.com/articles/how-to-become-a-great-front-end-engineer/", "published_at": "2015-08-02T22:39:17+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96c02b469d", "title": "Extending Styles", "url": "https://philipwalton.com/articles/extending-styles/", "published_at": "2015-05-20T19:34:57+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96bf3e7461", "title": "Side Effects in CSS", "url": "https://philipwalton.com/articles/side-effects-in-css/", "published_at": "2015-03-04T05:25:06+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96be609679", "title": "Normalizing Cross-browser Flexbox Bugs", "url": "https://philipwalton.com/articles/normalizing-cross-browser-flexbox-bugs/", "published_at": "2015-01-05T01:44:38+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96be5423e1", "title": "Measuring Your Site's Responsive Breakpoint Usage", "url": "https://philipwalton.com/articles/measuring-your-sites-responsive-breakpoint-usage/", "published_at": "2014-12-23T06:38:36+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96be1e40c3", "title": "The Dangers of Stopping Event Propagation", "url": "https://philipwalton.com/articles/the-dangers-of-stopping-event-propagation/", "published_at": "2014-05-20T13:32:55+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96bd655ba2", "title": "Stop Copying Social Code Snippets", "url": "https://philipwalton.com/articles/stop-copying-social-code-snippets/", "published_at": "2014-04-20T23:17:32+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96bcd4fa91", "title": "Implementing Private and Protected Members in JavaScript", "url": "https://philipwalton.com/articles/implementing-private-and-protected-members-in-javascript/", "published_at": "2014-04-10T03:59:27+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96bc81522d", "title": "How to Find Qualified Developers", "url": "https://philipwalton.com/articles/how-to-find-qualified-developers/", "published_at": "2014-01-20T21:51:26+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96bc0da7e7", "title": "Interviewing as a Front-End Engineer in San Francisco", "url": "https://philipwalton.com/articles/interviewing-as-a-front-end-engineer-in-san-francisco/", "published_at": "2013-12-24T21:25:12+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96bb9814bb", "title": "Solved by Flexbox", "url": "https://philipwalton.com/articles/solved-by-flexbox/", "published_at": "2013-10-04T05:59:16+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96ba9f72b2", "title": "Decoupling Your HTML, CSS, and JavaScript", "url": "https://philipwalton.com/articles/decoupling-html-css-and-javascript/", "published_at": "2013-08-18T19:39:09+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96b9cc3d36", "title": "Why I Test Private Functions In JavaScript", "url": "https://philipwalton.com/articles/why-i-test-private-functions-in-javascript/", "published_at": "2013-07-17T15:47:00+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96b950f83c", "title": "How to Unit Test Private Functions in JavaScript", "url": "https://philipwalton.com/articles/how-to-unit-test-private-functions-in-javascript/", "published_at": "2013-07-09T06:28:18+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96b8f7b084", "title": "Introducing HTML Inspector", "url": "https://philipwalton.com/articles/introducing-html-inspector/", "published_at": "2013-06-11T15:22:52+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96b8eeca6b", "title": "CSS: Everything is Global and How to Deal With It", "url": "https://philipwalton.com/articles/css-everything-is-global-and-how-to-deal-with-it/", "published_at": "2013-03-26T03:21:57+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96b84bb457", "title": "Dynamic Selectors", "url": "https://philipwalton.com/articles/dynamic-selectors/", "published_at": "2013-02-20T22:22:24+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96b7abaae9", "title": "Defending Presentational Class Names", "url": "https://philipwalton.com/articles/defending-presentational-class-names/", "published_at": "2013-01-24T16:57:01+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96b720cc7c", "title": "The Future of OOCSS: A Proposal", "url": "https://philipwalton.com/articles/the-future-of-oocss-a-proposal/", "published_at": "2013-01-17T19:02:16+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96b6f9557e", "title": "What No One Told You About Z-Index", "url": "https://philipwalton.com/articles/what-no-one-told-you-about-z-index/", "published_at": "2013-01-15T19:17:39+00:00" }, { "id": "01a07df4-8326-72d9-a212-1b96b640abb4", "title": "CSS Architecture", "url": "https://philipwalton.com/articles/css-architecture/", "published_at": "2012-11-17T02:04:25+00:00" } ] posts Claim your blog
Back to Philip Walton
Blog · corpus.blog/blogs/philipwalton.com/posts

Philip Walton

philipwalton.com

2026

2024

2022

2021

2020

2019

2018

2017

2016

2015

2014

2013

2012