<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/web-perf-wednesday-011-speedcurve-s-inp-observer-missed-its-threshold-css-wizardry-sb7xa8ziw" -->

---
title: Web-Perf Wednesday 011 – SpeedCurve’s INP Observer...
description: A long-standing bug in SpeedCurve's public lux.js RUM library failed to pass PerformanceObserver options correctly, leaving Event Timing on its 104ms default...
canonical: https://daily.dev/posts/web-perf-wednesday-011-speedcurve-s-inp-observer-missed-its-threshold-css-wizardry-sb7xa8ziw
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Web-Perf Wednesday 011 – SpeedCurve’s INP Observer Missed Its Threshold – CSS Wizardry | daily.dev
og:description: A long-standing bug in SpeedCurve's public lux.js RUM library failed to pass PerformanceObserver options correctly, leaving Event Timing on its 104ms default...
og:url: https://daily.dev/posts/web-perf-wednesday-011-speedcurve-s-inp-observer-missed-its-threshold-css-wizardry-sb7xa8ziw
og:image: https://api.daily.dev/og/posts/sb7xA8ZiW.png
og:image:alt: Web-Perf Wednesday 011 – SpeedCurve’s INP Observer Missed Its Threshold – CSS Wizardry
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Web-Perf Wednesday 011 – SpeedCurve’s INP Observer Missed Its Threshold – CSS Wizardry

