<!DOCTYPE HTML>
<html lang="en">

<head>
  <meta charset='UTF-8'>
  <meta name="viewport" content="width=device-width">
  
  <meta name="theme-color" content="#190023">
  
  <title>Page not found &#8211; Master.dev Blog</title>
<meta name='robots' content='max-image-preview:large' />
<link rel='dns-prefetch' href='//stats.wp.com' />
<link rel='preconnect' href='//i0.wp.com' />
<link rel='preconnect' href='//c0.wp.com' />
<style id="wp-img-auto-sizes-contain-inline-css">
img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
</style>
<style id="wp-block-library-inline-css">
:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style*=border-color]){border-style:solid}html :where([style*=border-top-color]){border-top-style:solid}html :where([style*=border-right-color]){border-right-style:solid}html :where([style*=border-bottom-color]){border-bottom-style:solid}html :where([style*=border-left-color]){border-left-style:solid}html :where([style*=border-width]){border-style:solid}html :where([style*=border-top-width]){border-top-style:solid}html :where([style*=border-right-width]){border-right-style:solid}html :where([style*=border-bottom-width]){border-bottom-style:solid}html :where([style*=border-left-width]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}

/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */
</style>
<style id="wp-block-paragraph-inline-css">
.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em .1em 0 0;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter{float:none;margin-left:.1em}p.has-drop-cap.has-background{overflow:hidden}:root :where(p.has-background){padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{rotate:180deg}
/*# sourceURL=https://c0.wp.com/c/7.0/wp-includes/blocks/paragraph/style.min.css */
</style>

<style id="classic-theme-styles-inline-css">
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
/*# sourceURL=/wp-includes/css/classic-themes.min.css */
</style>

<style id="global-styles-inline-css">
:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
/*# sourceURL=global-styles-inline-css */
</style>

<link rel='stylesheet' id='jetpack-instant-search-css' href='https://master.dev/blog/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-search/build/instant-search/jp-search.chunk-main-payload.css?minify=false&#038;ver=346d8384549cea9b9909' media='all' />
<link rel="https://api.w.org/" href="https://master.dev/blog/wp-json/" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://master.dev/blog/xmlrpc.php?rsd" />
<meta name="generator" content="WordPress 7.0" />
	<style>img#wpstats{display:none}</style>
		<meta name="generator" content="speculation-rules 1.6.0">
  
  <link rel="stylesheet" href="https://master.dev/blog/wp-content/themes/fem-v3/dist/style.css?version=1783610384">
  <link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="https://master.dev/blog/feed/">
  
  <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
  <link rel="manifest" href="/manifest.json">
  <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#c02d28">    
  
    
  <meta name="description" content="   The Master.dev blog is about web development. It's written by the team at Master.dev, course instructors from the industry, and curated guest authors. The goal is to help you on your path to becoming a senior developer, or to be an even better one.
  ">

  <script>
    const __theme_folder = `https://master.dev/blog/wp-content/themes/fem-v3`;
  </script>

  <script async src="https://www.googletagmanager.com/gtag/js?id=G-KZMH0NYCFR"></script>
  <script>
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('js', new Date());
    gtag('config', 'G-KZMH0NYCFR');
  </script>
  <script>
    !function(f,b,e,v,n,t,s)
    {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
    n.callMethod.apply(n,arguments):n.queue.push(arguments)};
    if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
    n.queue=[];t=b.createElement(e);t.async=!0;
    t.src=v;s=b.getElementsByTagName(e)[0];
    s.parentNode.insertBefore(t,s)}(window, document,'script',
    'https://connect.facebook.net/en_US/fbevents.js');
    fbq('init', '732938192896311');
    fbq('track', 'PageView');
  </script>
  <noscript>
    <img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=732938192896311&ev=PageView&noscript=1">
  </noscript>
</head>

<body class="error404 wp-theme-fem-v3 jps-theme-fem-v3" id="top-of-site">
  
  <header class="site-header">
  
      

<nav class="site-header-top-links">

  <a href="https://master.dev/?utm_source=boost&utm_medium=blog&utm_campaign=boost_headerbar" class="back-to-fem">&larr; Back to Master.dev</a>

  <div class="auth-aware-links">
          <a href="https://master.dev/courses/?utm_source=boost&utm_medium=blog&utm_campaign=boost_headerbar">Courses</a>
