That’s an interesting question. I can only tell you about our journey.
Some background:
Our react codebase has almost 10.000 tsx files.
We have over a million of unique daily users.
My team has spent a lot time over the past half-year improving the INP metric.
In short:
Did it improve UX? No
Did it help us developer? Yes
The good things:
- Our developers now have a better understanding of the performance goals
- INP provides a helpful argument when advocating for performance improvements in libraries and browsers
- web-vitals.js allowed us to track slow INP together with meta data to help reproducing slow INP cases
- we can compare our performance with relevant competitors
- web-vitals.js together with cypress helped us to verify and falsify different performance believes:
https://github.com/jantimon/inp-tests Other observations:
- we identified two performance issues in Chrome's rendering, which, once addressed and rolled out, will improve the speed especially for our low end android users (
https://issues.chromium.org/issues/339311809 and
https://issues.chromium.org/issues/342214592 )
- we discovered
https://groups.google.com/g/web-vitals-feedback and learned a lot from the questions and answers
- our developers took time to learn about performance optimization
- modern frameworks (like react, angular, vue …) are already optimised for INP as all of them avoid layout thrashing
- the most relevant improvement of our INP was deferring tracking with requestIdleCallback
The bad things:
- we got hints like “just reduce dom nodes” which were hardly possible to implement without sacrificing UX or accessibility
- Browser extensions influence the INP but that’s hard to identify and even harder to improve
- Some profiler options slow down the profiling which can be very misleading
- Slow third-party code, whether from a library or the browser itself, is challenging to improve, leading developers to use techniques like `setTimeout` to game the metric. Which can lead to a slower overall performance
INP (and its sub metrics) together with web-vitals.js enhances our performance monitoring and understanding but the impact on users is less direct
Hope that helps