**[CSS Wizardry](https://daily.dev/sources/csswizardry)** · [@csswizardry](https://daily.dev/csswizardry) · 5 min read · 0 upvotes · 0 comments

## Summary

A long-standing bug in SpeedCurve's public lux.js RUM library failed to pass PerformanceObserver options correctly, leaving Event Timing on its 104ms default instead of the intended zero threshold, which could distort INP values and attribution for over three years. The fix was reported, patched within an hour by SpeedCurve's Joseph Wynn, merged on 24 September, and shipped in lux.js 4.5.3 on 30 September, though it wasn't yet confirmed live in the hosted customer SDK. Also covered: Safari Technology Preview 253 adds network throttling to Web Inspector plus several rendering/performance fixes, and Firefox 157 adds WebGPU TRANSIENT_ATTACHMENT texture support to reduce VRAM overhead on tile-based GPUs.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://csswizardry.com/2026/09/web-perf-wednesday-011-speedcurves-inp-observer-missed-its-threshold>

## Questions this post answers

### Why was SpeedCurve's INP data using a 104ms threshold instead of zero?

A bug in SpeedCurve's lux.js library nested the extra PerformanceObserver options inside a wrapper object instead of passing them at the top level, so the browser never received the durationThreshold: 0 setting and silently fell back to its default 104ms threshold. This meant interactions faster than 104ms were excluded from Event Timing, potentially skewing INP values and attribution. The bug existed for over three years before being reported and fixed in lux.js 4.5.3, merged 24 September.

_Teams auditing RUM accuracy can track fixes like this lux.js threshold bug on daily.dev._

### Does Firefox 157 change how WebGPU handles render-pass attachment memory?

Yes, Firefox 157, shipped 29 September, added support for WebGPU's TRANSIENT_ATTACHMENT texture usage, which lets render-pass attachments stay in tile memory on tile-based GPUs. This avoids VRAM traffic and can avoid a VRAM allocation entirely for textures whose contents aren't needed afterward, though actual savings depend on the specific workload and hardware.

_Developers weighing WebGPU memory optimizations can follow browser capability changes like this on daily.dev._

### What new feature does Safari Technology Preview 253 add for testing web performance?

Safari Technology Preview 253 adds network throttling to Web Inspector, alongside fixes for excessive CPU and power use from pages with many IntersectionObserver targets, multi-second main-thread blocking around shared scroll-timeline names, redundant parsing of long URLs, and unnecessary full-layer repaints. These are preview-only changes, not yet in stable Safari for all users.

_Web performance engineers testing Safari-specific bottlenecks can track Technology Preview changes via daily.dev._

## Similar posts on daily.dev

- [Web-Perf Wednesday 005 – RUM Needs More Than a Percentile – CSS Wizardry](https://daily.dev/posts/web-perf-wednesday-005-rum-needs-more-than-a-percentile-css-wizardry-drravlqbb) · CSS Wizardry · 1 upvotes · 0 comments
- [Web-Perf Wednesday 002 – The Metrics Don’t Tell the Whole Story – CSS Wizardry](https://daily.dev/posts/web-perf-wednesday-002-the-metrics-don-t-tell-the-whole-story-css-wizardry-757w9utar) · CSS Wizardry · 4 upvotes · 0 comments
- [LCP and INP are now Baseline Newly available](https://daily.dev/posts/lcp-and-inp-are-now-baseline-newly-available-kond6f1fo) · web.dev · 3 upvotes · 0 comments
- [Web-Perf Wednesday 007 – Chrome Makes Busy Workers Measurable – CSS Wizardry](https://daily.dev/posts/web-perf-wednesday-007-chrome-makes-busy-workers-measurable-css-wizardry-xxsb0p0sw) · CSS Wizardry · 5 upvotes · 0 comments
- [Insights from 100 site speed reviews in 2025](https://daily.dev/posts/insights-from-100-site-speed-reviews-in-2025-yh4tk3cne) · Web Performance Calendar · 0 upvotes · 0 comments

---

Tags: [#webdev](https://daily.dev/tags/webdev), [#webgpu](https://daily.dev/tags/webgpu)

[View this post on daily.dev](https://daily.dev/posts/web-perf-wednesday-011-speedcurve-s-inp-observer-missed-its-threshold-css-wizardry-sb7xa8ziw)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Web-Perf Wednesday 011 – SpeedCurve’s INP Observer Missed Its Threshold – CSS Wizardry","url":"https://daily.dev/posts/web-perf-wednesday-011-speedcurve-s-inp-observer-missed-its-threshold-css-wizardry-sb7xa8ziw","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/web-perf-wednesday-011-speedcurve-s-inp-observer-missed-its-threshold-css-wizardry-sb7xa8ziw"},"datePublished":"2026-09-30T08:29:26.146Z","dateModified":"2026-10-01T05:00:09.187Z","description":"A long-standing bug in SpeedCurve's public lux.js RUM library failed to pass PerformanceObserver options correctly, leaving Event Timing on its 104ms default...","image":"https://media.daily.dev/image/upload/s--HRgLpUt6--/f_auto/v1722860399/public/Placeholder%2003","thumbnailUrl":"https://media.daily.dev/image/upload/s--HRgLpUt6--/f_auto/v1722860399/public/Placeholder%2003","isAccessibleForFree":true,"articleSection":"CSS Wizardry","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Person","name":"Harry Roberts","url":"https://daily.dev/csswizardry","image":"https://media.daily.dev/image/upload/s--6zcMNpvC--/f_auto/v1755686282/avatars/avatar_Lw7jrTalrSeSbSjzuBQBH?_a=BAMClqZW0","interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"EndorseAction"},"userInteractionCount":230}},"commentCount":0,"discussionUrl":"https://daily.dev/posts/web-perf-wednesday-011-speedcurve-s-inp-observer-missed-its-threshold-css-wizardry-sb7xa8ziw","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"webdev,webgpu","timeRequired":"PT5M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"CSS Wizardry","item":"https://daily.dev/sources/csswizardry"},{"@type":"ListItem","position":3,"name":"Web-Perf Wednesday 011 – SpeedCurve’s INP Observer Missed Its Threshold – CSS Wizardry"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/web-perf-wednesday-011-speedcurve-s-inp-observer-missed-its-threshold-css-wizardry-sb7xa8ziw#faq","mainEntity":[{"@type":"Question","name":"Why was SpeedCurve's INP data using a 104ms threshold instead of zero?","acceptedAnswer":{"@type":"Answer","text":"A bug in SpeedCurve's lux.js library nested the extra PerformanceObserver options inside a wrapper object instead of passing them at the top level, so the browser never received the durationThreshold: 0 setting and silently fell back to its default 104ms threshold. This meant interactions faster than 104ms were excluded from Event Timing, potentially skewing INP values and attribution. The bug existed for over three years before being reported and fixed in lux.js 4.5.3, merged 24 September. Teams auditing RUM accuracy can track fixes like this lux.js threshold bug on daily.dev."}},{"@type":"Question","name":"Does Firefox 157 change how WebGPU handles render-pass attachment memory?","acceptedAnswer":{"@type":"Answer","text":"Yes, Firefox 157, shipped 29 September, added support for WebGPU's TRANSIENT_ATTACHMENT texture usage, which lets render-pass attachments stay in tile memory on tile-based GPUs. This avoids VRAM traffic and can avoid a VRAM allocation entirely for textures whose contents aren't needed afterward, though actual savings depend on the specific workload and hardware. Developers weighing WebGPU memory optimizations can follow browser capability changes like this on daily.dev."}},{"@type":"Question","name":"What new feature does Safari Technology Preview 253 add for testing web performance?","acceptedAnswer":{"@type":"Answer","text":"Safari Technology Preview 253 adds network throttling to Web Inspector, alongside fixes for excessive CPU and power use from pages with many IntersectionObserver targets, multi-second main-thread blocking around shared scroll-timeline names, redundant parsing of long URLs, and unnecessary full-layer repaints. These are preview-only changes, not yet in stable Safari for all users. Web performance engineers testing Safari-specific bottlenecks can track Technology Preview changes via daily.dev."}}]}
```