<a href="https://master.dev/learn/?utm_source=boost&utm_medium=blog&utm_campaign=boost_headerbar">Learn</a>
<a href="https://master.dev/join/?utm_source=boost&utm_medium=blog&utm_campaign=boost_headerbar">Become a Member</a>
<a href="https://master.dev/blog/guest-writing/">Guest Writing</a>      </div>

  <a href="/blog/feed" class="rss-button">
    <svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path d="M2.66602 7.83329C4.25731 7.83329 5.78344 8.46543 6.90866 9.59065C8.03387 10.7159 8.66602 12.242 8.66602 13.8333M2.66602 3.16663C5.49499 3.16663 8.2081 4.29043 10.2085 6.29082C12.2089 8.29121 13.3327 11.0043 13.3327 13.8333M3.99935 13.1666C3.99935 13.5348 3.70087 13.8333 3.33268 13.8333C2.96449 13.8333 2.66602 13.5348 2.66602 13.1666C2.66602 12.7984 2.96449 12.5 3.33268 12.5C3.70087 12.5 3.99935 12.7984 3.99935 13.1666Z" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
    </svg>
    RSS
  </a>
</nav>
  </header>
  
  <div class="content">
    
    <div class="site-logo">
      <a href="/blog/">
        <span class="logo"></span>
        <span class="blog">/ BLOG</span>
      </a>
    </div>
<main class="limit-width">
      
  <h1 class="gradient-style-text" style="text-align: center; padding: 3rem 0 0.5rem;">
    404 Error: Page Not Found
  </h1>

  <h2 style="text-align: center; padding-block-end: 4rem;">Here are the three most recent posts</h2>

  <div class="card-grid">

    
      <div class="card-wrap">
  <article class="card">

    <div class="meta-half">
      <div class="featured-image">
        <a href="https://master.dev/blog/lumis-syntax-highlighter-powered-by-tree-sitter/">
          <img width="1024" height="524" src="https://i0.wp.com/master.dev/blog/wp-content/uploads/2026/07/Screenshot-2026-07-16-at-4.51.31-PM.png?fit=1024%2C524&amp;ssl=1" class="attachment-large size-large wp-post-image" alt="Post Thumbnail for Lumis: Syntax Highlighter powered by Tree-sitter" style="view-transition-name: featured-image-10442" decoding="async" loading="lazy" srcset="https://i0.wp.com/master.dev/blog/wp-content/uploads/2026/07/Screenshot-2026-07-16-at-4.51.31-PM.png?w=2318&amp;ssl=1 2318w, https://i0.wp.com/master.dev/blog/wp-content/uploads/2026/07/Screenshot-2026-07-16-at-4.51.31-PM.png?resize=300%2C153&amp;ssl=1 300w, https://i0.wp.com/master.dev/blog/wp-content/uploads/2026/07/Screenshot-2026-07-16-at-4.51.31-PM.png?resize=1024%2C524&amp;ssl=1 1024w, https://i0.wp.com/master.dev/blog/wp-content/uploads/2026/07/Screenshot-2026-07-16-at-4.51.31-PM.png?resize=768%2C393&amp;ssl=1 768w, https://i0.wp.com/master.dev/blog/wp-content/uploads/2026/07/Screenshot-2026-07-16-at-4.51.31-PM.png?resize=1536%2C786&amp;ssl=1 1536w, https://i0.wp.com/master.dev/blog/wp-content/uploads/2026/07/Screenshot-2026-07-16-at-4.51.31-PM.png?resize=2048%2C1048&amp;ssl=1 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" />        </a>
        <div class="tag-links">
          <a href="https://master.dev/blog/tag/syntax-highlighting/" rel="tag">Syntax Highlighting</a>        </div>
      </div>
    </div>

    <div class="card-text">
      <h2 style="view-transition-name: header-10442;"><a href="https://master.dev/blog/lumis-syntax-highlighter-powered-by-tree-sitter/">Lumis: Syntax Highlighter powered by Tree-sitter</a></h2>

      <div class="author-and-time">
        By
        <a class="author-link" href="https://master.dev/blog/author/chriscoyier/" style="view-transition-name: author-link-10442;">
          Chris Coyier</a>
        on
        <time style="view-transition-name: article-time-10442;" datetime="2026-07-16"><b>Jul 16, 2026</b></time>
      </div>

      <div class="excerpt text">
        <p>Lumis looks like a pretty sweet new syntax highlighter tool. Powered by Tree-sitter, of which I can vouch for its speed and power. I like how many runtimes it supports, almost encouraging server-side use, which is the best place for the job when you can pull it off.</p>
      </div>
    </div>

  </article>
