This is the first stable release in the 0.18.x series — it includes everything from rc1 and rc2 plus a handful of new features and fixes that landed since.
There are a few breaking changes in this one. I tried to keep them to the minimum necessary but some were long overdue. Here's what you need to know.
Breaking changes
File upload API cleanup (#1481)
Slack discontinued the old files.upload API back in November 2025, so we finally removed the deprecated UploadFile, UploadFileContext, and FileUploadParameters. The V2 variants have been renamed to drop the suffix:
UploadFileV2→UploadFileUploadFileV2Context→UploadFileContextUploadFileV2Parameters→UploadFileParameters
Should be a quick search-and-replace for most codebases.
GetReactions return type (#1480)
GetReactions now returns ReactedItem instead of []ItemReaction. This aligns with what the Slack API actually returns — the item itself (message, file, or file_comment) alongside its reactions. To migrate, use resp.Reactions to get at the slice.
Settings pointer fields (#1461)
Settings.Interactivity and Settings.EventSubscriptions are now pointers so they can be properly omitted when empty. You'll need nil checks if you're accessing these directly.
Minimum Go version is now 1.25
Up from 1.22 in v0.17.x. The go.mod directive is go 1.25.
Added
- Admin Conversations API — Full
admin.conversations.*support: core operations, bulk operations, preferences, retention, restrict access, and EKM channel info. (#1329) admin.roles.*API methods —listAssignments,addAssignments, andremoveAssignments. (#1520)- Chat Streaming API — Real-time chat streaming with example usage. (#1506)
- Data Access API — Full support with example implementation. (#1439)
- Work Objects — Chat unfurl with Work Object metadata, entity details (flexpane),
entity_details_requestedevent, and associated types. (#1529) - Huddle support —
HuddleRoom,HuddleParticipantEvent, andHuddleRecordingtypes for huddle events. - Table blocks — Parse and create table blocks. (#1490, #1511)
- Context actions block —
context_actionsblock type. (#1495) - Workflow button —
workflow_buttonblock element. (#1499) - Call block data —
CallBlocknow includes full call data. (#897) - Cursor-based
GetUserspagination (#1465) GetAllConversationswith pagination — Automatic pagination with rate limit handling. (#1463)focus_on_loadfor remaining block elements — selects, multi-selects, datepicker, timepicker, plain_text_input, checkboxes, radio_buttons, number_input. (#1519)- Missing
User/UserProfile/EnterpriseUserfields —who_can_share_contact_card,always_active,pronouns,image_1024, and more. (#1526) PlainText/PreviewPlainTextonFile— Email file objects now include plain text body fields. (#1522)- Attachment image fields —
ImageBytes,ImageHeight,ImageWidth. (#1516) RecordChannelconversation property (#1513)- Title for
CreateChannelCanvas(#1483) loading_messagesforSetAssistantThreadsStatus(#1489)PostEphemeralhandler for slacktest (#1517)PreviewImageNamefor remote files- Audit Logs example (#1144)
Fixed
- File upload error wrapping —
UploadFilenow tells you which of the three upload steps failed. (#1491) - Audit Logs API endpoint —
GetAuditLogswas hitting the wrong endpoint; now usesapi.slack.com. AddedOptionAuditAPIURLfor testing. (#1144) - Socket mode dial debugging — Debug logging for custom dialer failures. Helps with proxy/TLS issues. (#1360)
MsgOptionPostMessageParametersmetadata — Was silently droppingMetaData. (#1343)UserProfile.SkypeJSON tag — Fixed typo"skyp"→"skype". (#1524)assistant.threads.setSuggestedPromptstitle — Now actually sent when non-empty. (#1528)PublishViewempty hash — No longer sends empty hash in payload. (#1515)ImageBlockElementvalidation — Properly validatesimageURLorSlackFile. (#1488)- Rich text section channel return (#1472)
KickUserFromConversationerror handling — Errors now parsed as a map. (#1471)
Changed
- CI test matrix: dropped Go 1.24, added Go 1.26; bumped golangci-lint to v2.10.1. (#1530)
Full Changelog: v0.17.3...v0.18.0