Apps in the Slack Platform7% of the exam

Choosing surfaces: App Home, modals and messages

Which surface fits which job: the per-user Home tab published with views.publish, modals that need a fresh trigger_id, and channel, DM or ephemeral messages chosen by who should see them, plus how to combine surfaces in one feature.

Official exam objective
Recommend when to use Slack's different surfaces (user touchpoints including App home, modals and messages) for a range of use cases.

~8 min read · 9 practice questions ·

What the exam expects

  • Recommend the Home tab for a persistent, personal dashboard, and know it is published per user with views.publish, refreshed on app_home_opened or when data changes, and unavailable to Deno Slack SDK apps.
  • Recommend a modal to collect structured input, and know a modal needs a valid trigger_id from a user interaction, so a system-initiated form starts with a message button.
  • Choose between a channel message, a DM and an ephemeral message by who should see the content and whether a user action prompted it.
  • Diagnose Home tab buttons that show an error icon (interactivity not enabled) and combine surfaces into one feature.

Key terms: App Home (the private user-app space with Home, Messages and About tabs); Home tab (the ever-present per-user view the app publishes); modal (a focused input dialog of up to three views); trigger_id (a short-lived, single-use value from an interaction that lets the app open a modal); ephemeral message (seen by one user, not persisted).

Key facts

App Home availability
Detail
Granular-permission apps only; not Deno Slack SDK apps or workflows
Home tab scope
Detail
At least one scope of any kind; Messages tab needs chat:write
Home tab size
Detail
One view, up to 100 blocks, type: home
Publishing
Detail
views.publish with user_id and the view; same call updates
Home tab persistence
Detail
Keeps content and state until the app updates it
Home tab buttons
Detail
Without interactivity enabled, clicks show an error icon
Opening a modal
Detail
Needs a valid trigger_id; expires 3 seconds after sending
trigger_id reuse
Detail
Single use; reuse returns trigger_exchanged
Ephemeral rules
Detail
One viewer, no persistence, only after a user action
Ephemeral delivery
Detail
User must be active and in the channel, else user_not_in_channel
Sources for this section (6)
  • Why can't an app open a modal the moment an external alert arrives?
  • When should a reminder to one person be a DM rather than an ephemeral message?
  • Which event tells an app that a user opened its App Home?
  • Why do Home tab buttons show an error icon even though the view published fine?

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 (9 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