Wear OS 6 is based on Android 16 (API level 36). When you prepare your Wear OS
app for use on Wear OS 6, handle the system
[behavior changes that affect all apps in Android 16](https://developer.android.com/about/versions/16/behavior-changes-all), as well as the
[changes for apps that target Android 16](https://developer.android.com/about/versions/16/behavior-changes-16).

Unless otherwise specified, the changes affect all apps that run on Wear OS 6
or higher, regardless of target SDK version.

As a reminder, watches that launch with Wear OS 6 only support watch faces that
use the [Watch Face Format](https://developer.android.com/training/wearables/wff). For this reason, we recommend that you migrate
to using the Watch Face Format.
| **Caution:** Before you upload your app to the Play Store, [target Android 16](https://developer.android.com/training/wearables/versions/6/setup#update-target-sdk) and [configure an emulator](https://developer.android.com/training/wearables/get-started/creating#configure-emulator) to test your app.

## More consistent always-on behavior


Wear OS 6 consolidates existing solutions to offer a consistent [always-on](https://developer.android.com/training/wearables/always-on)
display experience across devices. As part of this change, the previous top
activity remains visible and in the "resumed" state when the device enters
system ambient mode.  
![](https://developer.android.com/static/training/wearables/versions/6/images/always-on.png) The current song and media controls remain visible even when the user isn't interacting with the Wear OS device.

<br />

## Default system font for tiles

Wear OS 6 introduces more consistency for tile typography, which helps users
navigate through the tile carousel. On a given device, all tiles use the same
font. On some devices, this consistent font is a
[variable font](https://fonts.google.com/knowledge/introducing_type/introducing_variable_fonts).
![](https://developer.android.com/static/training/wearables/versions/6/images/tile-water.png)  
![](https://developer.android.com/static/training/wearables/versions/6/images/tile-fitness.png)
All tiles on a given device use the same font.

## More granular health permissions

| **Note:** The following change affects your app only if you [update your target SDK
| version to Android 16](https://developer.android.com/training/wearables/versions/6/setup#update-target-sdk), the version on which Wear OS 6 is based, or higher.

Starting in Android 16---and, by extension, Wear OS 6---the platform is migrating to
the more granular health permissions that Health Connect uses. This affects the
following permissions:

| Wear OS 5.1 permission (`android.permission`) | Wear OS 6 permission (`android.permission.health`) |
|---|---|
| `BODY_SENSORS` | `READ_HEART_RATE` `READ_OXYGEN_SATURATION` (*sensor available on supported devices* ) `READ_SKIN_TEMPERATURE` (*sensor available on supported devices*) |
| `BODY_SENSORS_BACKGROUND` | `READ_HEALTH_DATA_IN_BACKGROUND` |

To learn how to update your app for handling these permissions when it targets
API level 36 or higher, follow the [migration steps](https://developer.android.com/health-and-fitness/guides/health-services/permissions#migrate-support-api-36) shown in the
Health Services for Wear OS guide.


**Note:** To maintain compatibility for apps that target Wear OS 5.1
(API level 35) and lower, the system offers the following support:

- If the user installs your app on a device that runs Wear OS 6 or higher, the system automatically requests the `READ_HEART_RATE` permission on your app's behalf.
- If the user previously granted the `BODY_SENSORS` and `BODY_SENSORS_BACKGROUND` permissions to your app, and if the user then updates their device to Wear OS 6 or higher, your app maintains the granted permissions.

<br />

## Tile interaction events are batched

| **Note:** The following change affects your app only if you [update your target SDK
| version to Android 16](https://developer.android.com/training/wearables/versions/6/setup#update-target-sdk), the version on which Wear OS 6 is based, or higher.

Starting in Wear OS 6, events related to users swiping onto and away from your
tile---`onTileEnterEvent` and `onTileLeaveEvent`, respectively---are batched.
If your app targets Wear OS 6 or higher, call
[`onRecentInteractionEventsAsync()`](https://developer.android.com/reference/androidx/wear/tiles/TileService#onRecentInteractionEventsAsync(java.util.List%3Candroidx.wear.tiles.EventBuilders.TileInteractionEvent%3E)) to monitor these events. Don't rely on
real time delivery of these events to update your tiles.