Skip to content

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.