slack-go/slack v0.30.0 - Go 1.26 Floor and Breaking Signature Changes


slack-go/slack v0.30.0, published on 4 October 2026, is a Go client library for the Slack API. If your pipelines post alerts or read workspace data through it, this release will fail your build before it does anything useful. Read on before bumping the module.

The full release notes and downloads are on the GitHub release page. The tag v0.30.0 was published on 4 October 2026. It is a stable release, not a prerelease. The headline is the breaking changes: Go 1.26 or later, a reordered DeleteFileComment, and new variadic signatures.

The minimum supported Go version is now 1.26. CI covers Go 1.26 and 1.27 (#1581). Check your build images first.

DeleteFileComment now takes (fileID, commentID), matching DeleteFileCommentContext (#1611). Both arguments are strings, so the compiler will not flag old calls. The notes say a call that still passes a comment ID (Fc...) returns an error as a guard. They also say YMMV. Grep for every call site and swap by hand.

CreateManifest, CreateManifestContext, GetUserInfo and GetUserInfoContext now accept variadic options. Application code compiles unchanged. Interfaces and mocks that declare the old signature do not. Add options ...slack.GetUserInfoOption and options ...slack.CreateManifestOption to your fakes.

UpdateUserGroupsParams gained a slice field, AdditionalChannels. A struct with a slice is no longer comparable with == or usable as a map key (#1599). Rare in practice, but it is a compile error when it hits.

These are the changes an operator will notice in production.

Socket Mode and RTM reconnects now wait at most 5 minutes between attempts. RetryConfig.BackoffMax caps the Web API retry delay (#1586). Before, the delay had no stated ceiling in the notes, so a long outage could leave a bot idle well after Slack recovered.

Socket Mode also no longer panics when the stream ends in the middle of a TLS record. It reconnects instead (#1608). A panic in a bot process means a restart and a lost event window, so this one matters.

GetFile now returns an error when the token cannot read the file. Before, it saved the sign in page as if it were the file (#1582). If you archive attachments, this was silent data corruption. Re check any files downloaded with a token that lacked scope.

Most of the additions touch app manifests. CreateManifest responses now include AppId, Credentials and OAuthAuthorizeUrl (#1587). New typed keys include Features.AgentView, Features.AssistantView, Features.UnfurlDomains, OAuthConfig.PKCEEnabled, Settings.TokenRotationEnabled and EventSubscriptions.MetadataSubscriptions. The goal stated in the notes is that a typed export and update keeps these keys.

For keys the Manifest struct still does not model, there are CreateManifestRaw, UpdateManifestRaw, ExportManifestRaw and ValidateManifestRaw (#1601). If you manage manifests as code, the raw variants avoid dropping unknown keys on a round trip. CreateManifestOptionTeamID arrives in the same change.

Several endpoints are new or extended:

  • AdminTeamsList for admin.teams.list (#1593)
  • AdminUsersList for admin.users.list (#1595)
  • SetAppIcon for apps.icon.set (#1597)
  • additional_channels and include_count options for usergroups.create and usergroups.update
  • GetUsersOptionIncludeLocale and GetUserInfoOptionIncludeLocale to control whether locale comes back

UserGroup also gains fields such as IsIDPGroup, IsOrgLevel and ChannelCount (#1605). Agent messaging events and SetAgentSessionStatus and RenameAgentSession for agents.sessions.* landed in #1607. The testify dependency moved from 1.11.1 to 1.12.1.

  1. Move your toolchain and CI images to Go 1.26 or later.
  2. Swap arguments on every DeleteFileComment call.
  3. Update interfaces and mocks for GetUserInfo and CreateManifest.
  4. Search for UpdateUserGroupsParams used in comparisons or as map keys.
  5. Read the CHANGELOG.md for full details.