← back to Homesonspec

apps/mobile/lib/tracker-policy.ts

29 lines

/**
 * Analytics and advertising hosts blocked inside the Browse WebView.
 * Matching is hostname-aware: exact hosts and their subdomains are blocked,
 * while lookalike domains and harmless query-string mentions remain allowed.
 */
export const TRACKER_HOSTS = [
  'googletagmanager.com',
  'google-analytics.com',
  'analytics.google.com',
  'connect.facebook.net',
  'facebook.com',
  'googlesyndication.com',
  'doubleclick.net',
] as const;

export function isTrackerUrl(value: string): boolean {
  if (!value) return false;

  try {
    const hostname = new URL(value).hostname.toLowerCase();
    return TRACKER_HOSTS.some(
      (blockedHost) =>
        hostname === blockedHost || hostname.endsWith(`.${blockedHost}`),
    );
  } catch {
    return false;
  }
}