Skip to content
HAv5.0
Patterns

Permissions

How to ask for access people are glad to give, and how to make the screen match who’s actually signed in. Drawn from Trainest’s Apple Health connection and Spotta’s bookmarks.

The rule

Say what access unlocks before you ask for it. Then show each person only what’s true for them, right now.

Asking for access

From Trainest
Trainest Smart Connect: a Reach Your Goals Faster screen, then Apple’s Health access sheet, then Connecting to Trainest
  1. The reasonReach Your Goals FasterThree benefits: real progress, smarter recommendations, motivation. One button, and Skip in the corner.
  2. The askApple’s Health sheetThe system prompt comes second, once people already know why it’s there.
  3. The payoffConnecting to TrainestSetting up the wearable starts straight away, so the yes pays off at once.

Connecting Apple Health unlocks actual calories burned, heart rate and workout intensity. So it’s framed as “Reach Your Goals Faster”, not as a permissions request. Benefit first, not ask first.

Try it

From Spotta. Sign out and watch the bookmark
Street pageSigned in
Deji Olamiju StreetReviews from people who live here.

Bookmark it while signed in, then sign out.

Session
Session check before rendering
Session
Active
Bookmark shown
Yes
Should show
Yes

Matches the session.

People logged out and their streets still showed as bookmarked, because nothing checked for a session before rendering. The fix was a session check that resets the bookmark on logout. UI state isn’t just checked or unchecked. It depends on session, sign-in and what’s saved.

Where it shows up

WhatProductNeedsHow it’s handled
Apple Health dataTrainestThe client’s consentA reason screen first, then Apple’s sheet. Skip is one tap away.
BookmarksSpottaAn active sessionChecked before rendering, reset on logout
Client conversationsTrainestA trainer on the teamFull history, so any trainer has context
Client ownershipTrainestOne assigned trainerAn assignment badge in the client pipeline
Reviews and street dataSpottaRules in the databaseSupabase Row Level Security policies

Rules

Do
  • Say what access unlocks before the system asks.
  • Put Skip on the same screen as the ask.
  • Check the session before rendering anything personal.
  • Enforce access in the database, not just the interface.
Don’t
  • Open with the system sheet and hope for a yes.
  • Let personal state outlive the session.
  • Hide a button and call it a permission.