The Grafana Faro Web SDK, part of the Grafana Faro project, is a highly configurable web SDK for real user monitoring (RUM) that instruments browser frontend applications to capture observability signals. Frontend telemetry can then be correlated with backend and infrastructure data for full-stack observability.
Instead of loading individual web pages per user navigation, Single Page Applications (SPAs) use soft-navigations when a user navigates the app.
Here, the content of a page is changed by dynamically altering the browser URL by leveraging the history API and by replacing a pages content through JavaScript.
To get insights into navigation performance and UX metrics within in Single Page Applications Faro should support tracking soft-navigations.
Once this is activated in chrome we can start using this api to get the data. Given the big market share of Chrome we can get a good amount of data even if other browser need some more time to implement the api.
In the meantime we need to find out what else we can do.
We can built a custom instrumentation which hooks into the history API to track navigations. This is not straight forward because it's complicated to find out what is a navigation and what is simply a URL update,
Why
Instead of loading individual web pages per user navigation, Single Page Applications (SPAs) use soft-navigations when a user navigates the app. Here, the content of a page is changed by dynamically altering the browser URL by leveraging the history API and by replacing a pages content through JavaScript.
To get insights into navigation performance and UX metrics within in Single Page Applications Faro should support tracking soft-navigations.
What
The Chrome team is currently experimenting with tracking soft navigations which are emitted as a dedicated PerformanceEntry form a PerformanceObserver hooking into the browsers performance timeline.
Once this is activated in chrome we can start using this api to get the data. Given the big market share of Chrome we can get a good amount of data even if other browser need some more time to implement the api.
In the meantime we need to find out what else we can do.