Tools5% of the exam
Choosing Bolt or the Slack SDKs
What the Bolt frameworks for Java, JavaScript and Python give an app out of the box, when a plain Slack SDK client such as the Python WebClient is the lighter choice, and why every Bolt listener acknowledges before doing slow work.
Recommend when to use the Bolt development framework to build Slack apps.
~7 min read · 4 practice questions ·
What the exam expects
- List what Bolt provides out of the box (web server, OAuth installation handling, simplified API interfaces, token validation, retry and rate-limit logic) and what it does not (hosting, Marketplace shortcuts, rate-limit exemptions).
- Recommend Bolt for Java, JavaScript or Python so a team can stay in its own language.
- Recommend a plain SDK client, such as the Python Slack SDK's
WebClient, for a job that only calls Web API methods and never receives requests from Slack. - Fix a Bolt listener that misses the 3-second window by calling
ack()first.
Key terms: Bolt (Slack's "batteries-included" app framework); SDK (in-language wrappers for Slack APIs without the framework); listener (a Bolt method such as app.command() that receives one request type); ack() (the acknowledgement Bolt sends back to Slack); Deno Slack SDK (for Slack-hosted workflow apps in TypeScript).
Key facts
Bolt out of the box
- Detail
- Web server, OAuth installation handling, simplified API interfaces, automatic token validation, retry and rate-limiting logic
Bolt languages
- Detail
- Java, JavaScript and Python
Slack SDKs
- Detail
- Deno, Java, Node and Python
Python Web API package
- Detail
slack_sdk.web: "over 200 methods"
Bolt for Java
- Detail
- Runs in any JVM language; listeners include
app.command,app.blockAction,app.viewSubmission,app.function
What must be acked
- Detail
- Actions, commands and options requests
Ack window
- Detail
- 3 seconds; call
ack()right away
Responding to a command
- Detail
say()orrespond()(aresponse_urlutility)
Slack-hosted option
- Detail
- Deno Slack SDK workflows in TypeScript; not eligible for Marketplace listing
Sources for this section (8)
- Toolsdocs.slack.dev (opens in a new tab)
- Develop Efficient Apps with Bolttrailhead.salesforce.com (opens in a new tab)
- Python Slack SDKdocs.slack.dev (opens in a new tab)
- Java Slack SDKdocs.slack.dev (opens in a new tab)
- Bolt Basicsdocs.slack.dev (opens in a new tab)
- Acknowledging requestsdocs.slack.dev (opens in a new tab)
- Listening & responding to commandsdocs.slack.dev (opens in a new tab)
- Deno Slack SDKdocs.slack.dev (opens in a new tab)
- Which four things does Bolt give an app out of the box?
- When is the Python Slack SDK's `WebClient` a better choice than a Bolt app?
- Why should `ack()` be the first statement in a slow command listener?
- Why doesn't a Java team need a separate Node.js service to use Bolt?
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 (4 questions for this lesson)
- An official source cited for every claim
- An AI tutor that answers from the guide
- Unlimited timed practice exams