Pivot, recorded and compared.

Microsoft’s Pivot control was recorded, measured, and compared with the Flutter implementation. The results show a closer match—not an indistinguishable renderer.

Reference
WP8.1 emulator
OS build
8.10.12358.0
Evidence
57 native trials
Hardware
Lumia pending

Native is on the left; Flutter is on the right. Each MP4 already contains both panels on the same recorded input timeline, so one play action starts both views. Flutter frames come from the widget tree, not a redrawn native video.

Tap the next headerDownload MP4
Drag and commitDownload MP4
Wrap to the previous pageDownload MP4

The videos are encoded at 30 fps. Missing native capture time is represented by holding the last captured frame; frames are not interpolated or stretched to force agreement.

Observed behaviorFlutter change
Headers use native spacing and cyclic order.WpPivotView lays out headers from measured widths and reference coordinates.
A drag moves the current page without continuously exposing its neighbor.Header and body travel are controlled separately instead of by a stock PageView.
Selection commits on release with distinct outgoing and incoming phases.The transition moves the old page out before bringing the selected page in.
A skipped header rearranges before sliding into place.The selected header becomes the anchor before a one-slot transition.
The threshold-crossing sample is consumed before body travel.Gesture tracking follows the delivered-sample sequence found in the logs and images.

The original WpPivot header-only API remains available. The full view is an explicit migration and preserves page state, controller selection, keyboard navigation, and reduced motion.

Three pilot inputs compare the retained 2.0 baseline with the revised candidate. Position MAE is mean absolute error in the 480 × 800 reference image.

PilotMoving-page MAEDifferent visible pages
Header tap313.0 → 32.2 px22 → 0 of 28
Committed drag158.6 → 4.7 px23 → 1 of 46
Previous wrap305.3 → 16.1 px27 → 0 of 36
Native observed header positions and Flutter replay positions over time
Header transition positionsNative observation and Flutter replay

Supported

  • Original PNGs and image tracking support layout and coarse-motion comparison.
  • The candidate matches the selection sequence in 21 fresh trials and 21 earlier core trials.
  • Nine later header and title gesture trials bring the archive to 57 native trials and 3,830 PNGs.

Not proven

  • Emulator evidence does not validate Lumia hardware behavior.
  • Capture timing does not establish display latency or a universal flick threshold.
  • Font and rasterizer differences remain visible.

The release web build replayed four scenarios with one warm-up and three measured repetitions. All 12 measured trials selected the expected page.

Engine measurementMedian95th percentileMaximum
Build work3.00ms5.20ms11.60ms
Raster work / submission0.40ms0.80ms24.00ms
Total frame span3.70ms6.10ms28.70ms
Post-selection frame interval16.60ms17.30ms29.30ms
Measured release web frame work including one frame over the chosen budget
Release-web frame work678 measured engine frames

These numbers support smooth animation on the measured host. They do not measure physical display presentation, native browser touch input, Windows Flutter, mobile performance, or Lumia hardware.

Header gestures and runtime release Original Pivot evidence release Protocol, tools, and reproduction commands

The archives include original frames, input traces, manifests, comparisons, metrics, source snapshots, and SHA-256 inventories. Unsuccessful trials and superseded prototypes remain labeled and available.

Wider gesture sampling, mobile runtime measurement, and a separately labeled Lumia cross-check remain open work.