Open joesnellpdx opened 3 years ago
The initial exploration of perfume (and others) I did was to make it work with GA and report previous data, but that didn't work out well for me (not enough GA experience I believe...) but adding this to the scaffold would require the
GTM script and instance to be connected, which I doubt is the idea here; so it's about the reporting to the developer on the spot. Some notes on that:The alternative I can see would also be https://www.npmjs.com/package/web-vitals as it would report the metrics that are often related to SEO performance and include a lot of what Perfume.js measures, but has larger support/developer.
Looking at its docs, it can also send data to GA to track, which can be useful at times, but doesn't work "out of the box", it requires tweaks to the reporting/measuring in GA.
While researching I also found and tested https://www.npmjs.com/package/sitespeed.io which seems to work out of the box quickly and provides result like these: screenshot and stores them in the repository, which can be in git ignore.
What is sitespeed.io good for? It is usually used in two different areas:
- Running in your continuous integration to find web performance regressions early: on commits or when you move code to your test environment
- Monitoring your performance in production, alerting on regressions.
And it's also possible to setup a dashboard to show the results and previous measurements with docker - https://www.sitespeed.io/documentation/sitespeed.io/performance-dashboard/ There is cost breakdown near the end of the page if this is hosted on AWS, but local testing is also doable as shown in the example above.
— So I think that perfume.js and web-vitals npm package combined with console reporting could help in development, but in my experience, I rarely needed to look at this all the time. in fact, I only run tests manually when I am fixing performance issues. For the monitoring, dashboard reports with previous data would be better as they can pinpoint commits that create regressions (or content changes of course)
Aside thinking - measurement is best done on more than one page, which is a config the developer might have to set. If we add it to the scaffold, I see a good benefit from it as report pre-commit and notice if a metric is lower by a given threshold. I wonder however if this is more of a 10up-toolkit area?
@dainemawer ... see @xavortm 's comments above.
I think we need to refine what we mean by performance monitoring in the context of the scaffold. While I think setting up Perfume.js w/ GA or SiteSpeed w/ Docker/Grafana are great options for remote performance monitoring, I feel like they are only going to be used on a small percentage of projects. And performance monitoring in a local environment during development is rarely reflective of performance in the real world.
@rdimascio @xavortm
I agree, we need to define this a little more clearly.
We do have remote performance monitoring as part of support monitor - see Web Vitals.
And, we'd also like mechanisms to help measure in flight performance budgets and raise flags when pertinent.
They key for me, what tooling can we add to best enhance any current initiatives or goals from @dainemawer so support him and, therefore, support our team efforts.
Daine, what are your thoughts? What would be your goal or desired deliverable here?
Agreed, this ticket does require some more clarity. So here it goes!
Web Vitals Web Vitals is a great library that was released around about the same time as the initial release of the Core Web Vitals initiative. It is a tiny library (1KB), which is great, however it is specifically focused on tracking metrics on specific web vitals (LCP, FID, CLS, TTFB, FCP). The other upside the library has is that it provides engineers a way to send data to analytics platforms.
Let me say before venturing further, that there is absolutely nothing wrong with using this library. Implementation / installation is very easy and direct. It also has a great support structure considering it's built by the Chrome team.
PerfumeJS Perfume is far more comprehensive in terms of reporting data. It is double the size of Web Vitals (2kb) but that makes sense to me as it comes with a ton more features. It also comes with an API for sending data points to GA
Perfume not only handles Core Web Vitals, but also Web Vitals that are about to become more important (like First Paint). It also by default reports on a ton of metrics (data enrichment) that are generally hidden, unknown or overlooked, I cant list them all (there are too many) but to list a few, Perfume can help us understand and collect data for:
web-vitals.js
In my opinion, Perfume is a far more holistic and forward thinking option for collecting data that can help improve page experience. It gives us tools that can really help us better user experience by being able to make decisions we previously couldn't, using real data. It will go along way to making our sites more accessible in developing markets and reigning in performance on devices with less resources / RAM.
Both libraries should be reviewed with the following considerations:
As mentioned above, the engineering effort here is relatively minor. It's how we collate and interpret the data in GA or GTM that is going to make the difference.
Enable automated performance monitoring in the scaffold
One option is to utilize Perfume.js, but others should be explored.
Perfume.js tutorial
Alternatives? - needs exploration