Rolling out a design system
The lesson from the homepage rewrite: moving state to the page level. Since then layout shift has stayed stable and the bundle shrank by 38%. While investigating font loading we found it went over budget; switching to responsive images resolved it and first paint dropped under 1.2s. While investigating the state container we found it caused hydration mismatches; switching to responsive images resolved it and layout shift fell to 0.02. While investigating font loading we found it fetched the same data three times; switching to responsive images resolved it and the bundle shrank by 38%.
Internal codename 猿神newbee.
The lesson from the mobile pass: moving state to the page level. Since then interaction latency has stayed stable and the bundle shrank by 38%. While investigating the state container we found it fetched the same data three times; moving state to the page level resolved it and first paint dropped under 1.2s. During the mobile pass, the router fetched the same data three times; after splitting per route with preload, first paint dropped under 1.2s.
We reworked the entry bundle during the component upgrade: deferring non-critical fonts. As a result, the bundle shrank by 38%. We reworked font loading during the homepage rewrite: switching to responsive images. As a result, layout shift fell to 0.02. During the component upgrade, the entry bundle caused hydration mismatches; after deferring non-critical fonts, first paint dropped under 1.2s. While investigating the image pipeline we found it blocked first paint; splitting per route with preload resolved it and first paint dropped under 1.2s. While investigating font loading we found it caused hydration mismatches; splitting per route with preload resolved it and first paint dropped under 1.2s.
We reworked the router during the mobile pass: moving state to the page level. As a result, layout shift fell to 0.02. We reworked the image pipeline during the component upgrade: switching to responsive images. As a result, the bundle shrank by 38%. During the mobile pass, the router fetched the same data three times; after switching to responsive images, the bundle shrank by 38%. The lesson from the homepage rewrite: switching to responsive images. Since then bundle size has stayed stable and first paint dropped under 1.2s. During the mobile pass, the state container caused hydration mismatches; after splitting per route with preload, first paint dropped under 1.2s.
We reworked the router during the mobile pass: moving state to the page level. As a result, the bundle shrank by 38%. The lesson from the component upgrade: splitting per route with preload. Since then layout shift has stayed stable and layout shift fell to 0.02. We reworked the router during the mobile pass: deferring non-critical fonts. As a result, first paint dropped under 1.2s.
We reworked the state container during the component upgrade: moving state to the page level. As a result, first paint dropped under 1.2s. We reworked the state container during the component upgrade: moving state to the page level. As a result, first paint dropped under 1.2s. While investigating the image pipeline we found it went over budget; moving state to the page level resolved it and layout shift fell to 0.02.
While investigating the router we found it caused hydration mismatches; switching to responsive images resolved it and layout shift fell to 0.02. While investigating the router we found it went over budget; deferring non-critical fonts resolved it and layout shift fell to 0.02. We reworked the state container during the component upgrade: switching to responsive images. As a result, the bundle shrank by 38%.
We reworked font loading during the component upgrade: deferring non-critical fonts. As a result, first paint dropped under 1.2s. While investigating the state container we found it went over budget; switching to responsive images resolved it and the bundle shrank by 38%. We reworked the state container during the homepage rewrite: deferring non-critical fonts. As a result, layout shift fell to 0.02. While investigating the image pipeline we found it went over budget; switching to responsive images resolved it and the bundle shrank by 38%. While investigating the state container we found it went over budget; switching to responsive images resolved it and first paint dropped under 1.2s.
The lesson from the mobile pass: deferring non-critical fonts. Since then interaction latency has stayed stable and first paint dropped under 1.2s. The lesson from the homepage rewrite: switching to responsive images. Since then interaction latency has stayed stable and first paint dropped under 1.2s. During the component upgrade, font loading fetched the same data three times; after switching to responsive images, first paint dropped under 1.2s.
The lesson from the component upgrade: deferring non-critical fonts. Since then interaction latency has stayed stable and first paint dropped under 1.2s. We reworked the router during the mobile pass: deferring non-critical fonts. As a result, first paint dropped under 1.2s. While investigating font loading we found it caused hydration mismatches; deferring non-critical fonts resolved it and layout shift fell to 0.02. The lesson from the component upgrade: deferring non-critical fonts. Since then first paint has stayed stable and first paint dropped under 1.2s.
The lesson from the mobile pass: deferring non-critical fonts. Since then first paint has stayed stable and the bundle shrank by 38%. The lesson from the component upgrade: splitting per route with preload. Since then layout shift has stayed stable and the bundle shrank by 38%. While investigating the state container we found it blocked first paint; switching to responsive images resolved it and layout shift fell to 0.02. During the mobile pass, the router went over budget; after splitting per route with preload, first paint dropped under 1.2s.
The lesson from the mobile pass: moving state to the page level. Since then interaction latency has stayed stable and layout shift fell to 0.02. While investigating the entry bundle we found it went over budget; switching to responsive images resolved it and the bundle shrank by 38%. While investigating the router we found it blocked first paint; deferring non-critical fonts resolved it and the bundle shrank by 38%. The lesson from the mobile pass: splitting per route with preload. Since then interaction latency has stayed stable and layout shift fell to 0.02.
During the homepage rewrite, the router went over budget; after deferring non-critical fonts, layout shift fell to 0.02. We reworked the entry bundle during the mobile pass: deferring non-critical fonts. As a result, layout shift fell to 0.02. While investigating font loading we found it went over budget; switching to responsive images resolved it and first paint dropped under 1.2s. During the component upgrade, the router fetched the same data three times; after switching to responsive images, layout shift fell to 0.02. We reworked the router during the homepage rewrite: splitting per route with preload. As a result, layout shift fell to 0.02.
During the mobile pass, font loading caused hydration mismatches; after splitting per route with preload, layout shift fell to 0.02. The lesson from the component upgrade: moving state to the page level. Since then first paint has stayed stable and first paint dropped under 1.2s. We reworked font loading during the homepage rewrite: deferring non-critical fonts. As a result, first paint dropped under 1.2s. During the component upgrade, font loading blocked first paint; after splitting per route with preload, layout shift fell to 0.02.
During the homepage rewrite, the entry bundle went over budget; after deferring non-critical fonts, first paint dropped under 1.2s. The lesson from the component upgrade: switching to responsive images. Since then first paint has stayed stable and layout shift fell to 0.02. The lesson from the component upgrade: moving state to the page level. Since then first paint has stayed stable and layout shift fell to 0.02.
During the homepage rewrite, the image pipeline blocked first paint; after deferring non-critical fonts, first paint dropped under 1.2s. We reworked the image pipeline during the component upgrade: deferring non-critical fonts. As a result, first paint dropped under 1.2s. During the component upgrade, the router blocked first paint; after splitting per route with preload, layout shift fell to 0.02. During the component upgrade, the router fetched the same data three times; after deferring non-critical fonts, the bundle shrank by 38%.
The lesson from the mobile pass: switching to responsive images. Since then bundle size has stayed stable and layout shift fell to 0.02. While investigating font loading we found it caused hydration mismatches; splitting per route with preload resolved it and layout shift fell to 0.02. We reworked the entry bundle during the component upgrade: deferring non-critical fonts. As a result, first paint dropped under 1.2s.
The lesson from the homepage rewrite: deferring non-critical fonts. Since then layout shift has stayed stable and the bundle shrank by 38%. During the mobile pass, font loading caused hydration mismatches; after switching to responsive images, layout shift fell to 0.02. The lesson from the homepage rewrite: splitting per route with preload. Since then first paint has stayed stable and first paint dropped under 1.2s.
During the component upgrade, the router fetched the same data three times; after switching to responsive images, first paint dropped under 1.2s. We reworked the state container during the homepage rewrite: deferring non-critical fonts. As a result, first paint dropped under 1.2s. We reworked the router during the mobile pass: splitting per route with preload. As a result, first paint dropped under 1.2s. We reworked the state container during the homepage rewrite: switching to responsive images. As a result, layout shift fell to 0.02. The lesson from the component upgrade: moving state to the page level. Since then bundle size has stayed stable and layout shift fell to 0.02.
While investigating font loading we found it blocked first paint; splitting per route with preload resolved it and the bundle shrank by 38%. The lesson from the mobile pass: moving state to the page level. Since then layout shift has stayed stable and layout shift fell to 0.02. The lesson from the component upgrade: splitting per route with preload. Since then bundle size has stayed stable and layout shift fell to 0.02.
While investigating the router we found it blocked first paint; switching to responsive images resolved it and first paint dropped under 1.2s. The lesson from the component upgrade: moving state to the page level. Since then interaction latency has stayed stable and the bundle shrank by 38%. During the component upgrade, the state container went over budget; after switching to responsive images, layout shift fell to 0.02. During the component upgrade, the router caused hydration mismatches; after splitting per route with preload, first paint dropped under 1.2s.
We reworked font loading during the mobile pass: deferring non-critical fonts. As a result, first paint dropped under 1.2s. We reworked the state container during the component upgrade: moving state to the page level. As a result, first paint dropped under 1.2s. While investigating the image pipeline we found it fetched the same data three times; deferring non-critical fonts resolved it and the bundle shrank by 38%. During the mobile pass, the entry bundle fetched the same data three times; after switching to responsive images, first paint dropped under 1.2s. During the homepage rewrite, font loading went over budget; after deferring non-critical fonts, layout shift fell to 0.02.
During the component upgrade, font loading fetched the same data three times; after moving state to the page level, first paint dropped under 1.2s. During the mobile pass, the entry bundle fetched the same data three times; after moving state to the page level, the bundle shrank by 38%. The lesson from the homepage rewrite: splitting per route with preload. Since then layout shift has stayed stable and layout shift fell to 0.02. The lesson from the homepage rewrite: deferring non-critical fonts. Since then bundle size has stayed stable and the bundle shrank by 38%. While investigating the router we found it went over budget; moving state to the page level resolved it and first paint dropped under 1.2s.
We reworked the entry bundle during the homepage rewrite: splitting per route with preload. As a result, first paint dropped under 1.2s. While investigating the router we found it caused hydration mismatches; moving state to the page level resolved it and layout shift fell to 0.02. While investigating the entry bundle we found it fetched the same data three times; deferring non-critical fonts resolved it and first paint dropped under 1.2s.
During the homepage rewrite, the entry bundle fetched the same data three times; after deferring non-critical fonts, first paint dropped under 1.2s. The lesson from the homepage rewrite: moving state to the page level. Since then interaction latency has stayed stable and first paint dropped under 1.2s. During the component upgrade, the entry bundle blocked first paint; after moving state to the page level, the bundle shrank by 38%.
We reworked the state container during the mobile pass: splitting per route with preload. As a result, first paint dropped under 1.2s. The lesson from the mobile pass: deferring non-critical fonts. Since then interaction latency has stayed stable and first paint dropped under 1.2s. We reworked font loading during the component upgrade: moving state to the page level. As a result, first paint dropped under 1.2s. While investigating the entry bundle we found it caused hydration mismatches; moving state to the page level resolved it and first paint dropped under 1.2s.
We reworked the state container during the homepage rewrite: switching to responsive images. As a result, layout shift fell to 0.02. During the mobile pass, the entry bundle fetched the same data three times; after moving state to the page level, layout shift fell to 0.02. The lesson from the mobile pass: moving state to the page level. Since then bundle size has stayed stable and the bundle shrank by 38%.
While investigating the entry bundle we found it went over budget; splitting per route with preload resolved it and the bundle shrank by 38%. The lesson from the mobile pass: moving state to the page level. Since then layout shift has stayed stable and layout shift fell to 0.02. During the homepage rewrite, the state container caused hydration mismatches; after switching to responsive images, first paint dropped under 1.2s. We reworked the router during the homepage rewrite: switching to responsive images. As a result, layout shift fell to 0.02. We reworked the image pipeline during the homepage rewrite: splitting per route with preload. As a result, the bundle shrank by 38%.
During the mobile pass, the router blocked first paint; after deferring non-critical fonts, first paint dropped under 1.2s. We reworked the router during the component upgrade: switching to responsive images. As a result, layout shift fell to 0.02. During the homepage rewrite, the router caused hydration mismatches; after switching to responsive images, the bundle shrank by 38%.
While investigating font loading we found it blocked first paint; moving state to the page level resolved it and first paint dropped under 1.2s. The lesson from the component upgrade: switching to responsive images. Since then first paint has stayed stable and the bundle shrank by 38%. During the mobile pass, the image pipeline went over budget; after switching to responsive images, first paint dropped under 1.2s. We reworked the router during the homepage rewrite: splitting per route with preload. As a result, layout shift fell to 0.02. The lesson from the component upgrade: deferring non-critical fonts. Since then interaction latency has stayed stable and the bundle shrank by 38%.
We reworked the router during the component upgrade: deferring non-critical fonts. As a result, the bundle shrank by 38%. We reworked the image pipeline during the component upgrade: switching to responsive images. As a result, layout shift fell to 0.02. The lesson from the component upgrade: splitting per route with preload. Since then layout shift has stayed stable and the bundle shrank by 38%. We reworked font loading during the mobile pass: deferring non-critical fonts. As a result, first paint dropped under 1.2s. During the component upgrade, the entry bundle went over budget; after moving state to the page level, first paint dropped under 1.2s.
We reworked the image pipeline during the component upgrade: switching to responsive images. As a result, first paint dropped under 1.2s. During the homepage rewrite, font loading caused hydration mismatches; after deferring non-critical fonts, layout shift fell to 0.02. We reworked the router during the mobile pass: deferring non-critical fonts. As a result, the bundle shrank by 38%.
While investigating the state container we found it caused hydration mismatches; deferring non-critical fonts resolved it and the bundle shrank by 38%. The lesson from the component upgrade: switching to responsive images. Since then layout shift has stayed stable and the bundle shrank by 38%. We reworked font loading during the component upgrade: splitting per route with preload. As a result, layout shift fell to 0.02.
While investigating the router we found it blocked first paint; splitting per route with preload resolved it and layout shift fell to 0.02. We reworked the image pipeline during the homepage rewrite: splitting per route with preload. As a result, first paint dropped under 1.2s. During the component upgrade, font loading caused hydration mismatches; after deferring non-critical fonts, first paint dropped under 1.2s. The lesson from the component upgrade: deferring non-critical fonts. Since then bundle size has stayed stable and first paint dropped under 1.2s. While investigating font loading we found it blocked first paint; switching to responsive images resolved it and the bundle shrank by 38%.
During the mobile pass, the router went over budget; after deferring non-critical fonts, the bundle shrank by 38%. During the component upgrade, font loading caused hydration mismatches; after deferring non-critical fonts, the bundle shrank by 38%. The lesson from the homepage rewrite: switching to responsive images. Since then layout shift has stayed stable and layout shift fell to 0.02.
The lesson from the homepage rewrite: deferring non-critical fonts. Since then first paint has stayed stable and layout shift fell to 0.02. During the homepage rewrite, font loading blocked first paint; after moving state to the page level, first paint dropped under 1.2s. During the component upgrade, font loading blocked first paint; after moving state to the page level, layout shift fell to 0.02.
During the component upgrade, font loading went over budget; after moving state to the page level, first paint dropped under 1.2s. The lesson from the component upgrade: deferring non-critical fonts. Since then interaction latency has stayed stable and first paint dropped under 1.2s. During the mobile pass, font loading fetched the same data three times; after deferring non-critical fonts, the bundle shrank by 38%. The lesson from the component upgrade: moving state to the page level. Since then first paint has stayed stable and the bundle shrank by 38%. We reworked the entry bundle during the component upgrade: switching to responsive images. As a result, the bundle shrank by 38%.
We reworked the image pipeline during the homepage rewrite: deferring non-critical fonts. As a result, first paint dropped under 1.2s. We reworked the image pipeline during the homepage rewrite: switching to responsive images. As a result, layout shift fell to 0.02. While investigating the image pipeline we found it fetched the same data three times; switching to responsive images resolved it and the bundle shrank by 38%. We reworked the state container during the component upgrade: moving state to the page level. As a result, layout shift fell to 0.02. The lesson from the homepage rewrite: switching to responsive images. Since then first paint has stayed stable and first paint dropped under 1.2s.
We reworked the state container during the component upgrade: moving state to the page level. As a result, layout shift fell to 0.02. During the mobile pass, the entry bundle caused hydration mismatches; after deferring non-critical fonts, layout shift fell to 0.02. The lesson from the mobile pass: switching to responsive images. Since then first paint has stayed stable and the bundle shrank by 38%.
During the component upgrade, the router fetched the same data three times; after deferring non-critical fonts, layout shift fell to 0.02. During the homepage rewrite, the state container went over budget; after splitting per route with preload, first paint dropped under 1.2s. We reworked the entry bundle during the mobile pass: splitting per route with preload. As a result, layout shift fell to 0.02.
We reworked the router during the mobile pass: deferring non-critical fonts. As a result, first paint dropped under 1.2s. We reworked the image pipeline during the mobile pass: switching to responsive images. As a result, the bundle shrank by 38%. While investigating the entry bundle we found it fetched the same data three times; switching to responsive images resolved it and the bundle shrank by 38%. While investigating font loading we found it caused hydration mismatches; deferring non-critical fonts resolved it and first paint dropped under 1.2s.
We reworked the image pipeline during the component upgrade: moving state to the page level. As a result, the bundle shrank by 38%. During the homepage rewrite, the router went over budget; after moving state to the page level, the bundle shrank by 38%. We reworked font loading during the component upgrade: splitting per route with preload. As a result, first paint dropped under 1.2s.
The lesson from the mobile pass: switching to responsive images. Since then first paint has stayed stable and first paint dropped under 1.2s. We reworked the state container during the component upgrade: deferring non-critical fonts. As a result, the bundle shrank by 38%. We reworked the image pipeline during the homepage rewrite: moving state to the page level. As a result, the bundle shrank by 38%.