Indonesia Singapore ไทย Pilipinas Việt Nam Malaysia မြန်မာ ລາວ
← Back to Blog

CSS Props and Browser Signals: What Tracking Teams Miss

Live CSS props now expose scroll velocity and cursor state that your data layer almost certainly isn't capturing — fix that before your next sprint.

A developer watching streams of browser signals flow past while holding a tiny fishing net
Illustrated by Mikael Venne

New CSS capabilities like live props are reshaping what browsers expose — and most tracking architectures aren't built to capture it. Here's what to do.

Most tracking conversations start at the same place: GTM container, dataLayer.push, consent mode. Solid fundamentals. But the browser has been quietly developing a richer vocabulary — and tracking architectures built even two years ago are likely deaf to most of it.

Two things landed in close succession this week that, taken together, should prompt a fairly urgent architecture review for any team serious about behavioural signal quality.

CSS Is Now Generating Signals Your Data Layer Can’t See

CSS-Tricks covered the Prop For That library this week — a tool that creates live custom properties from browser states that CSS has historically had no visibility into: cursor position, scroll velocity, form states, even the current time. These become real CSS variables, updating in real time, directly on the DOM.

For a front-end developer, this is a neat trick for animation. For a tracking architect, it’s a signal layer that almost no existing implementation is reading.

Scroll depth has been a standard engagement proxy for years, but scroll velocity is meaningfully different. A user who blasts through a page in two seconds and a user who decelerates at a product comparison table are not the same user — but your current setup is almost certainly logging them identically. Cursor hover density around a CTA, form focus state duration — these are behavioural signals that, on a high-traffic Shopee product page or a Lazada merchant storefront, could directly inform funnel optimisation.

The implementation path isn’t trivial. You’d need to bridge these CSS custom properties back into JavaScript — a MutationObserver on :root computed styles, or a thin wrapper that polls at a sensible interval and pushes deltas to your dataLayer. The QA overhead is real. But the signal quality uplift is worth scoping.

Safari Preview 246 Just Changed Your Cross-Browser Testing Assumptions

Safari Technology Preview 246 dropped this week, and while the full release notes cover a wide surface area, what matters for tracking teams is the continued pace of WebKit capability changes — particularly around JavaScript API behaviour, storage access, and how the browser handles certain timing functions.

Safari remains the dominant mobile browser across Singapore, Thailand, and the Philippines among higher-spending demographics — the exact audience most brands are optimising for. Yet it’s still the browser most commonly under-tested in tag QA cycles, because most agencies and in-house teams run Chrome-first workflows.

Practically: Safari TP releases are your 90-day warning system. What ships in Preview today tends to hit stable Safari within two to three release cycles. If you’re running server-side tagging through a solution like stape.io or your own cloud container, audit your client-side fallback logic now against the current Preview build. Specifically check: how your consent mode signals degrade, whether your first-party cookie writes are behaving consistently, and how any scroll or interaction listeners perform under Safari’s stricter timer throttling for background tabs.


Probabilistic Thinking Belongs in Tracking Architecture Too

Smashing Magazine published a piece this week on Probabilistic Design — the argument, from Pratik Joglekar, is that AI-assisted design outputs should be read as probability distributions, not decisions. Teams that treat a high-confidence AI recommendation as a certainty are compounding prediction errors into shipped product.

The same logic applies directly to tracking data interpretation. A conversion event in your analytics is not a fact — it’s a signal with a confidence interval. Cookie consent rates in Vietnam and Indonesia sit well below European norms, meaning your observable conversion funnel already reflects a non-representative sample. Layer in ITP, ad blockers, and the growing share of in-app browsers (LINE, Grab, TikTok) that handle cookies inconsistently, and your reported numbers carry meaningful uncertainty bands that most reporting dashboards don’t surface.

The practical response isn’t to throw up your hands — it’s to build uncertainty explicitly into how you present data to stakeholders. If your server-side setup is recovering, say, 30% of previously unobservable events, report that recovery rate alongside the headline number. Give your media and CX teams a signal-quality score, not just a conversion count. This is the kind of instrumentation that prevents bad budget decisions downstream.

What a Modern Signal Architecture Actually Looks Like

Pulling these threads together: the browser is generating more behavioural signal than ever, Safari is moving fast enough to break assumptions quarterly, and the data that reaches your reporting layer carries uncertainty that most teams don’t account for.

A signal architecture fit for 2026 has three layers working in concert. First, a client-side layer that’s actively maintained — not set-and-forget — with regular QA against Safari TP and Chrome Canary builds. Second, a server-side layer that normalises events, applies consent logic consistently, and recovers signal lost to client-side blocking. Third, a data quality layer that annotates outputs with confidence metadata: consent coverage rate, ITP impact estimate, browser distribution shifts.

The last layer is the one most teams skip. It’s also the one that determines whether your tracking investment actually translates into better decisions — or just more numbers.

Key Takeaways

  • CSS custom properties from tools like Prop For That expose scroll velocity, cursor state, and form behaviour that standard dataLayer implementations don’t capture — scope a bridge integration before your next optimisation sprint.
  • Safari Technology Preview 246 is your advance warning: audit consent mode fallbacks and cookie write behaviour against the current Preview build now, not when it hits stable.
  • Build signal uncertainty explicitly into reporting — consent coverage rate and ITP impact estimates should sit alongside conversion counts, especially for SEA markets where observable samples are systematically skewed.

The browser has always been a richer signal environment than our tracking stacks give it credit for. The question worth sitting with: how much of your current optimisation work is based on the signals you could capture, rather than the signals that actually exist?


At grzzly, we spend a lot of time in exactly this space — helping Southeast Asian brands build tracking architectures that account for Safari’s quirks, consent realities across six markets, and the behavioural signal layers that standard implementations leave on the table. If your current setup was built more than 18 months ago and hasn’t had a structural review since, it’s probably due one. Let’s talk

Cryptic Grizzly

Written by

Cryptic Grizzly

Fluent in server-side tagging, consent-mode logic, and the intricate diplomacy of getting marketing and engineering to agree on a data layer. Nothing ships without a QA plan.

Enjoyed this?
Let's talk.

Start a conversation