Releases
v2.0.0 (June 4, 2025)
We're excited to announce BlockKit v2.0.0 - a complete ground-up rewrite that makes building Slack UIs faster, more intuitive, and more enjoyable than ever before.
What's new
Zero dependencies
BlockKit v2.0.0 has zero runtime dependencies. We've removed the Pydantic and built a custom validation system that's more focused on Block Kit's specific needs.
Method chaining
Every component now supports full method chaining for a more natural building experience:
# v1.9.2
button = Button(
text=PlainText(text="Click me"),
action_id="button_action",
style="primary"
)
# v2.0.0 - Much cleaner!
button = (
Button()
.text("Click me")
.action_id("button_action")
.style(Button.PRIMARY)
)
Automatic text type detection
No more guessing whether to use plain_text
or mrkdwn
. BlockKit now
automatically detects markdown formatting:
# Automatically uses plain_text
Section("Hello world")
# Automatically detects markdown and uses mrkdwn
Section("Hello *world*")
Intelligent string conversion
Pass strings anywhere - BlockKit automatically converts them to the appropriate Text objects:
# All of these work seamlessly
Modal().title("My Modal")
Button().text("Click me")
Section("*Bold text*")
Complete coverage
The library now supports all blocks, elements and composition objects that are currently available in Block Kit.
Better error messages
# Clear, actionable validation errors
FieldValidationError: Field 'text': Length must be between 1 and 75 (got 82)
ComponentValidationError: Component 'Button': Only plain_text is allowed
Type safety and editor autocompletion
Full type hints throughout the codebase for better IDE support and fewer runtime errors.
Consistent patterns
Every component follows the same patterns - if you know how to use one, you know how to use them all.