Tray

Privacy Policy

Tray for iOS and Android

Last updated 30 August 2026

Tray has no server. Nothing you do in it is sent to me, because there is nowhere for it to go. This page explains what that means in practice, and the few places where data does leave your phone — always to a service you chose and signed in to yourself.

The short version

What Tray stores on your device

WhatWhyHow long
Dining hall menus and nutrition labels from UConn So the app works in a basement with no signal About a month either side of today, then deleted automatically
Your journal — what you logged, when, and where So you can look back at your day Until you delete it, in the app
Your settings — chosen destination, theme, last hall So the app opens where you left it Until you delete the app
Sign-in tokens for MyFitnessPal or Cronometer So you are not asked to sign in every time Until you sign out, or delete the app

All of it is inside the app's own private storage, which no other app on the phone can read. Deleting Tray deletes all of it.

What leaves your device, and where it goes

UConn Dining Services

Tray reads the public nutrition website UConn publishes at nutritionanalysis.dds.uconn.edu. These are ordinary anonymous page requests for menus, the same ones your browser would make. No account is involved and nothing about you is sent.

MyFitnessPal — only if you connect it

You sign in to MyFitnessPal in a web view inside the app. Tray keeps the session token that produces, in the iOS Keychain. When you log food, Tray creates the food in your MyFitnessPal account and adds it to your diary. I never see any of it. Your MyFitnessPal password is typed into MyFitnessPal's own sign-in page and is never seen or stored by Tray.

Cronometer — only if you connect it

Cronometer has no browser sign-in for this, so the app asks for your email and password and sends them once, over HTTPS, to Cronometer's own API. The password is discarded the moment the reply comes back. Only the session key Cronometer returns is kept, in the iOS Keychain. Logged food goes to your Cronometer diary.

Apple Health — only if you choose it

When Apple Health is your destination, Tray writes a nutrition record for each food you log: energy, protein, carbohydrate, fat, and where the label carries them, saturated fat, cholesterol, sodium, fibre, sugar, calcium, iron, vitamin D and potassium. The item's name and the dining hall are attached so the entry is recognisable in the Health app.

Tray reads nothing from Apple Health. It asks for permission to write and for nothing else. Health data obtained through HealthKit is never used for advertising or marketing, never used for data mining, never sold, and never disclosed to anyone. It does not leave your phone except into Apple Health itself, which is Apple's storage on your device, not mine.

Nothing at all

If you leave the destination set to None, which is the default, food you log stays in Tray's own journal and no network request is made to log it.

Things Tray does not do

The app has exactly one third-party code dependency: SwiftSoup, an open-source HTML parser that runs entirely on your phone and makes no network requests of its own.

Donations

The About screen has a link to Buy Me a Coffee. Tapping it opens that site in your browser. If you choose to donate there, that transaction is between you and Buy Me a Coffee under their privacy policy — Tray sends them nothing and receives nothing back.

Children

Tray is not directed at children under 13 and collects no personal information from anyone, of any age.

Your control

Food already sent to MyFitnessPal, Cronometer or Apple Health lives in those services from that point on. Tray cannot reach back in and remove it — you delete it there, the same way you would any other entry.

Changes

If this policy changes, the date at the top changes with it and the previous versions stay in the page's history on GitHub, where anyone can read them.

Contact

Questions about any of this: Jeffiskofta@gmail.com