Cyrcle · 2 May 2026

Why we ship attribution at sub-2KB

Most attribution tags are 30–80KB. cyrqle's is gated at sub-2KB gzipped. Here's why that gate matters, how we enforce it, and what we left out.

A working number on most analytics + attribution tags in 2026: 30–80KB gzipped, often running on the critical path of the page. cyrqle's attribution tag is gated at sub-2KB gzipped, hard-enforced in CI. Here's why that gate matters, how we enforce it, and what we deliberately left out.

Why the size matters

Three reasons:

  1. Performance budget. A brand site's Lighthouse score is a real number that real teams optimize against. Shipping an attribution tag that eats 50KB of their performance budget is something they push back on, hard. We don't want to be the thing brands have to defer or lazy-load.
  2. Blocking risk. Heavier tags get blocked by more adblockers, browser ITP, and corporate proxies. A 2KB script that exists primarily to fire one event lives below most of those thresholds.
  3. Surface area for bugs. Less code, fewer ways for the tag to misbehave on someone else's checkout page.

How we enforce the gate

Two CI checks, both hard-blocking on PR merge:

  1. The tag's gzipped size is measured on every build. The PR fails if it crosses 2KB.
  2. The tag's runtime dependencies are pinned to a no-third-party-imports rule. Adding a library to the tag goes through an architecture review.

What's in the 2KB

  • The URL parser that extracts creator ID, cluster ID, and campaign ID from the inbound URL or cookie.
  • The session-level local storage write that persists the attribution context for the duration of the buyer's session.
  • The conversion-event fire that emits to cyrqle's edge endpoint on checkout or whatever event the brand has wired up.
  • Minimal error handling for the cases where local storage is denied.

What we deliberately left out

  • General-purpose analytics. This isn't a heatmap, not a session replay, not a click recorder. Use your existing tools for that.
  • Identity resolution. No fingerprinting, no cross-site tracking. The tag works entirely on first-party data the brand already owns.
  • A/B testing framework. Different problem, different tool.
  • External fetches before conversion fires. No prefetch, no warmup ping. The tag doesn't run unless there's a conversion event to send.

What this enables

The tag is small enough that a brand can install it on their highest-traffic page without negotiating with their performance team. That's the entire point. Attribution that lives on the brand's site, owned by the brand, and doesn't have to be apologized for.

When attribution becomes invisible from a performance perspective, it stops being a trade-off and starts being a default.

More reading

Related field notes.