💥 Remove FID (First Input Delay) tracking#4223
Conversation
|
I have read the CLA Document and I hereby sign the CLA You can retrigger this bot by commenting recheck in this Pull Request. Posted by the CLA Assistant Lite bot. |
Bundles Sizes Evolution
🚀 CPU Performance
🧠 Memory Performance
|
|
✅ Tests 🎉 All green!❄️ No new flaky tests detected 🎯 Code Coverage (details) 🔗 Commit SHA: 364a494 | Docs | Datadog PR Page | Was this helpful? Give us feedback! |
8e3aa75 to
ca33516
Compare
RFC: Remove FID (First Input Delay) TrackingStatus: Complete Branch: Last updated: 2026-02-26 PR: PR #4223 SummaryThis change removes First Input Delay (FID) tracking from the Browser SDK. FID was deprecated as a Core Web Vital by Google in March 2024, replaced by Interaction to Next Paint (INP). Since the The event format schema is preserved for backwards compatibility — FID fields remain defined in the schema but the SDK no longer populates them. MotivationFID measured the delay between a user's first interaction and the browser's response. Google deprecated FID as a Core Web Vital in March 2024, replacing it with INP which measures responsiveness across all interactions, not just the first one. The SDK already tracks INP via Important constraint: INP tracking ( SolutionApproachRemove the FID tracking implementation and polyfill while preserving the shared performance entry infrastructure used by INP. The event format schema retains FID fields for backwards compatibility — the SDK simply stops populating them. ArchitectureThe FID tracking pipeline was:
This change removes steps 2-4 entirely, and removes the polyfill fallback from step 1. The SchemaThe export interface RumFirstInputTiming {
entryType: RumPerformanceEntryType.FIRST_INPUT
startTime: RelativeTime
processingStart: RelativeTime
processingEnd: RelativeTime
duration: Duration
target?: Node
interactionId?: number
toJSON(): Omit<RumFirstInputTiming, 'toJSON'>
}The Types removed from first_input_delay?: ServerDuration
first_input_time?: ServerDuration
first_input_target_selector?: stringTypes removed from fid?: {
duration: ServerDuration
timestamp: ServerDuration
target_selector?: string
}Testing
References
|
cef6ff0 to
ca33516
Compare
Remove trackFirstInput.ts, trackFirstInput.spec.ts, and firstInputPolyfill.ts. FID was deprecated as a Core Web Vital in March 2024, replaced by INP. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove FID fields from RawRumViewEvent and ViewPerformanceData types, FID wiring from trackInitialViewMetrics and viewCollection, and the polyfill fallback from performanceObservable. The FIRST_INPUT enum, RumFirstInputTiming interface, and EntryTypeToReturnType mapping are preserved for INP. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove FID fields from view collection and initial view metrics test fixtures and assertions, delete the FID E2E test scenario, and update BROWSER_SUPPORT.md to remove FID-only footnotes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ca33516 to
364a494
Compare
There was a problem hiding this comment.
LGTM!
Some format things we can discuss:
- In
Changespart, I will see the changes in the modified files, I think I would prefer to see a general idea of the changes in a paragraph more than bullet points of each change. - Same for
Test instructions. This part is for me to know how to test it. That the CI passes I can see it below. Maybe in this case that is removing code you can say:typecheckpasses. Since it's the relevant test. - The RFC part sort of repeats what is in the description. I would prefer it all to be in the description since it's the first thing someone reads.
- I like the RFC, I think it's a little bit long. Specially around the Architecture part.
Overall IMO, it's nice to read all this info. I completely understand what you try to do and I have sufficient context to review!
Motivation
FID (First Input Delay) was deprecated as a Core Web Vital in March 2024, replaced by INP (Interaction to Next Paint). Since v7 allows breaking changes, this is the right time to remove FID tracking, its polyfill, and all related event fields.
Changes
trackFirstInput.ts,trackFirstInput.spec.ts,firstInputPolyfill.tsfidfrom_view-performance-schema.json, removedfirst_input_delay,first_input_time,first_input_target_selectorfromview-schema.jsonview.jsonandstream.jsonrumEvent.types.ts; removed FID fields fromrawRumEvent.types.tsandViewPerformanceDataFIRST_INPUTenum,RumFirstInputTiminginterface, andEntryTypeToReturnTypemapping (used by INP)trackFirstInputcall andfirstInputfrom metricsfidfrom performance dataTest instructions
yarn typecheck— passesyarn lint— passes (1 pre-existing warning)yarn format— passesyarn test:unit— 3199/3200 pass (1 pre-existing skip)trackInteractionToNextPaint.spec.ts) — all 18 pass, confirmingFIRST_INPUTentries still workChecklist
🤖 Generated with Claude Code