Switch Name

Link to Switch Name copied to clipboard

WCAG 2.0 - 1.3.1 A Impact - Critical

Switch must be paired with a label indicating its purpose.

Supported within:
Compose Layouts


A switch should have a name that provides the context and expectation of what happens when it is turned on or off, especially for people with low-vision or blindness.


  1. Turn on TalkBack
  2. Attempt to focus on a Switch control
  3. One of the following will occur:
    • Inaccessible: TalkBack only announces 'on' or 'off'.
    • Accessible: TalkBack announces the name of the switch and 'on' or 'off'.

How to Fix

In the example below, put the Text and Switch together into a merged Compose layout like a Row. Add a Switch role and Toggable modifier to the Text, then clear the semantics on the Switch by using Modifier.clearAndSetSemantics { } and it will make Talkback focus on the label but not the switch.

val (isSwitchChecked, setSwitchState) = remember { 

Row(modifier = Modifier.semantics(mergeDescendants = true) { }) {
        text = "Get Emails",
        modifier = Modifier
                value = isSwitchChecked,
                onValueChange = { 
                role = Role.Switch

        checked = isSwitchChecked,
        onCheckedChange = { 
        modifier = Modifier
            .clearAndSetSemantics { }