This document charts the optimal progression of a health and fitness app from a likely starting place to best-in-class. It's designed to help you think about scaling your app over time, and what features to implement. While every health and fitness app is different, consider these recommendations to achieve a best-in-class app.

## Basic health and fitness app

There are key elements that a basic health and fitness app requires in order to provide a great foundational experience for users. Some of those key elements include doing the following:

- Requesting only the necessary permissions to fulfill the experience that the user wants
- Offering tracking metrics that are customizable and easy to understand
- Offering in-app content browsing and discovery
- Offering in-app exercise controls
- If tracking an exercise session or other health-related long-running task, using a foreground service and declaring the[FOREGOUND_SERVICE_HEALTH](https://developer.android.com/about/versions/14/changes/fgs-types-required#health)permission in the manifest file.
- Integrating easy-to-use,[accessibility features](https://developer.android.com/guide/topics/ui/accessibility)

## Better health and fitness app

A better health and fitness app will start to grow its reach, once a user has physically and mentally made progress along their health journey. A better app also allows a user to easily register for a profile with the use of existing social media credentials and their email.

Implementing more holistic improvements into your app is also an excellent way to accelerate its growth. Consider these features as a way to further enhance your app:

- Integrating second surfaces, such as Wear OS (using[Health Services on Wear OS](https://developer.android.com/training/wearables/health-services)for data collection). Use Bluetooth Low Energy (BLE) to send and receive data to and from peripheral devices
- If connecting peripheral devices, preserve battery usage. If you are periodically syncing data, use the[CONNECTED_DEVICE](https://developer.android.com/about/versions/14/changes/fgs-types-required#connected-device)foreground service type.
- Using[Jetpack Glance](https://developer.android.com/jetpack/compose/glance)to create app[widgets](https://developer.android.com/develop/ui/views/appwidgets/overview)on mobile to enable users to track progress in a glanceable way. Consider using dynamic color, optimizing across form factors, and taking advantage of in-app widget pinning APIs for better discoverability.
- If supporting Wear OS, supplying a[tile](https://developer.android.com/training/wearables/tiles)or[complication](https://developer.android.com/training/wearables/tiles/complications)to enable similar glanceable experiences on the watch.
- Offering creative ways to keep a user on track (such as notifications and nudges). Be sure to follow best practices for notifications, including[waiting to show the notification prompt](https://developer.android.com/develop/ui/views/notifications/notification-permission#best-practices)until the user has had time to familiarize themselves with the app, and using[notification bridging](https://developer.android.com/training/wearables/notifications/bridger)for paired phones and watches.
- Improving[accessibility](https://developer.android.com/guide/topics/ui/accessibility)for all, such as adding[subtitles](https://developer.android.com/guide/topics/media/exoplayer/media-items#sideloading-subtitle)for video content and optimizing for accessibility on any secondary surfaces, such as[Wear OS](https://developer.android.com/training/wearables/accessibility).
- Supporting playback to[Cast](https://developers.google.com/cast/docs/developers)devices for your fitness app's video content
- Using[Google Play Billing](https://developer.android.com/google/play/billing)to let users purchase subscriptions

## Best-in-class health and fitness app

A best-in-class health and fitness app builds on the previous recommendations to create a seamless multi-device experience for users, which may include:

- Enabling easy sharing of workouts and accomplishments with[Sharesheet](https://developer.android.com/training/sharing/send)
- Optimizing for foldables by supporting the[`HALF_OPENED`](https://developer.android.com/develop/ui/compose/layouts/adaptive/foldables/learn-about-foldables#foldable_postures)[state](https://developer.android.com/develop/ui/compose/layouts/adaptive/foldables/learn-about-foldables#foldable_postures)
- Testing and refining voice assistant integrations on mobile, such as with[Google Assistant](https://developer.android.com/media/implement/assistant)
- Supporting[Better Together](https://www.android.com/better-together)use cases, such as[Nearby Connections](https://developers.google.com/nearby/connections/overview)
- Investing in seamless identity across surfaces such as[passkeys](https://developer.android.com/training/sign-in/passkeys),[One Tap](https://developers.google.com/identity/one-tap/android/overview), and[account linking](https://developers.google.com/identity/account-linking)
- Offering[frictionless subscriptions](https://www.youtube.com/watch?v=ARuf97ncE4w)