Design a Great User Experience8% of the exam

Accessible copy, button labels and localization

How to write Block Kit content that works with screen readers and for every reader: emoji placement, meaning beyond colour, alt text, labelled inputs, specific button copy, and choosing channel or user locale when localizing, including what an app cannot localize.

Official exam objective
Build a great user experience that aligns with Slack’s commitment; to make work life simpler, more pleasant and more productive.

~8 min read · 7 practice questions ·

What the exam expects

  • Apply Slack's screen reader guidance to emoji: never as a control or a word, paired with text, at the end of a line, not as bullets, and in a header or its subtext but not both.
  • Convey meaning with more than colour, and write context-specific alt_text for every meaningful image.
  • Build forms from input blocks with clear labels and descriptive placeholder text.
  • Write button labels as specific, active-voice outcomes and reject vague or emoji-only labels.
  • Pick the channel locale or the user locale for each piece of content, and name what an app cannot localize.

Key terms: screen reader (a tool that reads digital content aloud for people with difficulty seeing); text alias (an emoji's name, read as "[alias] emoji"); alt_text (the required plain-text summary of an image); input block (the block that wraps a form element with a required label); locale (a channel's or user's language preference, returned with include_locale).

Key facts

How screen readers announce emoji
Detail
"[alias] emoji"; no way to mark one decorative
Emoji placement
Detail
End of a sentence or line; header or subtext, not both
Colour
Detail
Never the only carrier of meaning; contrast 4.5:1 for regular text
Button text
Detail
plain_text, truncates around 30 characters, max 75
accessibility_label
Detail
Read by screen readers instead of the button text; max 75
Image alt_text
Detail
Required, plain text, max 2,000 characters
Input block label
Detail
Required plain_text; optional grey hint below
Locale lookup
Detail
include_locale: true on conversations.info or users.info (default false)
Not localizable
Detail
Slash command and message action pre-configured text, app display name
Sources for this section (7)
  • Why must an emoji never be the only text on a button?
  • Why is a red "Cancel" button not accessible enough?
  • When should an app use a user's locale instead of the channel's?
  • Which text can an app not localize per user?
  • What should a select menu in a modal form have besides its options?

The questions are free to read. Answers with their sources and self-grading are included with the pack.

Keep reading with the Slack Developer pack

  • Core concepts
  • Exam traps
  • Worked scenario

The pack includes:

  • All 38 lessons of the Slack Developer guide, with reading progress
  • Interactive decision walks and step-by-step sequence steppers
  • Inline practice questions and one-click topic practice (7 questions for this lesson)
  • An official source cited for every claim
  • An AI tutor that answers from the guide
  • Unlimited timed practice exams

Practice for the Slack Developer exam