easeprint.

The convention

The claim, from Bryce's motion notes of 2026-09-01: four teams landed independently on an aggressive ease-out at a long duration for statement moves, with a fast plain tier underneath. Here it is as three tests, run against every site measured on 2026-10-17.

The tests

  1. 1

    Aggressive ease-out. The statement covers at least 60% of its distance in the first 25% of its time.

  2. 2

    Long. The statement runs 700ms or more.

  3. 3

    A fast tier underneath. Some other tier on the site, not ambient, takes 300ms or less.

Five of twenty pass all three

Raycast, Cuberto, Bryce Rambach, Family and Stripe. Near misses, passing two of three: Motion, Obys Agency, Resend, Linear and Vaul. 7 sites have no statement move measured at all.

The tests show the shape is shared. Whether the teams got there independently isn't something a browser can measure. Cuberto and Obys use the identical curve, cubic-bezier(0.16, 1, 0.3, 1); Raycast and Stripe both use the usual quart-out, cubic-bezier(0.165, 0.84, 0.44, 1).

The four the notes named

From notes, 2026-09-01, beside this measurement.

  • Cubertopasses all three live

    notes: cubic-bezier(0.16, 1, 0.3, 1) 1.2s. On 30 elements, and 0.8s on 20 more. Always on transform alone. Live on 2026-10-17: the same curve at 1.2s and 0.8s.

  • Familypasses all three live

    notes: cubic-bezier(0.19, 1, 0.22, 1) 1s. On 56 elements. Live on 2026-10-17: the same, on 56 elements.

  • Obys Agencypasses 1 and 2 live

    notes: cubic-bezier(0.16, 1, 0.3, 1) 1.6s. Listed as one of the four teams at 0.8s and 1.6s. Live on 2026-10-17: 1.6s on the work images and 0.8s on 42 elements at rest. But no tier at 300ms or under was seen, so the live page fails the "fast tier underneath" half of the convention.

  • Raycastpasses all three live

    notes: cubic-bezier(0.23, 1, 0.32, 1) 0.4s. On 81 elements, the long tier of 90 at 0.4s and above. Live on 2026-10-17: the same curve at 0.4s on the keyboard keys. The live statement here is the 2s quart-out on the API diagrams, which the note didn't list.

Every statement curve, one scale

  • passes all three (5)
  • doesn't (8)
Statement curves for 13 sites. The table below lists every value.25% of time60% of distanceMotion: linear() spring, 1750ms, 57% at 25%Obys Agency: cubic-bezier(0.16, 1, 0.3, 1), 1.6s, 83% at 25%Resend: ease-in-out, 1.5s, 13% at 25%Linear: cubic-bezier(0.25, 0.1, 0.25, 1), 1000ms, 41% at 25%Attio: cubic-bezier(0, 0, 0.58, 1), 600ms, 38% at 25%Paco Coursey: ease, 0.6s, 41% at 25%Vaul: cubic-bezier(0.32, 0.72, 0, 1), 0.5s, 78% at 25%Sonner: ease, 0.4s, 41% at 25%Raycast: cubic-bezier(0.165, 0.84, 0.44, 1), 2s, 70% at 25%Cuberto: cubic-bezier(0.16, 1, 0.3, 1), 1.2s, 83% at 25%Bryce Rambach: cubic-bezier(0.2, 0.7, 0.1, 1), 1.15s, 78% at 25%Family: cubic-bezier(0.19, 1, 0.22, 1), 1s, 84% at 25%Stripe: cubic-bezier(0.165, 0.84, 0.44, 1), 0.8s, 70% at 25%timeprogress
A curve that passes test 1 crosses the dashed vertical line above the dashed horizontal one. Hover a line for its site.

Statement against the fastest tier

  • fastest tier
  • statement
  • passes all three
For each site with a statement, its fastest tier and its statement duration in milliseconds. Thresholds at 300ms and 700ms.0250ms500ms1s1.5s2sfast, 300mslong, 700msRaycast: statement 2s (cubic-bezier(0.165, 0.84, 0.44, 1)), fastest 100ms (icon stack swap, leaving (WAAPI))RaycastCuberto: statement 1.2s (cubic-bezier(0.16, 1, 0.3, 1)), fastest 0.3s (cursor dot resizing over targets)CubertoBryce Rambach: statement 1.15s (cubic-bezier(0.2, 0.7, 0.1, 1)), fastest 0.3s (external link arrow colour)Bryce RambachFamily: statement 1s (cubic-bezier(0.19, 1, 0.22, 1)), fastest 0.1s (icon fill on hover)FamilyStripe: statement 0.8s (cubic-bezier(0.165, 0.84, 0.44, 1)), fastest 0.15s (globe arc labels)StripeMotion: statement 1750ms (linear() spring), fastest 0.16s (play button scale on hover)MotionObys Agency: statement 1.6s (cubic-bezier(0.16, 1, 0.3, 1)), no tier at 300ms or underObys AgencyResend: statement 1.5s (ease-in-out), fastest 0.2s (inline badge border colour)ResendLinear: statement 1000ms (cubic-bezier(0.25, 0.1, 0.25, 1)), fastest 0.16s (customer card hover filter)LinearAttio: statement 600ms (cubic-bezier(0, 0, 0.58, 1)), fastest 0.15s (menu sliding in)AttioPaco Coursey: statement 0.6s (ease), fastest 0.24s (link underline colour)Paco CourseyVaul: statement 0.5s (cubic-bezier(0.32, 0.72, 0, 1)), fastest 0.15s (link colour)VaulSonner: statement 0.4s (ease), fastest 0.2s (code block copy button appearing)Sonner
Dashed lines at 300ms (test 3) and 700ms (test 2). Durations over 2s would be clipped; none are.

Every site

SiteStatementDurationAt 25% of timeFastest tierPasses
Raycastcubic-bezier(0.165, 0.84, 0.44, 1)2s70%100ms exitall three
Cubertocubic-bezier(0.16, 1, 0.3, 1)1.2s83%0.3s utilityall three
Bryce Rambachcubic-bezier(0.2, 0.7, 0.1, 1)1.15s78%0.3s utilityall three
Familycubic-bezier(0.19, 1, 0.22, 1)1s84%0.1s utilityall three
Stripecubic-bezier(0.165, 0.84, 0.44, 1)0.8s70%0.15s utilityall three
Motionlinear() spring1750ms57%0.16s utility2, 3
Obys Agencycubic-bezier(0.16, 1, 0.3, 1)1.6s83%none at 300ms or under1, 2
Resendease-in-out1.5s13%0.2s utility2, 3
Linearcubic-bezier(0.25, 0.1, 0.25, 1)1000ms41%0.16s utility2, 3
Attiocubic-bezier(0, 0, 0.58, 1)600ms38%0.15s utility3
Paco Courseyease0.6s41%0.24s utility3
Vaulcubic-bezier(0.32, 0.72, 0, 1)0.5s78%0.15s utility1, 3
Sonnerease0.4s41%0.2s utility3
Arcno statement tier––0.15s signature3
basement.studiono statement tier––0.06s utility3
darkroom.engineeringno statement tier––0.15s utility3
Emil Kowalskino statement tier––50ms utility3
Locomotiveno statement tier––0.2s utility3
Rauno Freibergno statement tier––0.2s utility3
Vercelno statement tier––0.1s exit3

Statement means the tier marked statement on each entry: the longest, most prominent single move measured. Cuberto's fastest tier is exactly 300ms, on the line. Thresholds are a reading of "aggressive", "long" and "fast"; move them and the count moves, which the table makes easy to check.