You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It says to include an inline script which creates a window.analytics object that has a number of different methods on it, but it doesn't include user,
My understanding is that this is meant as a temporary queue so that you can call analytics methods while the request for the segment script is in flight. If a user has an ad blocker enabled though, the request to segment is blocked, meaning window.analytics is defined from the inline script but it will not have the user method available. Which means when we try to call the method user(), we get a run time error.
Now we first check for the existence of user on the analytics object before calling it, but we have to ignore the typescript definition since the compiler thinks it's always defined.
@william-will-angi Apologies, I deleted my comment and reopened the issue that you responded immediately after I posted it, when I double checked and realized that user is not one of the buffered methods on the list -- didn't mean for you to see it (but I assume you got notified). You're correct.
On npm (AnalyticsBrowser), user is always defined and returns a promise, but not in the snippet -- a bit confusing. Unifying the api is something I'm noodling on.
We are running into an issue for users that have ad blocking or cross-site tracking disabled.
Our code:
Throws the error:
My expectation is that the typescript definition lists the user function as optionally undefined so that typescript enforces that we call the code as:
This would prevent us from running into runtime errors for users with ad blockers or cross site trackers disabled.
We are using
@segment/analytics-next@1.70.0
&typescript@5.5.2
The text was updated successfully, but these errors were encountered: