demo · v130
Ink Latency Probe
Chrome 130 removes DelegatedInkTrailPresenter.expectedImprovement because it's fingerprinting entropy with no real developer value — "all improvement is good improvement." This demo draws ink on a canvas using real pointer events, measures actual latency with PerformanceObserver({type:"event"}), and shows why you should just use the Delegated Ink API unconditionally rather than reading the removed property.
Checking DelegatedInkTrailPresenter API…
Draw here — touch/mouse/stylus all work
0
Pointer events
—
Median latency (ms)
—
p95 latency (ms)
—
Delegated ink active
Latency distribution (last 60 events, green <16ms, amber <32ms, red ≥32ms):
expectedImprovement removed in Chrome 130
presenter.expectedImprovement — removed (fingerprinting vector, no real value)
Replacement pattern (Chrome 130+):
Don't check expectedImprovement. Just call
The OS-compositor wet-ink path always runs when available.
Replacement pattern (Chrome 130+):
Don't check expectedImprovement. Just call
requestPresenter().The OS-compositor wet-ink path always runs when available.
PerformanceObserver({type:"event"}) gives real latency data.
Draw on the canvas to see latency measurements.
// Chrome 130: don't read expectedImprovement — just use the API
const presenter = await navigator.ink.requestPresenter({ presentationArea: canvas });
canvas.addEventListener('pointermove', e => {
const style = new InkTrailStyle();
style.color = '#1a1a1a';
style.diameter = 3;
// Delegate wet-ink rendering to the OS compositor
presenter.updateInkTrailStartPoint(e, style);
// Measure actual latency instead
// (PerformanceObserver type:"event" gives this for free)
});
// DON'T do this (removed in Chrome 130):
// if (presenter.expectedImprovement > 10) { ... }