# Interaction to Next Paint Changes in Chrome 148

## Report only web-exposed event targets in Event Timing

In Chrome 148, Chrome updated how `target` elements are captured and exposed on `PerformanceEventTiming` entries.

Previously, the Event Timing implementation captured the target using internal `RawTarget()` pointers early in the event lifecycle. While this minimized the likelihood of `entry.target` returning `null`, it was overly aggressive and could leak internal, non-web-exposed targets (such as user-agent shadow roots or internal component implementations) that normal DOM event dispatch didn't expose on `event.target`.

Starting in Chrome 148, Event Timing queries `event.target` at the end of event dispatch. This aligns Event Timing with standard DOM Event Dispatch and Shadow DOM encapsulation rules, ensuring only web-exposed targets are reported to web developers.

As a consequence of this fix, `entry.target` may evaluate to `null` more often:
- When event dispatch is skipped or cancelled before reaching the target.
- When target elements are detached or removed from the DOM during event execution.
- When target elements reside behind closed shadow boundaries.

The implementation change can be seen in [crrev.com/c/7617568](https://chromium-review.googlesource.com/c/chromium/src/+/7617568).

---

## Experimental targetSelector resilience via EventPath

To provide developers with a reliable identifier for interaction targets even when `entry.target` is `null` (or when elements are removed during event handling), Chrome has been developing an experimental `targetSelector` property on `PerformanceEventTiming` ([w3c/event-timing#126](https://github.com/w3c/event-timing/issues/126)).

In Chrome 148, `targetSelector` was updated to construct its CSS query selector from the event's propagation path (`EventPath`) rather than relying on `target()`. Because `EventPath` is available even when `entry.target` is null, `targetSelector` can still provide a valid selector string representing the interaction's target.

*(Note: `targetSelector` remains an experimental feature under evaluation and is not yet enabled by default in stable.)*

### How does this affect a site's metrics?

- **No change to INP scores**: This change only affects target element reporting on `PerformanceEventTiming` entries; interaction durations and UKM/CrUX INP scores remain unchanged.
- **RUM attribution**: Real User Monitoring (RUM) and analytics scripts inspecting `entry.target` should anticipate receiving `null` more often for interactions where elements are removed or dynamically modified during event dispatch.

### When were users affected?

Chrome 148 reached stable users in March 2026.