</div>

    
      <div class="card-wrap">
  <article class="card">

    <div class="meta-half">
      <div class="featured-image">
        <a href="https://master.dev/blog/lessons-learned-rewriting-a-sticky-detector/">
          <img width="1024" height="614" src="https://i0.wp.com/master.dev/blog/wp-content/uploads/2026/07/fixed-header.jpg?fit=1024%2C614&amp;ssl=1" class="attachment-large size-large wp-post-image" alt="Post Thumbnail for Lessons Learned Rewriting a Sticky Detector" style="view-transition-name: featured-image-10399" decoding="async" loading="lazy" srcset="https://i0.wp.com/master.dev/blog/wp-content/uploads/2026/07/fixed-header.jpg?w=2000&amp;ssl=1 2000w, https://i0.wp.com/master.dev/blog/wp-content/uploads/2026/07/fixed-header.jpg?resize=300%2C180&amp;ssl=1 300w, https://i0.wp.com/master.dev/blog/wp-content/uploads/2026/07/fixed-header.jpg?resize=1024%2C614&amp;ssl=1 1024w, https://i0.wp.com/master.dev/blog/wp-content/uploads/2026/07/fixed-header.jpg?resize=768%2C461&amp;ssl=1 768w, https://i0.wp.com/master.dev/blog/wp-content/uploads/2026/07/fixed-header.jpg?resize=1536%2C922&amp;ssl=1 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" />        </a>
        <div class="tag-links">
          <a href="https://master.dev/blog/tag/css/" rel="tag">CSS</a><a href="https://master.dev/blog/tag/menu/" rel="tag">Menu</a><a href="https://master.dev/blog/tag/scroll-state-2/" rel="tag">Scroll-State</a><a href="https://master.dev/blog/tag/search/" rel="tag">Search</a><a href="https://master.dev/blog/tag/sticky/" rel="tag">Sticky</a>        </div>
      </div>
    </div>

    <div class="card-text">
      <h2 style="view-transition-name: header-10399;"><a href="https://master.dev/blog/lessons-learned-rewriting-a-sticky-detector/">Lessons Learned Rewriting a Sticky Detector</a></h2>

      <div class="author-and-time">
        By
        <a class="author-link" href="https://master.dev/blog/author/chriscoyier/" style="view-transition-name: author-link-10399;">
          Chris Coyier</a>
        on
        <time style="view-transition-name: article-time-10399;" datetime="2026-07-15"><b>Jul 15, 2026</b></time>
      </div>

      <div class="excerpt text">
        <p>A dozen years go by, it turns out we can do things a lot differently and a lot better. Here a `scroll` event is entirely replaced by HTML and CSS features and much better performance.</p>
      </div>
    </div>

  </article>
</div>

    
      <div class="card-wrap">
  <article class="card">

    <div class="meta-half">
      <div class="featured-image">
        <a href="https://master.dev/blog/fixcss/">
          <img width="1024" height="768" src="https://i0.wp.com/master.dev/blog/wp-content/uploads/2026/07/pexels-photo-220639.jpeg?fit=1024%2C768&amp;ssl=1" class="attachment-large size-large wp-post-image" alt="Post Thumbnail for FixCSS" style="view-transition-name: featured-image-10410" decoding="async" loading="lazy" srcset="https://i0.wp.com/master.dev/blog/wp-content/uploads/2026/07/pexels-photo-220639.jpeg?w=1733&amp;ssl=1 1733w, https://i0.wp.com/master.dev/blog/wp-content/uploads/2026/07/pexels-photo-220639.jpeg?resize=300%2C225&amp;ssl=1 300w, https://i0.wp.com/master.dev/blog/wp-content/uploads/2026/07/pexels-photo-220639.jpeg?resize=1024%2C768&amp;ssl=1 1024w, https://i0.wp.com/master.dev/blog/wp-content/uploads/2026/07/pexels-photo-220639.jpeg?resize=768%2C576&amp;ssl=1 768w, https://i0.wp.com/master.dev/blog/wp-content/uploads/2026/07/pexels-photo-220639.jpeg?resize=1536%2C1152&amp;ssl=1 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" />        </a>
        <div class="tag-links">
          <a href="https://master.dev/blog/tag/css/" rel="tag">CSS</a>        </div>
      </div>
    </div>

    <div class="card-text">
      <h2 style="view-transition-name: header-10410;"><a href="https://master.dev/blog/fixcss/">FixCSS</a></h2>

      <div class="author-and-time">
        By
        <a class="author-link" href="https://master.dev/blog/author/chriscoyier/" style="view-transition-name: author-link-10410;">
          Chris Coyier</a>
        on
        <time style="view-transition-name: article-time-10410;" datetime="2026-07-14"><b>Jul 14, 2026</b></time>
      </div>

      <div class="excerpt text">
        <p>There is a famous document from the CSS Working Group that lists the historical mistakes in the design of CSS. It contains stuff like how box-sizing: border-box; should have been the default, which is why a lot of us still put that in starter stylesheets. Declan Chidlow took a step I&#8217;ve never seen anyone take [&hellip;]</p>
      </div>
    </div>

  </article>
