As it states
If you start your project with the Boilerplate as in the Developer Tutorial, you will get a very stable Lighthouse score that is 100. On every component of the lighthouse score there is some buffer for the project code to use and still be within the boundaries of a perfect 100 score.
Main point to focus here is Please check Three-Phase Loading
Edge defines as 3 phases
- Phase E (Eager): This contains everything that's needed to get to the largest contentful paint (LCP).
- Phase L (Lazy): This contains everything that is controlled by the project and largely served from the same origin.
- Phase D (Delayed): This contains everything else such as third-party tags or assets that are not material to experience.
The good:
- Good Backend Performance
- LCP Blocks
- Proper Eager first LCP image.
- Deliver minimal for LCP
- Font fallback plugin
Could improve:
- Header
- No mention of preloading
- Fixed code required to configure LCP_BLOCKS
Problems:
- Queue / Prioritization with async-await code
- Icons as initial decoration script
Very good backend performance OOB and very small footprint under CDN. This seems the most impacting performance, at CDN in several sites, content and assets can reach amazing speed.
Examples
One great point is to be able to configure what blocks represent LCP
// at their script they allow a LCP_BLOCKS
const LCP_BLOCKS = ['hero', 'logo-wall'];
Although backend renders the first image as loading="lazy"
, they transform it to loading="eager"
at the blocking level, keeping it as good as it were preloaded.
They offer a plugin to properly check and set up custom fonts to avoid CLS font fallback plugin
Although they enforce that the header is not LCP, that definitely is the case in several Henkel sites where the logo is the main LCP, or header impacts CLS. So a non-prioritized header can easily impact CLS and, in some cases, even LCP.
In some cases, preloading some assets would offer advantages on LCP and FP.
That also can be an issue if you have different blocks on different pages.
Well, although it's actually a well-performing script, it relies a lot on queue and async-await.
- Chaining of Async function, that actually await, endup beeing basically synchronous/queue code.
Queue will always offer a step-by-step loading and reduce the concurrency, increasing the time to load overall and can lead to longer load times.
Get's clear the async-await/queue impact.
Concern of icons should not be at the main script.