# Fitbit Android App — Feature Documentation

**App:** Fitbit (`com.fitbit.FitbitMobile`)  
**Total Business Code Files:** 47,223  
**Activities:** 153

---

## 1. Core Features

The Fitbit Android app is a comprehensive health, fitness, and wellness platform that serves as the primary companion app for Fitbit wearable devices (trackers and smartwatches). Its core purpose is to:

- Sync, display, and analyze health data collected by Fitbit wearables via Bluetooth Low Energy (BLE)
- Provide a social fitness community with friends, groups, leaderboards, and challenges
- Enable contactless payments from supported Fitbit devices (Fitbit Pay)
- Deliver Fitbit Premium coaching, guided programs, and wellness content
- Serve as an onboarding and configuration hub for all Fitbit devices
- Integrate with Google Health Connect, Wear OS, Amazon Alexa, and Google Assistant

---

## 2. Feature Categories

### 2.1 Activity & Fitness Tracking

- **Steps** — Daily step count tracking, intraday 15-minute granularity via `StepsNetworkService`
- **Active Minutes** — Tracks lightly active, fairly active, and very active minutes; AHA recommendation of 150 min/week moderate or 75 min/week vigorous displayed to users
- **Active Zone Minutes (AZM)** — Heart-rate-zone-based activity metric; earns Zone Minutes per day; displayed as "Active Zone Minutes" in the UI; tracked at 15-minute intervals
- **Calories Burned** — Active and total calories burned; intraday 15-min granularity
- **Distance** — Distance tracking in km or miles; intraday granularity
- **Floors Climbed** — Floors climbed per day and intraday
- **Hourly Activity / Sedentary Time (SED)** — Tracks sedentary periods; users can set hourly step goal (250 steps/hour); reminder notifications sent before the hour
- **Auto-Track Activities** — `AutoTrackActivitiesNetworkService`; automatically recognizes exercise types; setting labeled "Auto-track activities" with "Automatic" or "Set manually" options
- **Exercise Logging** — Manual exercise logging, recent/frequent activity lists, exercise calendar, activity search; supports TCX file export (`TcxNetworkService`)
- **Exercise Goals** — Weekly exercise frequency goals; "Personalized workouts" settings for Running, Fitness, or Running and fitness personas
- **Stride Length** — Configurable stride length setting

### 2.2 Heart Rate & Cardiovascular Health

- **Heart Rate Monitoring** — Continuous heart rate tracking; intraday time-series data
- **Heart Rate Zones** — Three zones: Moderate (brisk walk, HIIT), Vigorous (running, cycling), Peak (sprinting); default zones set as % of max heart rate; custom zones configurable
- **Resting Heart Rate** — Estimated during sleep and inactivity; typical adult range 60–100 bpm displayed; factors listed include fitness level, hydration, medications, caffeine, environmental temperature, menstrual cycle
- **Cardio Fitness Score (VO2 Max)** — Estimated from resting HR, age, sex, height, weight, and running efficiency; requires at least one GPS-tracked run; updated after every run; displayed with educational FAQ; links to Fitbit Help article
- **Heart Rate Notifications (Bat Signal)** — Configurable high/low heart rate alerts while inactive; managed via `HeartRateNotificationNetworkService` (`v3/bat-signal/alerts`, `v3/bat-signal/profile`)
- **Heart Rate Variability (HRV)** — Daily summaries with dynamic personal ranges via `HeartRateVariabilityNetworkService`
- **About Your Heart** screen — Educational content on heart health, blood pressure, cholesterol, blood sugar

### 2.3 Sleep Tracking

- **Sleep Logging** — Full sleep log with sleep stages; manual log creation/editing/deletion; processing sleeps included via `SleepLogNetworkService` (`1.2/user/-/sleep.json`)
- **Sleep Score** — Scored via `v3/sleep/score/date`
- **Sleep Goal** — Configurable sleep duration goal; bedtime reminder settings
- **Bedtime Reminders** — Push notifications with rotating message phrases: "Time to start winding down for bed," "It's time to rest and recharge," etc.
- **Sleep Settings** — `Hilt_SleepSettingsActivity`; manages sleep goal, bedtime reminders, and smart sleep features
- **Sleep Profile (Sleep Bio)** — Sleep chronotype/profile via `SleepProfileNetworkService` (`sleep-bio/type/latest`, `sleep-bio/type/list/{startDate}/{endDate}`)
- **Sleep Demographics** — Demographic-filtered sleep data (`1/user/-/demographics.json?filter=sleepStages`)
- **Snore & Noise Detection (Soundscape)** — Watch analyzes room noise during sleep; snoring and ambient noise detection; auto-recording toggle; per-sleep-log details; described in "About your snore & noise report" UI string; onboarding via `SleepOnboardingBaseActivity`
- **Estimated Oxygen Variation** — Sleep disordered breathing features via `SLEEP_DISORDERED_BREATHING_FEATURES` timeseries endpoint

### 2.4 Health Metrics & Vitals

- **Blood Oxygen (SpO2)** — Daily summaries with dynamic personal ranges via `BloodOxygenNetworkService`
- **Breathing Rate (Respiratory Rate)** — Daily summaries with dynamic personal ranges via `BreathingRateNetworkService`
- **Skin Temperature** — Intraday skin temperature; timeline view; manual temperature logging and deletion; onboarding via `TempSkinScreenOnboardingActivity` and `TempWearDeviceOnboardingActivity`; consent flow via `TemperatureConsentActivity`; "About body temperature" educational content shown to users
- **Body Temperature (External Thermometer)** — Receive temperature readings from external thermometer via `Hilt_BodyTemperatureReceivingActivity`; sync to Health Connect
- **Stress Score** — Daily and history views; delete capability via `StressScoreNetworkService` (`wellness/stress-score`)
- **Stress Body Responses** — `StressBodyResponsesNetworkService`; `user/-/stress-journal/bodyResponses`
- **AFib Detection (PPG)** — State, show tile, show settings endpoints; enrollment status; `AfibPPGService`; displayed in health assessments
- **ECG (AFib ECG)** — Enrollment status via `HealthAssessmentsService`; `Hilt_HealthAssessmentsActivity`
- **Enhanced Readiness** — Readiness backfill via `v3/readiness/backfill`
- **Heart Event Survey** — Survey for heart-related health events via `HeartEventSurveyActivity`; CRUD operations on surveys via `HeartSurveyApi`

### 2.5 Nutrition & Food Logging

- **Food Logging** — Log meals by date; recent, frequent, and favorite food lists; food search; custom food creation; food database via `FoodNetworkApi` and `FoodNetworkService`
- **Calorie Goal** — Set and track daily calorie intake goal
- **Meals** — Saved meal sets (`/1.1/user/-/meals.json`)
- **Food Locales** — Multi-locale food database support
- **Food Units** — Configurable measurement units

### 2.6 Water Logging

- **Water Intake Logging** — Log water entries; edit and delete; daily summary by date; water goal setting; displayed in accessible labels as "milliliters per day" or "fl oz per day"

### 2.7 Weight & Body Composition

- **Weight Logging** — Log weight entries; list by date range; delete entries; Aria smart scale setup link (`https://www.fitbit.com/scale/setup/start`)
- **Weight Goal** — Set goal weight; motivational completion messages: "Goal get 'em!," "Pound it!," "Boom! All set!"
- **Body Fat Goal** — Set body fat percentage goal
- **Aria Scale Integration** — Scale device management, user removal from scale; promotional links to Aria 2

### 2.8 Menstrual Health & Cycle Tracking

- **Menstrual Health Tracking** — Period logging, user settings, onboarding via `MenstrualHealthNetworkService` (`/1/user/-/minerva/menstrualHealth/`)
- **Cycle Symptom Logging** — Log symptoms by date range via `MenstrualCycleDetailsNetworkService`
- **"About menstrual health tracking"** — Educational content shown to users

### 2.9 Blood Glucose Tracking

- **Glucose Logging** — Manual log entry; daily detail view (`GlucoseDayDetailActivity`); history chart (`GlucoseHistoryChartActivity`); read-only views for shared/caregiver access
- **Glucose Settings** — Units (mg/dL or mmol/L per accessible labels), target ranges, annotations
- **Glucose Reminders** — Create, edit, delete reminders; `EditReminderActivity`
- **Glucose Onboarding** — Full onboarding flow via `GlucoseOnboardingActivity`
- **Glucose Privacy Center** — Dedicated privacy launcher `Hilt_GlucosePrivacyCenterLauncherActivity`
- **Third-Party CGM Integrations** — Connect/disconnect external glucose monitoring services; list of partner services; per-service UI configuration via `GlucoseIntegrationsNetworkService` (`health/metrics/internal/thirdparty/partner/`)
- **Glucose Activity Stats** — Correlates glucose data with food logs and daily activity stats
- **Glucose Survey** — In-app survey via `health/metrics/glucose/survey.json`

### 2.10 Mindfulness & Mental Wellness

- **Mindfulness Sessions** — Log, view, and delete guided or manual mindfulness sessions via `MindfulnessSessionsNetworkService`
- **Mindfulness Goals** — Set daily mindfulness goal; retrieve by date
- **Mood Logging** — Log mood entries (journal category MOOD); edit and delete; tied to mindfulness sessions; `MoodLogNetworkService`
- **Stress Journal** — User settings and body response tracking for stress management
- **Journal Entries** — General journal API (`user/-/journal/entries`) underpinning mood and other wellness logs

### 2.11 Fitbit Pay (Contactless Payments)

Supported card networks via `com.fitbit.coin.kit`:

- **Visa** — Full provisioning, token management, OTP verification, suspend/resume/delete token, transaction history, JWE validation; `VisaApi`
- **Mastercard (MC)** — Digitize, eligibility check, TCC support, SE provisioning, suspend/resume/delete, transaction history; `McApi`
- **American Express (Amex)** — Provision, OTP, session management, suspend/resume/delete, transaction history, TOS acceptance; `AmexApi`
- **Mifare** — Enroll, download service, initiate service, notify provisioning, widget retrieval, token management; `MifareApi` (Japan/transit focus)
- **Felica (Suica)** — Full NFC Felica card lifecycle: issue, access, delete, permanent delete, recover, operate, suspend, resume, initialize chip, export transaction history, update user info; `FelicaApi`; Suica-specific: `SuicaTransactionHistoryActivity`, `TopUpCardActivity`, `UpdateUserInfoActivity`; bank list APIs for Japanese banks
- **Card Verification** — `CardVerificationActivity`; fingerprint/keyguard authentication via `KeyGuardHelperActivity`
- **PIN Management** — Set PIN for wallet security; `SetPinActivity`, `SetPinPromptActivity`; lock screen via `LockActivity`
- **Google Pay Migration** — Migrate wallet to Google Wallet via `GPayMigrationActivity`; `v3/wallet/{wire_id}/migrate_to_google_wallet`
- **Provisioning Progress States** — Contacting, Downloading, Inserting, Preparing, Verifying, Finished states displayed with progress %
- **Supported Devices** — Versa, Ionic, Charge 3, Charge 4, Charge 5, Mira, Versa 2, Atlas, Vulcan, Versa 3, Sense, Morgan (internal codenames mapped in `PaymentDeviceId.h()`)
- **Refund Application** — `RefundApplicationActivity`

### 2.12 Social & Community

- **Friends** — Send/accept/decline friend invitations; friends see display name, profile photo, about me, join date, and step count (per privacy settings); leaderboard with Cheer and Taunt actions
- **Leaderboard** — Friends leaderboard and group leaderboard; "Cheer" and "Taunt" actions per user; `CheerTauntService`
- **Community Feed** — Home feed ("Feed" tab), post creation, photo sharing, cheering posts, comments, mentions, URL link previews; `FeedApi`
- **Groups** — Create, join, leave, invite to, and administer groups; group feed, group member lists, friend-in-group lists, admin management; group recommendations; "In a group" abuse reporting location; tabs: Feed, Friends, Groups
- **Private Messages** — Conversation view, message list, send messages, delete conversations/messages, mark as read; predefined quick replies: "Yes," "No," "Sounds good!," "Can't talk now, will reply later," "What's up?"; `MessagesService`
- **Inbox / Notification Center** — In-app notification inbox; mark read/unread, delete notifications; up to 100 timeline results loaded; `Hilt_InboxActivity`
- **Content Moderation / Reporting** — Report posts, comments, groups, private messages, and profiles; multi-location selection: "In a Challenge or Adventure," "Outside the Fitbit app," "In a group," "From a private message," "From a post or comment," "On their profile"; `ModerationReportActivity`
- **Challenges & Adventures** — Referenced in abuse reporting; part of community feature set
- **Badges** — Awarded badges, generic badges, and top badges per user via `BadgesNetworkService`
- **Profile Feed** — Per-user activity feed via `ProfileFeedActivity`

### 2.13 Fitbit Premium

- **Premium Membership** — "Get Fitbit Premium" upsell; membership benefits screen ("Membership benefits"); eligibility check via `1/user/-/fitbit-home/eligibility.json`
- **Subscription Management** — View current subscriptions via `/v3/premium/subscriptions`; upsell content via `/v3/premium/upsell`; explore benefits via `/v3/premium/explore`
- **Health Programs / Memberships** — Enroll, view, complete, and cancel health programs (HP); completed memberships history; expired subscription handling; `ProgramsApi`
- **Coach Content** — Personalized coaching collections, components, and topics via `CoachCollectionsRemoteService`, `CoachComponentsRemoteService`, `CoachTopicsRemoteService`
- **Coach Items (Favorites)** — Add/remove favorites for coaching items; item detail views
- **Wellness Report** — Generate, confirm, and download wellness reports; onboarding; `WellnessReportApi`
- **Premium Scores & Assessments** — Setting labeled "Premium scores and assessments" (GDPR consent-gated)
- **Untethered Safety Flow** — `Hilt_UntetheredSafetyFlowActivity` for Premium safety-related flows

### 2.14 Device Management & Onboarding

- **Device Pairing / Onboarding** — Full onboarding flow for trackers and Wear OS watches; `OnboardingActivity` for Wear OS (`Hilt_OnboardingActivity`); Fast Pair landing via `Hilt_FastPairLandingActivity`; tutorial via `TutorialActivity`
- **Tracker Details** — `TrackerDetailsActivity`; device image, battery level (Empty/Low/Medium/Full), firmware update banner, sync panel, settings grid, developer panel, music control section, device guide
- **Force Sync** — Manual sync trigger from Tracker Details screen; "Syncing…" status shown
- **Firmware Updates** — `FirmwareUpdateActivity`; Bluetooth and Wi-Fi (single and multi-AP) update modes; progress tracking; Bluetooth-off cancellation with "Bluetooth is required to update your device" toast; early Wi-Fi scanning option
- **Device Alarms** — Create, update, delete, and list alarms on tracker via `DeviceAlarmNetworkService`
- **Device Features (Capability Flags)** — `DeviceFeature` enum: ACTIVE_MINUTES, ACTIVE_ZONE_MINUTES, ALARMS, BAT_SIGNAL, BIKE_ONBOARDING, BLE_MUSIC_CONTROL, CONNECTED_GPS, CALORIES, DISTANCE, ELEVATION, GPS, HEART_RATE, SMART_SLEEP, INACTIVITY_ALERTS, SEDENTARY_TIME, BEDTIME_REMINDER, SWIM, MOBILE_DATA, PAYMENTS, FELICA, AUTORUN, GALLERY, APP_SYNC, SPO2, EDA, SOUNDSCAPE, SKIN_TEMPERATURE, LOCATION_HINT, MOBILE_TO_DEVICE_DEEPLINK, GOOGLE_MAPS, ASPEN_SUPPORTED, TIME_SERVICE, YOUTUBE_MUSIC_SUPPORTED, DOMAIN_KEY_SYNC
- **Wi-Fi Management** — `WifiManagementActivity`; configure SSIDs for Wi-Fi sync/OTA updates; single and multi-AP support
- **Device Unpair (Rebond)** — Confirmation dialog with "Remove Device" button; `label_rebond` and `device_settings_remove_button` UI strings
- **Mobile Track** — Phone-as-tracker registration and sync; `MobileTrackNetworkService`
- **Sideloaded App Management** — Developer: sideload companion apps; `LinkSideloadActivity`, `TrackerDeveloperActivity`, `CompanionLogsActivity`
- **App Gallery** — Install/uninstall apps on device; app install status, failure reporting; tile management; `AppInstallService`, `TilesService`
- **Device Bundle Service** — Fetch companion app content bundles from CDN
- **Firmware Check** — `POST devices/firmware/update/-/checkfwup.json`; device key management via `BowieApi`
- **Connected Devices** — `ConnectedDevicesActivity`; shows all devices signed in to account; revoke access per device

### 2.15 Family Accounts (Fitbit for Kids / Pluto)

- **Family Account Setup** — Create family, add child members; `FamilyAccountOnboardingActivity`, `FitbitForChildrenOnboardingActivity`
- **Child Account Creation** — COPPA-compliant onboarding; `CoppaOnboardingActivity`, `AboutTheKidActivity`, `ChildAccountCreatedActivity`
- **Child Profile** — Avatar selection (child-specific sizes), cover photo selection; `PlutoService`
- **Child Tracker Setup** — `SetupKidTrackerActivity`; Fitbit Ace described as "Kids activity tracker"
- **Family Invitations** — Send, accept, reject invitations; inbox and outbox management
- **Parental Approvals** — Approval workflows for child account actions; `PlutoService` approval endpoints
- **Family Settings** — `GET /1/family-settings/settings`
- **Account Graduation** — Child graduates to adult account; `Hilt_GraduationControllerActivity`; `PUT 1/user/-/fitbit-home/graduate.json`; consent upgrade flow
- **Account Upgrade** — Profile upgrade, email upgrade, consent upgrade, validation; impersonation/delegation for child account management
- **Token Revocation** — Revoke family member access tokens; `POST /1/family-accounts/family/{familyId}/member/{memberId}/revoke`

### 2.16 Voice Assistants

- **Amazon Alexa** — `AlexaOnboardingActivity`; example utterances: "Set a timer for 20 minutes," "Set an alarm for 6:00 a.m.," "Is it going to rain today?," "How much protein is in an egg?," "Remind me to go for a jog at 1:00 p.m."
- **Google Assistant** — `GoogleAssistantOnboardingActivity`; OAuth account linking via `AccountLinkingActivity`; device key retrieval via `GET device/{wireId}/keys/google-assistant.json`
- **Assistant Selector** — `AssistantSelectorActivity`; choose between Alexa and Google Assistant

### 2.17 Music Control

- **Music Player** — `MediaPlayerActivity`; device music control (BLE_MUSIC_CONTROL feature); playlist management; track count, revision CRC, manifest URL communicated to device via `ProtobufCommonKeys`
- **YouTube Music Integration** — Deep link to YouTube Music Premium via `https://music.youtube.com/attribution_link?utm_campaign=ytmfit`; Google Play store link for YouTube Music app; YOUTUBE_MUSIC_SUPPORTED device feature flag
- **Media Player Settings** — `MediaPlayerSettingsActivity` (developer settings)

### 2.18 Maps & Location

- **Maps Onboarding** — `Hilt_MapsOnboardingActivity`; GOOGLE_MAPS device feature
- **Maps Test Page** — `MapsTestPage` in settings (developer)
- **Connected GPS** — CONNECTED_GPS device feature for outdoor workouts
- **Location Permissions** — `LocationPermissionActivity`; checks: Location Services enabled, location permission, background location permission; "Tap to fix" guidance; bottom sheet with "Go to Settings" option; "Allowed," "Enabled" status indicators
- **Weather** — `WeatherService`; `GET /1/weather/search.json`; used by JS scheduler bridge for watch face/app data

### 2.19 Google Health Connect Integration

- **Health Connect Onboarding** — `Hilt_HealthConnectOnboardingActivity`
- **Health Connect Settings** — `Hilt_HealthConnectSettingsActivity`; sync toggle; "Sync with Health Connect" and "Sync in progress" accessibility labels
- **Data Written to Health Connect** — Activity logs, sleep data, HRV, weight, time-series health data, skin temperature
- **Permissions Rationale** — `PermissionsRationaleActivity` explaining Health Connect data access
- **Changelog Sync** — Incremental data sync via `changelog/changelog`

### 2.20 Wear OS Integration

- **Wear OS Onboarding** — `Hilt_OnboardingActivity`; receives `wearPairInfo` bundle with node ID, obfuscated Gaia ID, callback URI, device type, UUID
- **Wear OS Capabilities** — Declares `fitbitmobile`, `auth:1.1`, `auth:1.2` capabilities
- **DMA (Data Migration Assistant) Landing** — `Hilt_DmaLandingActivity`; deep link for Wear OS data migration

### 2.21 Discover / Explore Content

- **Fitbit Explore** — Bundles, carousels, featured content, product pages; `DiscoverNetworkController`
- **Favorites** — Add/remove content items from favorites
- **Component Interaction Tracking** — `POST 1/user/-/fitbit-explore/component/{componentId}/interaction.json`
- **Carousel Items** — `CarouselItemsActivity`; full carousel browsing
- **Product Pages** — `ProductPageActivity`; in-app product/content detail view

### 2.22 Today / Home Screen (Fitbit Home Tiles)

- **Customizable Tiles** — Drag-and-drop tile ordering; preset tile layouts; custom tile sets; `TilesNetworkService` (`1/user/-/fitbit-home/tiles`, `1/user/-/fitbit-home/presets`)
- **Home Fragment** — `HOME_FRAGMENT_TAG`; main dashboard; tab navigation with `ARG_DEFAULT_TAB`
- **Health Metrics Capability** — `hmd/user/-/metricMetadata`; determines which health metric tiles are available per device

### 2.23 Account & Security

- **Account Management** — Change email, change password, delete account, cancel pending delete, verify email resend; "Manage your account" screen
- **Google Account Migration** — "Move your Fitbit to a Google Account" — "Get the industry-leading security and convenience of your Google Account with Fitbit"; `Move Account` button
- **Two-Factor Authentication (MFA/TFA)** — Enable/disable MFA; send auth code (SMS); in-app code check; login code check; deactivate MFA request; remove MFA; `TwoFactorAuthenticationActivity`, `TfaEnableActivity`, `TfaCodeInfoActivity`
- **Connected Apps Management** — View and revoke third-party app authorizations; "Manage connected apps" screen; `ApplicationAuthorizationsService`
- **Connected Devices Management** — View signed-in devices; revoke device access; "Manage connected devices"
- **Device Info** — `DeviceInfoActivity`; details about a specific signed-in device
- **Account Access** — "These devices are signed in now to your Fitbit account. Select a device to get details or revoke access to just that device."
- **Email Verification** — Popup: "Check your email and verify your email address before continuing."
- **Age Restriction Check** — `GET /1/account/ageRestriction.json`
- **Password Reset** — `POST /1/account/resetPassword.json`
- **User Consent** — `UserConsentActivity`; GDPR consent logging via `v3/user-consents/`; GDPR consent screen content fetched from CMS by language
- **SSO / OAuth2** — OAuth2 PKCE flow (`code_challenge`, `code_verifier`); scopes: `activity heartrate location nutrition profile settings sleep social weight mfa_ok`; delegate token grant for family impersonation; redirect URI `fitbit://auth`
- **Delegated Web View** — `DelegatedWebViewActivity` for OAuth web flows

### 2.24 Privacy Settings

- **Privacy Settings** — `PrivacySettingsActivity`, `EditPrivacySettingActivity`; control who sees profile, steps, and other data; "account_privacy_settings" labeled "Privacy"
- **Granular Privacy Controls** — Per-field privacy icons (global vs. self-visible)
- **Notification Settings** — Manage which notifications are enabled; "Manage notifications" with subtext "Auto Recognised Exercises, Exercise Goal Milestones, Step Goal Milestones"

### 2.25 Data Export

- **Data Export** — Request personal data export; resend confirmation email; view export request history; `DataExportService`

### 2.26 App Widgets

- **Quick Access Widget** — Home screen widget; `QuickAccessActivity`, `QuickAccessAppWidgetConfigureActivity`; configure which health metric is shown on widget

### 2.27 Notification Mirroring (Hands-Free / Comms)

- **Phone Notification Mirroring** — `HandsFreeOnboardingActivity`; `CommsSettingsActivity`; mirrors phone notifications to Fitbit device
- **Call Notifications** — Accept/Answer/Video labels; Decline/Dismiss/Reject/Clear/Ignore labels; `CallPermissionsRationaleActivity`
- **Foreground Sync Service** — `ForegroundService` for background BLE sync (fbcomms package)
- **Notification Summary** — Phrases: "%s new message," "%s new messages," "%s message from %s chats," etc.
- **Keep-Alive Rationale** — `Hilt_KeepAliveRationaleActivity`; explains why app needs to stay active in background for BLE sync

### 2.28 User Education

- **User Education System** — `UserEducationTrampolineActivity`; `fbeducation` package; education content fetched from CDN by locale (`education_en.json`, `education_{locale}.json`)
- **Hourly Activity FAQ** — Three FAQ items: "Why hourly activity is important," "How Fitbit can help you keep moving," "Tips for your hourly activity goal"
- **Device Setup Education** — `TutorialActivity`; post-setup educational prompts
- **Flex Education Screen** — `Hilt_FlexEducationScreenActivity`; flexible user education screen

### 2.29 Developer / Debug Features

- **Server Settings** — `ServerSettingsActivity`; switch between production, staging (`fitbit-stage.com`), integration (`fitbit-int.com`), and autopush/preprod Google PA sandbox environments
- **Developer Settings** — `Hilt_DevSettingsActivity` (device onboarding and general settings); feature flag overrides
- **Companion Logs** — `CompanionLogsActivity`; view companion app logs
- **Tracker Developer Panel** — `TrackerDeveloperActivity`; sideload testing
- **Heart Survey Admin** — `SurveyAdminActivity`; internal survey management

---

## 3. User-Facing Capabilities

Users can:

1. **Pair and manage** Fitbit trackers and smartwatches via Bluetooth, including Charge 3/4/5, Versa 1/2/3, Sense, Ionic, Ace (kids), and Wear OS devices
2. **View and log** steps, calories, distance, floors, active minutes, Active Zone Minutes, sleep, water, food, weight, body temperature, blood glucose, mood, and mindfulness sessions
3. **Monitor health vitals** including resting heart rate, HRV, SpO2, breathing rate, skin temperature, stress score, and cardio fitness score (VO2 max)
4. **Track menstrual health** including period logging and symptom tracking
5. **Make contactless payments** from their Fitbit device using Visa, Mastercard, Amex, Mifare, or Felica (Suica for Japan transit)
6. **Connect with friends**, cheer/taunt on the leaderboard, create and join groups, post to feed, and send private messages
7. **Enroll in Fitbit Premium** health programs, access coach content, guided workouts, and wellness reports
8. **Set up family accounts** with child-safe COPPA-compliant profiles and parental controls
9. **Connect Alexa or Google Assistant** to their Fitbit account
10. **Control music** on their device and manage YouTube Music
11. **Sync health data** to/from Google Health Connect and Wear OS
12. **Export their personal data** on request
13. **Configure privacy settings** granularly per data type
14. **Enable two-factor authentication** and manage account security
15. **Customize their Today dashboard** with draggable health metric tiles
16. **Set daily, weekly, and long-term goals** for steps, calories, distance, floors, active minutes, AZM, sleep, water, food, weight, body fat, mindfulness, and glucose
17. **Receive and respond** to phone notifications and calls from their Fitbit device
18. **Update device firmware** over Bluetooth or Wi-Fi
19. **Install and manage apps/clock faces** on their device via the App Gallery

---

## 4. Settings & Configuration

### Activity Settings (`activity_settings_*`)
| Setting Label | Description | Options |
|---|---|---|
| Auto-track activities | Automatically recognize exercise types | Automatic / Set manually |
| Stride length | Manual stride length for step distance | User-entered value |
| Personalized workouts | Workout recommendations persona | Running / Fitness / Running and fitness |
| Data and privacy | Data sharing and privacy for activity | — |
| Goals | Set activity goals | — |
| Manage notifications | Toggle notifications | Auto Recognised Exercises, Exercise Goal Milestones, Step Goal Milestones |
| Premium scores and assessments | GDPR consent for premium health scores | On / Off |

### Sleep Settings
| Setting | Description |
|---|---|
| Sleep goal | Target hours of sleep per night |
| Bedtime reminder | Notification before target bedtime |
| Smart Sleep | Advanced sleep stage detection (device feature flag) |

### Heart Rate Settings
| Setting | Description |
|---|---|
| Heart rate zones | Default (% of max HR) or custom zone thresholds |
| Heart rate notifications | High/low HR threshold alerts while inactive |

### Account Settings (`account_management_*`)
| Setting Label | Description |
|---|---|
| Change email | Update account email |
| Change password | Update account password |
| Two-factor authentication | Enable/disable SMS MFA |
| Delete account | Permanently delete Fitbit account |
| Move Account | Migrate Fitbit account to Google Account |

### Privacy Settings
| Setting | Description |
|---|---|
| Privacy | Per-field visibility (global icon vs. self-only icon) |
| Notification settings | Manage push notification preferences |

### Device (Tracker) Settings
| Setting | Description |
|---|---|
| Sync | Force manual sync with device |
| Firmware Update | Update device firmware (BT or Wi-Fi) |
| Alarms | Manage smart alarms on device |
| HR Tracking | Toggle heart rate tracking (On/Off labels from `tracker_hr_tracking_on/off`) |
| Music control | BLE music control toggle |
| Payments | Manage Fitbit Pay cards |
| Wi-Fi networks | Configure Wi-Fi SSIDs for device |
| Device guide | In-app setup guide links |

### Unit Preferences
- Distance: km / miles
- Weight: kg / lbs / stone
- Water: ml / fl oz
- Temperature: Celsius / Fahrenheit
- Glucose: mg/dL / mmol/L
- Energy: calories / kilojoules

---

## 5. Background Services

| Service | Function |
|---|---|
| `ForegroundService` (fbcomms) | Maintains persistent BLE connection for real-time notification mirroring and continuous sync |
| Bluetooth BLE Sync | Syncs health data from tracker via Bluetooth Low Energy; scheduled and triggered sync |
| Jetpack WorkManager (`androidx.work`) | Schedules background tasks including Coin Kit payment sync (`coinkitsyncjob_last_run_timestamp`), data refresh |
| Mobile Device Management | `POST /1/device-management`; registers phone as managed device |
| Firebase (`com.google.firebase`) | Push notifications delivery; crash reporting; performance monitoring |
| GreenDAO (`org.greenrobot.greendao`) | Local SQLite database caching for feed data (`FeedDatabase`), device model data (`DeviceDatabase`) |
| Jetpack DataStore | Persistent key-value storage replacing SharedPreferences for newer features |
| JS Scheduler Bridge | Executes scheduled JavaScript tasks for watch face/app data (weather, etc.) |
| OAuth Token Refresh | Background token refresh for Fitbit API authentication; delegate token management for family impersonation |

---

## 6. Third-Party Integrations & SDKs

| Integration | Details |
|---|---|
| **Google Health Connect** (`android.health.connect`, `androidx.health.platform`) | Bidirectional data sync; activities, sleep, HRV, weight, temperature, time series |
| **Google Pay / Google Wallet** | Fitbit Pay token migration to Google Wallet; `v3/wallet/{wire_id}/migrate_to_google_wallet` |
| **Google Assistant** | OAuth account linking; device key exchange; voice command integration |
| **Amazon Alexa** (`com.amazon.identity`) | Alexa skill account linking; voice commands for timers, alarms, weather, nutrition |
| **YouTube Music** | Deep link integration; YOUTUBE_MUSIC_SUPPORTED device feature; promotional partnership |
| **Firebase** | Push notifications, crash reporting, performance monitoring |
| **Retrofit 2 + OkHttp3** | All Fitbit API REST communication (599 endpoints) |
| **Moshi + Gson + Jackson** | JSON serialization/deserialization |
| **Protobuf** (`com.google.protobuf`) | Structured data communication with device over BLE (GoldenGate/Bison stack) |
| **GreenDAO** | Local device and feed data persistence |
| **Chromium Cronet** (`org.chromium.net`) | HTTP/2 and QUIC network transport via `PlayServicesCronetProvider` |
| **Uber RIB** (`com.uber.rib`) | RIBS architectural framework for some screen flows |
| **RxJava 2** (`io.reactivex`) | Reactive programming for async data streams throughout the app |
| **Kotlin Coroutines** (`kotlinx.coroutines`) | Coroutine-based async operations; lifecycle-scoped |
| **Google Places Autocomplete** | Location autocomplete for exercise routes/GPS features |
| **Jetpack Compose** (`androidx.compose`) | Modern declarative UI for newer screens |
| **ExoPlayer / Media3** (`androidx.media3`) | In-app media playback (guided audio workouts, coaching audio) |
| **CameraX** (`androidx.camera`) | Profile photo capture from within app |
| **Google Maps Platform** | Maps display for GPS exercise routes (`GOOGLE_MAPS` device feature) |
| **Google reCAPTCHA** (`https://www.recaptcha.net/recaptcha/api3`) | Bot protection on account flows |
| **Taiwanese bank integrations** | CTBC, Taishin Bank, UBot Bank Felica/NFC payment card support (Taiwan-specific URLs) |
| **Wear OS (Android Wear)** | `androidx.wear.ambient`; Wear OS device pairing and management |
| **In-App Purchase Validation** | `POST user/-/products/purchase/{storeType}/validate.json`; validates Play Store purchases for Premium |

