[✨] How to distinguish between link preload and page visit
Opened this issue · 2 comments
Is your feature request related to a problem?
I'm trying to collect some analytics when a certain page is visited. I'm storing an event every time a routeLoader is executed, but when a Link to that page is hovered, the routeLoader is executed without the user actually visiting the page
Describe the solution you'd like
Be able to distinguish if the current request is a preload or an actual visit to the page, in the routeLoader
Describe alternatives you've considered
Calling a server function from a useVisibleTask$ but seems overkilling
Additional context
No response
assigned to @yousefmarey12 (can't do it directly with github for some reason atm) it might be best to send a prefetch header with prefetch calls to detect when requests are only prefetching
Thanks @yousefmarey12 for your research and hard work!
@juanpmarin it seems like this requires more investigation, and because we're focused on V2, I suggest we'll evaluate a proper solution for it after V2 is done.
In the meantime, what do you say about the following workaround:
instead of using a visible task, what do you think about using a regular task that calls a server$
function? (in case you analytics logic is server side only)
Something like:
const sendAnalytics = server$(() => {
console.log('sending');
});
export default component$(() => {
useTask$(() => {
sendAnalytics();
});
...
That way no javascript will run on initial page load (unlike with visible task which "resumes" and executes its javascript on page load)