All notable changes to the Go module are documented here. Go releases use the same version number as the Python, TypeScript, and Java packages.
- Validation now rejects email, URL, number, date picker, time picker, and rich text
input placeholders over 150 characters, and dispatch-action configurations whose
trigger_actions_onlist is empty or has more than two triggers. Plain-text input placeholders were already limited to 150 characters. - A dispatch-action configuration without
trigger_actions_onis now rejected withMissingRequired, matching Slack'sblocks.validate. - Video block
alt_textnow accepts up to 2000 characters, including an empty string, matching Slack's validator (previously 1 to 200 characters). Validatenow rejectscolumn_settingson adata_tableblock withInvalidUsage; Slack supportscolumn_settingsonly on the plaintableblock.- Validation now follows Slack's
blocks.validatemore closely. Newly rejected:- Rich text list
indentoutside 0-8, negativeoffset, and list, quote, and preformattedborderoutside 0-1; image blocktitleover 2000 characters; videothumbnail_urlorvideo_urlover 3000 andtitle_urlorprovider_icon_urlover 2000 characters; viewexternal_idover 255 characters; plain-text inputmin_lengthoutside 0-3000 ormax_lengthbelow 1; rich text inputmin_linesormax_linesoutside 1-100; multi-selectmax_selected_itemsbelow 1; negative data tablerow_header_column_index; more than 20 tablecolumn_settings; containers with no child blocks; and plans with more than 50 tasks or duplicatetask_ids. - Conversation filters with an empty
includelist or a type other thanim,mpim,private, orpublic, including filters on raw conversation selects passed toValidate. - Slack file IDs that do not match
^F[A-Z0-9]{8,}$, inNewSlackFileand in imageslack_fileobjects passed toValidate. - Messages, message responses, and webhook messages whose markdown blocks total more than 12,000 characters or whose data table cells total more than 20,000 characters.
- A standalone task card with
pendingstatus (TypeMismatch). Plan tasks can still bepending. - Missing required fields (
MissingRequired), checked atBuild: a Slack icon'sName, a plan'sTasks, a task card'sStatus(also for plan tasks), a number input'sIsDecimalAllowed, an attachment'sBlocks, and a workflow button'sActionID. Icon buttons and file blocks still defaulticonandsource.
- Rich text list
- Newly accepted:
inputblocks in messages,data_visualizationblocks in App Home, and tables with fewer or morecolumn_settingsthan columns (up to 20). ActionIDis now optional on every interactive element except rich text inputs and workflow buttons; when it is not set, noaction_idis sent. The 255-character limit still applies when it is set.- Also newly accepted: task card source URLs of any length (including empty),
empty markdown block text, modals and App Home tabs with no blocks, and
tablerows with different numbers of cells (data_tablerows must still match). ImageBlockBuildergainsSlackFile; an image block needs exactly one ofImageURLorSlackFile.RichTextInputBuilder.InitialValuenow takes a*RichTextBlockBuilderinstead of a*RichTextBuilder, since Slack requires arich_textblock.
This coordinated release introduces the C# package, published to NuGet as
Slackblocks, and moves all five packages onto one shared release number. The
Go public API and wire format are unchanged.
- Coordinated release validation now requires the Python, TypeScript, Java, and C# package manifests and all five language changelogs to agree before any tags are created.
- Project documentation now includes the C# implementation alongside the existing Python, TypeScript, Go, and Java variants.
This coordinated release introduces the Java package and replaces the any
parameters on Go builder methods with typed parameters. The wire format is
unchanged.
- Builder methods take typed parameters instead of
any. Nested fields accept role interfaces (Block,Element,InputElement,ContextElement,ContextActionsElement,TableCell,DataTableCell,Chart,RichTextBlockElement,RichTextSectionElement, andTextObject) or a concrete builder such as*ConfirmationBuilder. Only slackblocks builders implement the interfaces, so a value of the wrong kind no longer compiles. - Text fields take a
string. Pass a text object with the new companion method, such asTitleObjectorFieldObjects. - Enumerated fields take named string types with constants, such as
ButtonStyleandButtonStylePrimary. Untyped string constants still compile. - Rich text styles take
RichTextStyle, table rows take typed slices such as[]TableCell, numeric chart and cell values takefloat64, and message metadata takesObject. NewAccordion().Sectionstakes*AccordionSectionBuildervalues andNewPaginator().BlockstakesBlockvalues.- Raw
Objectvalues and maps are no longer accepted by typed fields; useSet(field, value)for wire-format values. - Builder documentation now states each field's Slack limit, whether it is required, and links to Slack's reference, and a test runs every Go snippet in the Using Blocks guide.
- Coordinated release validation now requires the Python, TypeScript, and Java package manifests and all four language changelogs to agree before any tags are created.
- Project documentation now includes the Java implementation alongside the existing Python, TypeScript, and Go variants.
The first public Go release of slackblocks, versioned in step with the Python and TypeScript packages. The module supports Go 1.22 and newer.
- Fluent concrete builders for Slack Block Kit composition objects, elements, blocks, messages, attachments, responses, modals, and App Home payloads.
- Typed validation errors and complete payload validation for required fields, length and collection limits, supported block surfaces, and modal submission rules.
- Direct
slack-go/slackinteroperability: top-level block builders implementslack.Blockand can be passed directly toslack.MsgOptionBlocks. - Shared conformance coverage against the same valid and invalid JSON fixtures used by the Python and TypeScript implementations.
- Higher-level
AccordionandPaginatorcomponents that expand into ordinary Slack blocks. - Dedicated documentation, examples, generated-builder verification, and a CI matrix covering Go 1.22 and the latest stable Go release.