03 · Native

On a device,
in a hand

A world in a browser tab is a sketch. The same world on a phone, on a battery, at sixty frames, is the test. We run that test early and often.

Live budget

  • Target60fps
  • Frame16.6ms
  • Measured60fps
  • Pixel ratio2x

The screen on the left is the same raymarched world as the index page, scaled to a phone viewport with a reduced step count. The numbers are read from this browser right now.

What we are learning

The device changes the design.

  1. N.01

    Thermal is the real frame rate

    A scene that holds sixty frames for ten seconds and forty after two minutes is a forty frame scene. We measure after the phone is warm.

  2. N.02

    Thumbs are not cursors

    Hover does not exist. Precision is lower. Half the screen is covered by the hand using it. Interaction built for a desk has to be rethought, not shrunk.

  3. N.03

    Metal when it earns it

    The rule: a world ships as WebGL inside a native shell until it proves it cannot, and only then is it rewritten in Metal. SwiftUI holds the interface around it.

  4. N.04

    Ship to TestFlight before it is pretty

    A rough build on a real device teaches more than a polished build in a simulator. We put it on a phone in the first week.

Next

Studio