github slack-go/slack v0.18.0

16 hours ago

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:

  • UploadFileV2UploadFile
  • UploadFileV2ContextUploadFileContext
  • UploadFileV2ParametersUploadFileParameters

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 methodslistAssignments, addAssignments, and removeAssignments. (#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_requested event, and associated types. (#1529)
  • Huddle supportHuddleRoom, HuddleParticipantEvent, and HuddleRecording types for huddle events.
  • Table blocks — Parse and create table blocks. (#1490, #1511)
  • Context actions blockcontext_actions block type. (#1495)
  • Workflow buttonworkflow_button block element. (#1499)
  • Call block dataCallBlock now includes full call data. (#897)
  • Cursor-based GetUsers pagination (#1465)
  • GetAllConversations with pagination — Automatic pagination with rate limit handling. (#1463)
  • focus_on_load for remaining block elements — selects, multi-selects, datepicker, timepicker, plain_text_input, checkboxes, radio_buttons, number_input. (#1519)
  • Missing User/UserProfile/EnterpriseUser fieldswho_can_share_contact_card, always_active, pronouns, image_1024, and more. (#1526)
  • PlainText/PreviewPlainText on File — Email file objects now include plain text body fields. (#1522)
  • Attachment image fieldsImageBytes, ImageHeight, ImageWidth. (#1516)
  • RecordChannel conversation property (#1513)
  • Title for CreateChannelCanvas (#1483)
  • loading_messages for SetAssistantThreadsStatus (#1489)
  • PostEphemeral handler for slacktest (#1517)
  • PreviewImageName for remote files
  • Audit Logs example (#1144)

Fixed

  • File upload error wrappingUploadFile now tells you which of the three upload steps failed. (#1491)
  • Audit Logs API endpointGetAuditLogs was hitting the wrong endpoint; now uses api.slack.com. Added OptionAuditAPIURL for testing. (#1144)
  • Socket mode dial debugging — Debug logging for custom dialer failures. Helps with proxy/TLS issues. (#1360)
  • MsgOptionPostMessageParameters metadata — Was silently dropping MetaData. (#1343)
  • UserProfile.Skype JSON tag — Fixed typo "skyp""skype". (#1524)
  • assistant.threads.setSuggestedPrompts title — Now actually sent when non-empty. (#1528)
  • PublishView empty hash — No longer sends empty hash in payload. (#1515)
  • ImageBlockElement validation — Properly validates imageURL or SlackFile. (#1488)
  • Rich text section channel return (#1472)
  • KickUserFromConversation error 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

Don't miss a new slack release

NewReleases is sending notifications on new releases.