</div>

    
  </div>
    
</main>

</div>

  <div class="contributions">
    <div class="dollar-amount" aria-label="$966,000"><span class="dollar-sign">$</span><span>9</span><span>6</span><span>6</span><span>,</span><span>0</span><span>0</span><span>0</span></div>
    <p>
      Master.dev donates to open source projects through <a href="https://thanks.dev/d/gh/frontendmasters/dependencies">thanks.dev</a> and <a href="https://opencollective.com/frontendmasters">Open Collective</a>, as well as donates to non-profits like <a href="https://thelastmile.org/">The Last Mile</a>, <a href="https://anniecannons.org/">Annie Canons</a>, and <a href="https://vetswhocode.io/">Vets Who Code</a>.
    </p>
  </div>

  <footer class="site-footer">

    <div class="content">

      <div class="row footer-nav-row">

        <div>
          <a href="/?utm_source=boost&utm_medium=blog&utm_campaign=boost_footer" class="footer-logo" aria-label="Master.dev logo">
            <span class="logo"></span>
          </a>
          <nav class="footer-nav">
            <ul>
              <li class="item"><a href="/courses/?utm_source=boost&utm_medium=blog&utm_campaign=boost_footer">Courses</a></li>
              <li class="item"><a href="/learn/?utm_source=boost&utm_medium=blog&utm_campaign=booboost_footerst">Learn</a></li>
              <li class="item"><a href="/teachers/?utm_source=boost&utm_medium=blog&utm_campaign=boost_footer">Teachers</a></li>
              <li class="item"><a href="/guides/?utm_source=boost&utm_medium=blog&utm_campaign=boost_footer">Guides</a></li>
              <li class="item"><a href="/blog/?utm_source=boost&utm_medium=blog&utm_campaign=boost_footer">Blog</a></li>
              <li class="item"><a href="/faq/?utm_source=boost&utm_medium=blog&utm_campaign=boost_footer">FAQ</a></li>
              <li class="item"><a href="/login/?utm_source=boost&utm_medium=blog&utm_campaign=boost_footer">Login</a></li>
              <li class="item"><a href="/join/?utm_source=boost&utm_medium=blog&utm_campaign=boost_footer">Join Now</a></li>
              <li class="item"><a href="/blog/feed/">RSS</a></li>
            </ul>
          </nav>
        </div>

        <div class="footer-right">
          <div class="footer-social">
            <a href="https://x.com/MasterDotDev">
              <span class="screen-reader-text">X</span>
              <img src="https://master.dev/blog/wp-content/themes/fem-v3/images/icon-x.svg" alt="" loading="lazy">
            </a>
            <a href="https://www.linkedin.com/company/frontend-masters/">
              <span class="screen-reader-text">LinkedIn</span>
              <img src="https://master.dev/blog/wp-content/themes/fem-v3/images/icon-linkedin.svg" alt="" loading="lazy">
            </a>
            <a href="https://www.facebook.com/FrontendMasters">
              <span class="screen-reader-text">Facebook</span>
              <img src="https://master.dev/blog/wp-content/themes/fem-v3/images/icon-facebook.svg" alt="" loading="lazy">
            </a>
            <a href="https://instagram.com/FrontendMasters">
              <span class="screen-reader-text">Instagram</span>
              <img src="https://master.dev/blog/wp-content/themes/fem-v3/images/icon-instagram.svg" alt="" loading="lazy">
            </a>
            <a href="/blog/feed">
              <span class="screen-reader-text">RSS</span>
              <img src="https://master.dev/blog/wp-content/themes/fem-v3/images/icon-rss.svg" alt="" loading="lazy">
            </a>
          </div>

          <div class="native-app-links">
            <a href="https://appstore.com/mjginternationalllc/frontendmasters">
              <img src="https://master.dev/blog/wp-content/themes/fem-v3/images/apple-app-store.svg" alt="Master.dev App on the Apple App Store" loading="lazy" height="40" width="120">
            </a>
            <a href="https://play.google.com/store/apps/details?id=in.mjg.frontendmasters.store&amp;utm_source=frontendmasters_com&amp;pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1">
              <img src="https://master.dev/blog/wp-content/themes/fem-v3/images/google-app-store.svg" alt="Master.dev App on Google Play" loading="lazy" height="40" width="135">
            </a>
          </div>

          <div class="footer-contact">
            Contact: <a href="mailto:support@master.dev">support@master.dev</a>
          </div>
        </div>

      </div>

      <div class="footer-bottom">
        <div>
          Master.dev is proudly made in Minneapolis,&nbsp;MN
        </div>
        <div class="copyright">
          ©2026 <a href="/?utm_source=boost&utm_medium=blog&utm_campaign=boost_footer">Master.dev</a> &middot;
          <a href="/company/terms/">Terms of Service</a> &middot; <a href="/company/privacy/">Privacy Policy</a></div>
      </div>

    </div>

  </footer>

  <script type="module" src="https://master.dev/blog/wp-content/themes/fem-v3/dist/global.js?version=1783610384"></script>

  <dialog id="quiz-dialog">
    <button aria-label="Close Quiz" class="close-quiz-dialog-button">
      ✕
    </button>
    <learning-path-quiz utm-source="boost"></learning-path-quiz>
  </dialog>

  <script type="speculationrules">
{"prerender":[{"source":"document","where":{"and":[{"href_matches":"/blog/*"},{"not":{"href_matches":["/blog/wp-*.php","/blog/wp-admin/*","/blog/wp-content/uploads/*","/blog/wp-content/*","/blog/wp-content/plugins/*","/blog/wp-content/themes/fem-v3/*","/blog/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prerender, .no-prerender a"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"moderate"}]}
</script>
		<div class="jetpack-instant-search__widget-area" style="display: none">
												</div>
		<script id="wp-hooks-js" src="https://c0.wp.com/c/7.0/wp-includes/js/dist/hooks.min.js"></script>
<script id="wp-i18n-js" src="https://c0.wp.com/c/7.0/wp-includes/js/dist/i18n.min.js"></script>
<script id="wp-i18n-js-after">
wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );
//# sourceURL=wp-i18n-js-after
</script>
<script id="wp-jp-i18n-loader-js" src="https://master.dev/blog/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-assets/build/i18n-loader.js?minify=true&#038;ver=5ba5dddc04be2306aaf0"></script>
<script id="wp-jp-i18n-loader-js-after">
wp.jpI18nLoader.state = {"baseUrl":"https://master.dev/blog/wp-content/languages/","locale":"en_US","domainMap":{"jetpack-admin-ui":"plugins/jetpack","jetpack-assets":"plugins/jetpack","jetpack-boost-core":"plugins/jetpack","jetpack-boost-speed-score":"plugins/jetpack","jetpack-config":"plugins/jetpack","jetpack-connection":"plugins/jetpack","jetpack-explat":"plugins/jetpack","jetpack-ip":"plugins/jetpack","jetpack-jitm":"plugins/jetpack","jetpack-licensing":"plugins/jetpack","jetpack-my-jetpack":"plugins/jetpack","jetpack-password-checker":"plugins/jetpack","jetpack-plugins-installer":"plugins/jetpack","jetpack-protect-models":"plugins/jetpack","jetpack-protect-status":"plugins/jetpack","jetpack-sync":"plugins/jetpack","jetpack-videopress-pkg":"plugins/jetpack","jetpack-wp-build-polyfills":"plugins/jetpack","jetpack-account-protection":"plugins/jetpack","jetpack-activity-log":"plugins/jetpack","jetpack-agents-manager":"plugins/jetpack","jetpack-backup-pkg":"plugins/jetpack","jetpack-blaze":"plugins/jetpack","jetpack-block-delimiter":"plugins/jetpack","jetpack-classic-theme-helper":"plugins/jetpack","jetpack-compat":"plugins/jetpack","jetpack-external-connections":"plugins/jetpack","jetpack-external-media":"plugins/jetpack","jetpack-forms":"plugins/jetpack","jetpack-image-cdn":"plugins/jetpack","jetpack-import":"plugins/jetpack","jetpack-jwt":"plugins/jetpack","jetpack-masterbar":"plugins/jetpack","jetpack-newsletter":"plugins/jetpack","jetpack-paypal-payments":"plugins/jetpack","jetpack-post-list":"plugins/jetpack","jetpack-post-media":"plugins/jetpack","jetpack-publicize-pkg":"plugins/jetpack","jetpack-scan-page":"plugins/jetpack","jetpack-search-pkg":"plugins/jetpack","jetpack-seo":"plugins/jetpack","jetpack-stats":"plugins/jetpack","jetpack-stats-admin":"plugins/jetpack","jetpack-waf":"plugins/jetpack","jetpack-wp-abilities":"plugins/jetpack"},"domainPaths":{"jetpack-admin-ui":"jetpack_vendor/automattic/jetpack-admin-ui/","jetpack-assets":"jetpack_vendor/automattic/jetpack-assets/","jetpack-boost-core":"jetpack_vendor/automattic/jetpack-boost-core/","jetpack-boost-speed-score":"jetpack_vendor/automattic/jetpack-boost-speed-score/","jetpack-config":"jetpack_vendor/automattic/jetpack-config/","jetpack-connection":"jetpack_vendor/automattic/jetpack-connection/","jetpack-explat":"jetpack_vendor/automattic/jetpack-explat/","jetpack-ip":"jetpack_vendor/automattic/jetpack-ip/","jetpack-jitm":"jetpack_vendor/automattic/jetpack-jitm/","jetpack-licensing":"jetpack_vendor/automattic/jetpack-licensing/","jetpack-my-jetpack":"jetpack_vendor/automattic/jetpack-my-jetpack/","jetpack-password-checker":"jetpack_vendor/automattic/jetpack-password-checker/","jetpack-plugins-installer":"jetpack_vendor/automattic/jetpack-plugins-installer/","jetpack-protect-models":"jetpack_vendor/automattic/jetpack-protect-models/","jetpack-protect-status":"jetpack_vendor/automattic/jetpack-protect-status/","jetpack-sync":"jetpack_vendor/automattic/jetpack-sync/","jetpack-videopress-pkg":"jetpack_vendor/automattic/jetpack-videopress/","jetpack-wp-build-polyfills":"jetpack_vendor/automattic/jetpack-wp-build-polyfills/","jetpack-account-protection":"jetpack_vendor/automattic/jetpack-account-protection/","jetpack-activity-log":"jetpack_vendor/automattic/jetpack-activity-log/","jetpack-agents-manager":"jetpack_vendor/automattic/jetpack-agents-manager/","jetpack-backup-pkg":"jetpack_vendor/automattic/jetpack-backup/","jetpack-blaze":"jetpack_vendor/automattic/jetpack-blaze/","jetpack-block-delimiter":"jetpack_vendor/automattic/block-delimiter/","jetpack-classic-theme-helper":"jetpack_vendor/automattic/jetpack-classic-theme-helper/","jetpack-compat":"jetpack_vendor/automattic/jetpack-compat/","jetpack-external-connections":"jetpack_vendor/automattic/jetpack-external-connections/","jetpack-external-media":"jetpack_vendor/automattic/jetpack-external-media/","jetpack-forms":"jetpack_vendor/automattic/jetpack-forms/","jetpack-image-cdn":"jetpack_vendor/automattic/jetpack-image-cdn/","jetpack-import":"jetpack_vendor/automattic/jetpack-import/","jetpack-jwt":"jetpack_vendor/automattic/jetpack-jwt/","jetpack-masterbar":"jetpack_vendor/automattic/jetpack-masterbar/","jetpack-newsletter":"jetpack_vendor/automattic/jetpack-newsletter/","jetpack-paypal-payments":"jetpack_vendor/automattic/jetpack-paypal-payments/","jetpack-post-list":"jetpack_vendor/automattic/jetpack-post-list/","jetpack-post-media":"jetpack_vendor/automattic/jetpack-post-media/","jetpack-publicize-pkg":"jetpack_vendor/automattic/jetpack-publicize/","jetpack-scan-page":"jetpack_vendor/automattic/jetpack-scan-page/","jetpack-search-pkg":"jetpack_vendor/automattic/jetpack-search/","jetpack-seo":"jetpack_vendor/automattic/jetpack-seo/","jetpack-stats":"jetpack_vendor/automattic/jetpack-stats/","jetpack-stats-admin":"jetpack_vendor/automattic/jetpack-stats-admin/","jetpack-waf":"jetpack_vendor/automattic/jetpack-waf/","jetpack-wp-abilities":"jetpack_vendor/automattic/jetpack-wp-abilities/"}};
//# sourceURL=wp-jp-i18n-loader-js-after
</script>
<script id="wp-polyfill-js" src="https://c0.wp.com/c/7.0/wp-includes/js/dist/vendor/wp-polyfill.min.js"></script>
<script id="wp-url-js" src="https://c0.wp.com/c/7.0/wp-includes/js/dist/url.min.js"></script>
<script id="jetpack-instant-search-js-before">
var JetpackInstantSearchOptions={"overlayOptions":{"colorTheme":"dark","enableInfScroll":true,"enableFilteringOpensOverlay":true,"enablePostDate":true,"enableProductPrice":true,"enableSort":true,"highlightColor":"#ffffcc","overlayTrigger":"immediate","resultFormat":"expanded","showPoweredBy":false,"defaultSort":"relevance","excludedPostTypes":["attachment"],"fallbackImageUrl":"","enableFallbackImage":false},"homeUrl":"https://master.dev/blog","locale":"en-US","postsPerPage":10,"siteId":225069128,"searchSuggestionsEnabled":false,"postTypes":{"post":{"singular_name":"Post","name":"Posts"},"page":{"singular_name":"Page","name":"Pages"},"attachment":{"singular_name":"Media","name":"Media"}},"webpackPublicPath":"https://master.dev/blog/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-search/build/instant-search/","isPhotonEnabled":true,"isFreePlan":false,"apiRoot":"https://master.dev/blog/wp-json/","apiNonce":"728dfb00e6","isPrivateSite":false,"isWpcom":false,"hasOverlayWidgets":true,"widgets":[],"widgetsOutsideOverlay":[],"hasNonSearchWidgets":false,"preventTrackingCookiesReset":false,"disableTracking":false,"aiAnswersEnabled":false};
//# sourceURL=jetpack-instant-search-js-before
</script>
<script id="jetpack-instant-search-js" src="https://master.dev/blog/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-search/build/instant-search/jp-search.js?minify=false&#038;ver=346d8384549cea9b9909"></script>
<script id="jp-tracks-js" src="//stats.wp.com/w.js?ver=202629"></script>
<script id="jetpack-stats-js-before">
_stq = window._stq || [];
_stq.push([ "view", {"v":"ext","blog":"225069128","post":"0","tz":"-5","srv":"master.dev","arch_err":"/blog/tag/feed/","j":"1:15.9.1"} ]);
_stq.push([ "clickTrackerInit", "225069128", "0" ]);
//# sourceURL=jetpack-stats-js-before
</script>
<script data-wp-strategy="defer" defer id="jetpack-stats-js" src="https://stats.wp.com/e-202629.js"></script>

  <script>
    (function(t,e,n,a){function r(){return e&&e.now?e.now():null}if(!n.version){n._events=[];n._errors=[];n._metadata={};window.RM=n;n.install=function(e){n._options=e;var r=t.createElement("script");r.async=true;r.crossOrigin="anonymous";r.src=a;var i=t.getElementsByTagName("script")[0];i.parentNode.insertBefore(r,i)};n.identify=function(t,e){n._userId=t;n._identifyOptions=e};n.sendEvent=function(t,e){n._events.push({eventName:t,metadata:e,time:r()})};n.track=function(t,e){n._errors.push({error:t,metadata:e,time:r()})};n.addMetadata=function(t){n._metadata=Object.assign(n._metadata,t)}}})(document,window.performance,window.RM||{},"https://pathway.frontendmasters.com/agent/current/rm.js");
    RM.install({
      token: "b4dw8ec:b9ht8wy",
      ingestUrl: "https://pathway.frontendmasters.com/v1"
    });
  </script>

</body>

</html>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 

Served from: master.dev @ 2026-07-16 22:38:33 by W3 Total Cache
-->