Your experience while developing on the new platform is largely governed by the SDKs and CLI you use to interact with it. The tools change as the platform changes and we release new versions regularly. Let us know how we're doing.
Important changes
outgoingDomains
property of your app's manifest.slack login
and paste the /slackauthticket
command into your workspace, instead of directly sending you back to the CLI, Slack will issue a verification code in the Slack client which you need to input into your CLI before you can complete the login. This does not break login for older versions. Additionally, existing logins in your credentials.json
file are not affected.Other changes
slack run
command, you will be prompted to generate a trigger. This prompt will not occur when running slack deploy
.schema_compatibility_error
on datastores_deleted
.datastore
command help text to be consistent with website documentation.channel_id
to grant or revoke access to triggers.datastore
command examples to not require the app_id
parameter, as the App Selector Prompt automatically adds the app_id
to the query.slack env add
and slack env remove
, instead of receiving a pesky error. When slack env add
prompts for the secret value, it uses a password-like input to hide the input value from the terminal screen to remove possible leakages of these values from the terminal history.slack create
to create from a template if Git is not installed.channel_not_found error
.install
and deploy
commands to use the selected workspace token.get
and delete
datastore methods to use id
instead of the name of the primary_key
slack uninstall
command, you will now receive a warning message confirming that all of the data related to this app will also be deleted (i.e. the app's related workflows, functions, and datastores). See update here.slack manifest validate --verbose
, you are now prompted to choose an AppID. This change fixes a bug where an app manifest may have previously been validated against an incorrect AppID. Since each app may have a slightly different manifest depending on what stage of development it's in (for example, a local development app vs. a deployed app), you can now specify the app to validate your local project's manifest against.<email
and user_id>
flag that adds or removes a user directly, e.g. slack collaborator add U123456789
or slack collaborator add iuseslack@mycompany.com
.slack create
and choose our Scaffolded app to familiarize yourself more closely with datastores on the new Slack platform.Breaking change
Beginning January 26th, 2023, you must specify all domains you'll use for remote HTTP requests in the outgoingDomains
property of your app's manifest.
outgoingDomains
will be enforced on all workspaces for Slack-hosted apps. Previously, outgoingDomains
was only enforced on workspaces with Admin-Approved Apps enabled.outgoingDomains
will be enforced on all workspaces for Slack-hosted apps.hooks.slack.com
was being implicitly added as an approved outgoing domain on AAA-enabled workspaces. After January 19th, 2023, it will be removed from that list and will need to be added explicitly as an outgoing domain if your functions make network requests to hooks.slack.com
.deno-slack-hooks
dependency to v0.7.0
, the slack run
command will enforce your app's outgoingDomains
setting locally.slack run
. If you recieve a "Requires net access to <domain_name>" error message, add the listed domain to your outgoingDomains
setting and try again. Once you're done, redeploy it using the command slack deploy
.Other changes
AO12345678
instead of text, e.g. Status: Installed
.Bug fix
slack manifest validate
no longer throws requires_request_url
or requires_socket_mode_enabled
errors when validating the Hello World starter template manifest.slack workspace default
command.enterprise_id
as a parameter to application functions (and their interactivity handlers) in the deno-slack-sdk. See all available function context parameters here.placeholder
text for the following Block Kit elements: channels_select, conversations_select, multi_channels_select, multi_users_select, and users_select.slack activity
command to now support selecting local app development application.--secret
flag to slack external-auth add-secret
command warning message text.slack-debug-[date].log
file will log the response and request. No other activity will be logged.slack-debug-[date].log
file.Bug fix
slack run
or slack activity --tail
, the command will exit once a timeout is reached.slack trigger info
command to CLI to display trigger ID, type, name, and URL e.g. slack trigger info --trigger-id "Ft123ABC456"
.slack feedback
command to CLI. We would love to know about your experience (good or not so good) using the Slack CLI. Use this command to submit feedback or submit it directly here.slack-debug-20220915.log
. This log file will be accessible in the .slack/logs
folder on your computer. Note: The CLI will auto-cleanup log files older than one week from the .slack/logs
folder.Bug fix
slack trigger
and slack workspace
command will return an 'Error: unknown command' if an invalid command is executed e.g. slack trigger <invalid_command>
or slack workspace <invalid_command>
.slack auth
and slack collaborators
default to slack auth list
and slack collaborators list
command if no additional arguments are passed in the command.Breaking changes
FunctionHandler
is no longer exported. Use the SlackFunctionHandler
type when building custom functions instead. Alternatively, use the new SlackFunction
helper included in this release.DefineType()
no longer accepts callback_id
as a property. The callback_id
has been deprecated in favor of name
.options.client_secret_env_key
property has been removed from DefineOAuth2Provider()
in favor of using the add-secret
CLI command. If you are using client_secret_env_key
, you can remove it and then use add-secret
instead to provide the value.SendDm
SendMessage
SendEphemeralMessage
Both text
and rich_text
are still supported.block_actions/view_submission/view_closed
interactivity event payload:
body.user.username
body.trigger_id
body.token
body.is_enterprise_install
body.app_unfurl
body.workflow_step
body.trigger_info
body.trigger_id
, use body.interactivity.interactivity_pointer
instead.uri
has been renamed to url
for the string
type. If you're using format: "uri"
as either an OpenForm
input field or top-level string parameter in a custom function, please update to format: "url"
.Other changes
reverse-string
app template has been removed.slack run
. On workspaces that don't require admin approval to install apps, slack run
will start a local development server without first having to have an admin accept the Terms of Service.interactive_blocks
has been added to the following built-in functions:
SendDm
SendMessage
SendEphemeralMessage
slack run
watches for filesystem changes.Breaking changes
Each built-in function now requires scopes to be included in the manifest.ts
file. See updates here.
Using autogenerated shortcuts to run your function will no longer be supported on the future platform. In its place, we have introduced workflows and triggers to automate your function. Add your function to a workflow and assign that workflow a trigger to power your functions.
Other changes
view_submission
and view_closed
events with the new ViewsRouter API. Allowing you to create custom visual flows within your app.slack trigger access
command. Read moredisplayName
, longDescription
, functions
, workflows
, outgoingDomains
, events
, types
, datastores
, and features
.Breaking change
Link triggers are replacing Global Shortcuts as the tool that powers your functions. This means that you will no longer be able to create Global Shortcuts on the new Slack platform and that functions must be added to workflows and have a trigger configured in order for them to be used.
Link triggers will allow you to add more interactivity and user input into your app (try out the new OpenForm built-in function). Simultaneously, leverage workflows to automate tasks more seamlessly throughout your workspace. Since triggers and workflows go hand in hand i.e. you need to configure a trigger to start your workflow, see the Migrating to workflows and triggers guide for instructions on how to migrate the previous version of your app to a modern version that leverages workflows and triggers.
trigger create
, trigger update
, and trigger delete
commands in the CLIOpenForm
which allows you to gather user inputts
to message_ts
for SendDm
and SendEphemeralMessage
built-in functionsSendMessage
: message_link, changed input parameter meta_data
to metadata
, changed output parameter ts
to message_ts
RemoveUserFromUsergroup
input parameter from user_ids
to user_id
InviteUserToChannel
output parameter: user_id
CreateChannel
input parameter is_private
is now an optional inputSchema.slack.types.interactivity
and Schema.slack.types.user_context
triggers
and collaborators
CLI commands to the singular form trigger
and collaborator
commands.slack var
. Use the command slack env
with the appropriate subcommand to add, list, and remove environment variables.--help
flag.integer
, number
, usergroup
, timestamp
, blocks
(see here), and Object
.read_only_message_tab
and messages_tab_enabled
. You can now hide the Messages tab in your app with the new features
property in the manifest.name
property and deprecated callback_id
property in DefineType
definition. Check out our updated code sample here!slack run
is to now persist the dev version of your app.
in your workspace between runs. (If you do want to remove it between runs, you can
use the --cleanup
flag.)upgrade
command. Now you can run slack upgrade
to update your CLI and SDK together..slack
directory when executing CLI commands in user's home directory.distribute
command, your app must be deployed again for other users to have access to your function. Read more.--component-id
, --source
, and --trace-id
for slack activity
command. Read more.cache_error
bug that affected some users when using slack run
.slack login
without errors.