// NATIVE CAMPAIGNS: ADDED - fire-and-forget impression tracking. export class ImpressionService { static track(pixelUrl: string | null | undefined): void { if (!pixelUrl) return; // Native tracking requests use a 10-second // timeout and remain fire-and-forget so they never block the host UI. const controller = new AbortController(); const timeout = setTimeout(() => controller.abort(), 10_000); fetch(pixelUrl, { method: 'GET', signal: controller.signal }) .catch(() => undefined) .finally(() => clearTimeout(timeout)); } }