Improve your app's quality: from good, to better, to best
Stay organized with collections
Save and categorize content based on your preferences.
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
permission in the manifest file.
- Integrating easy-to-use, accessibility features
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 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 foreground service
type.
- Using Jetpack Glance to create app widgets 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 or complication 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 until the user has had time to
familiarize themselves with the app, and using notification bridging for
paired phones and watches.
- Improving accessibility for all, such as adding subtitles for video
content and optimizing for accessibility on any secondary surfaces, such as
Wear OS.
- Supporting playback to Cast devices for your fitness app's
video content
- Using 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:
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2024-10-12 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-10-12 UTC."],[],[],null,["# Improve your app's quality: from good, to better, to best\n\nThis document charts the optimal progression of a health and fitness app from a\nlikely starting place to best-in-class. It's designed to help you think about\nscaling your app over time, and what features to implement. While every health\nand fitness app is different, consider these recommendations to achieve a\nbest-in-class app.\n\nBasic health and fitness app\n----------------------------\n\nThere are key elements that a basic health and fitness app requires in order to\nprovide a great foundational experience for users. Some of those key elements\ninclude doing the following:\n\n- Requesting only the necessary permissions to fulfill the experience that the user wants\n- Offering tracking metrics that are customizable and easy to understand\n- Offering in-app content browsing and discovery\n- Offering in-app exercise controls\n- If tracking an exercise session or other health-related long-running task, using a foreground service and declaring the [FOREGOUND_SERVICE_HEALTH](/about/versions/14/changes/fgs-types-required#health) permission in the manifest file.\n- Integrating easy-to-use, [accessibility features](/guide/topics/ui/accessibility)\n\nBetter health and fitness app\n-----------------------------\n\nA better health and fitness app will start to grow its reach, once a user has\nphysically and mentally made progress along their health journey. A better app\nalso allows a user to easily register for a profile with the use of existing\nsocial media credentials and their email.\n\nImplementing more holistic improvements into your app is also an excellent way\nto accelerate its growth. Consider these features as a way to further enhance\nyour app:\n\n- Integrating second surfaces, such as Wear OS (using [Health Services on Wear\n OS](/training/wearables/health-services) for data collection). Use Bluetooth Low Energy (BLE) to send and receive data to and from peripheral devices\n- If connecting peripheral devices, preserve battery usage. If you are periodically syncing data, use the [CONNECTED_DEVICE](/about/versions/14/changes/fgs-types-required#connected-device) foreground service type.\n- Using [Jetpack Glance](/jetpack/compose/glance) to create app [widgets](/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.\n- If supporting Wear OS, supplying a [tile](/training/wearables/tiles) or [complication](/training/wearables/tiles/complications) to enable similar glanceable experiences on the watch.\n- 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](/develop/ui/views/notifications/notification-permission#best-practices) until the user has had time to familiarize themselves with the app, and using [notification bridging](/training/wearables/notifications/bridger) for paired phones and watches.\n- Improving [accessibility](/guide/topics/ui/accessibility) for all, such as adding [subtitles](/guide/topics/media/exoplayer/media-items#sideloading-subtitle) for video content and optimizing for accessibility on any secondary surfaces, such as [Wear OS](/training/wearables/accessibility).\n- Supporting playback to [Cast](https://developers.google.com/cast/docs/developers) devices for your fitness app's video content\n- Using [Google Play Billing](/google/play/billing) to let users purchase subscriptions\n\nBest-in-class health and fitness app\n------------------------------------\n\nA best-in-class health and fitness app builds on the previous recommendations to\ncreate a seamless multi-device experience for users, which may include:\n\n- Enabling easy sharing of workouts and accomplishments with [Sharesheet](/training/sharing/send)\n- Optimizing for foldables by supporting the [`HALF_OPENED`](/develop/ui/compose/layouts/adaptive/foldables/learn-about-foldables#foldable_postures) [state](/develop/ui/compose/layouts/adaptive/foldables/learn-about-foldables#foldable_postures)\n- Testing and refining voice assistant integrations on mobile, such as with [Google Assistant](/media/implement/assistant)\n- Supporting [Better Together](https://www.android.com/better-together) use cases, such as [Nearby\n Connections](https://developers.google.com/nearby/connections/overview)\n- Investing in seamless identity across surfaces such as [passkeys](/training/sign-in/passkeys), [One\n Tap](https://developers.google.com/identity/one-tap/android/overview), and [account linking](https://developers.google.com/identity/account-linking)\n- Offering [frictionless subscriptions](https://www.youtube.com/watch?v=ARuf97ncE4w)"]]