Privacy

Last updated

This is my personal site. It uses no cookies and no analytics tools. The only thing it shares is anonymous performance measurements of your device, taken by framebudget, a library I wrote. This page explains what gets measured, what gets sent, what stays in your browser, and how to turn sharing off.

What framebudget does here

Before the first frame reaches the screen, framebudget measures how much frame budget your device has to spare and turns on only the effects it can run without stuttering:

  • the signature and the ribbon that draw themselves as the site opens;
  • the light that runs along the ribbon now and then;
  • the seam between pages, with the ribbon drawn again out of the mark;
  • the lab carousel and the animated project previews;
  • the frosted notice on wide screens;
  • the parallax gallery in the Screenshot styles experiment.

On a slower device the site is all still there, just with less motion: the ribbon arrives ready, as an image, and pages change at once.

What gets sent

An anonymous report goes to https://framebudget.dev/api/report. It helps calibrate the library on real devices and contains:

  • the calibration version;
  • the benchmark scores (cold, warm, and effective);
  • the rate of each benchmark kernel;
  • the resolution of the browser clock;
  • hardware hints: CPU core count, device memory, and compute pressure;
  • whether you prefer reduced motion;
  • the tier picked for your device;
  • the effects allowed and the ones stepped down during the visit;
  • the median frames per second of each measured source.

Numbers are rounded before they are sent.

What does not get sent

The report carries no identifiers, no cookies, no URL, no user agent, and no timestamps. On its own it does not say who you are or which page you were reading.

When and how often

  • Only 10% of page views are sampled.
  • When one is, a single report (through navigator.sendBeacon) goes out after the page has loaded, at the moment it stops being visible.
  • Each browser sends at most one report every 7 days.

When nothing gets sent

No report leaves your browser when:

  • Global Privacy Control (GPC) is on;
  • Save-Data (data saver mode) is on;
  • a tier is forced or a device is simulated through the debug URLs.

What your browser sends on its own

As with any request on the web, your browser sends along your IP address, its user agent, and the Origin header. framebudget.dev keeps only coarse facts derived from them: browser engine and major version, operating system family, whether it is a phone or not, and the country code. It never stores the IP address or the user agent string. The details are in the framebudget.dev privacy policy.

Calibration updates

While sharing is on, at most once a day and after the page loads, the library fetches a calibration patch from https://framebudget.dev/api/calibration, without sending credentials.

What stays on your device

Nothing here uses cookies. The site keeps a few things in your own browser, and they never leave it:

  • framebudget (localStorage): what the library learned about your device, like the cached score, the effects that stuttered, and the date of the last report.
  • framebudget-share (localStorage): only exists if you turn sharing off.
  • terms-notice-v1 (localStorage): remembers that you closed the notice about the terms and privacy.
  • sound (localStorage): only exists if you turn the interface sounds off.
  • seen-splash-v1 (sessionStorage): remembers whether the intro already played this session.
  • vt-names (sessionStorage): during a page change, the names of the elements that carry over from one page to the next; deleted as soon as the new page opens.

How to turn sharing off

The button below turns reports on and off for this browser. The choice applies right away and is kept in framebudget-share. Effects keep adapting to your device just the same.

Contact

Questions about the data: alysson@aly.engineer.