---

## 7. Key User Workflows / Journeys

### 7.1 First-Time Device Setup
1. Open app → `HomeActivity` loads with account via Google TikTok account system
2. Tap "Set up device" → `AbstractOnboardingActivity` (paginated panels with `PagerCircles` indicator)
3. Fast Pair or manual pairing → `Hilt_FastPairLandingActivity`
4. Bluetooth association via `DeviceRequirement.CDM_ASSOCIATION`
5. Location permission grant via `LocationPermissionActivity` (location services, app permission, background permission all checked)
6. Firmware update if available → `FirmwareUpdateActivity`
7. Post-setup education → `TutorialActivity`, `UserEducationTrampolineActivity`

### 7.2 Adding a Fitbit Pay Card
1. Navigate to Payments in device settings → `AddCardActivity`
2. Accept Terms and Conditions → `TermsAndConditionsActivity`
3. Enter card details; network auto-detected (Visa/MC/Amex/Mifare/Felica)
4. Provisioning flow: Preparing → Contacting → Downloading → Inserting → Verifying → Finished
5. OTP verification if required (SMS or other method)
6. Set wallet PIN → `SetPinActivity` (with tutorial for left button)
7. Card ready; fingerprint/keyguard auth configured → `KeyGuardHelperActivity`

### 7.3 Setting Up a Child Account (Family)
1. Parent opens Family Account section → `Hilt_FamilyAccountActivity`
2. "Add a child" → `CoppaOnboardingActivity` (COPPA consent)
3. Enter child info → `AboutTheKidActivity`
4. Select child avatar and cover photo
5. Set up child's Fitbit Ace tracker → `SetupKidTrackerActivity`
6. Invitation/approval flow for additional guardians
7. Child account shown in family all list

### 7.4 Daily Health Dashboard
1. Open app → Home screen with customizable tiles (steps, AZM, sleep score, heart rate, stress, etc.)
2. Tap tile → Detailed daily view with intraday chart
3. Swipe between today/history; date picker for historical data
4. Tap "+" to log food, water, weight, mood, temperature, or mindfulness

### 7.5 Premium Program Enrollment
1. "Get Fitbit Premium" upsell → IAP purchase validated server-side
2. Browse health programs → `Hilt_EnrollmentActivity`
3. Enroll in program → weekly/daily program actions
4. Access coach content (collections, components, topics)
5. Complete program → appears in `CompletedMembershipsActivity`

### 7.6 Social / Community Engagement
1. Friends tab → leaderboard with step rankings
2. Tap friend → Cheer or Taunt action
3. Feed tab → posts from friends and groups
4. Groups tab → browse, join, create groups
5. Post with photo → `ShareActivity` with artifact selector/preview
6. Cheer/comment on posts; mention users with `@`
7. Report content → `ModerationReportActivity` with location multi-select

### 7.7 Firmware Update (Wi-Fi)
1. Banner appears in `TrackerDetailsActivity` when update available
2. Tap update button → `FirmwareUpdateActivity` launched
3. Wi-Fi scanning enabled early (optional flag)
4. Select/confirm Wi-Fi network → `WifiManagementActivity`
5. Download firmware to watch over Wi-Fi
6. Watch reboots and applies update
7. Result reported back to activity; Bluetooth fallback if Wi-Fi unavailable

### 7.8 Account Migration to Google Account
1. Settings → "Manage your account" → "Move your Fitbit to a Google Account"
2. Tap "Move Account" → identity link flow via `Hilt_IdentityLinkActivity`
3. OAuth with Google account → `Hilt_DmaLandingActivity` for data migration
4. Consents updated; TFA settings transferred

---
