Welcome to the world of modular Slack apps!

The newest addition to our platform is all about:

  1. Using Slack functions and custom functions within workflows to encapsulate your capabilities
  2. Using the Slack CLI to develop, test, and deploy your functions and workflows
  3. Empowering users to remix and recombine your functions in Workflow Builder (in development)

Working on our next generation platform is different from traditional HTTP-based APIs. If you’ve developed for Slack before, you may notice some familiarities, but it’s different enough that we recommend you approach this platform as a beginner. Don’t forget everything you know; you’re going to need your wits about you.

Slack is an event-oriented system, and the new platform puts your integrations directly into the fabric of those events.

Whether you’re matching messages with certain criteria, monitoring state changes in an external system, executing business logic on a fixed schedule, or triggering on a unique combination of factors you carefully define, your app becomes part of the system.

Next generation building blocks

Clip art depicting a stack of multi-colored blocks, representing Slack functions Functions are the distinct actions your integration can perform, taking specific inputs and producing defined outputs.
Here we see arrows bouncing between workflow sandwiches in clip art representing workflows Workflows are a sequenced set of steps, interactions, and functions chained together.
This clip art suggests a marble culprit knocking down sandwiches arrayed like dominoes, certainly evoking how we think about triggers and you should too. Triggers are how workflows begin, whether via automation or direct user interaction.
This clip art shows what looks like a stack of miniature computer hard drives you might find on a desk in another era. This symbolizes where you can store data for functions and workflows on Slack. Datastores are secure places to stash and retrieve data you need during runtime.
This image shows a neat little box with the Slack logo on it. You can run your apps on Slack, the image seems to suggest. Run on Slack lets you optionally execute everything on Slack infrastructure, code and all.

Currently, you, the developer, are able to produce functions, workflow, and triggers programmatically. Eventually, users will be able to take each capability you offer and remix them with other functions, services, and software providers — making you a kind of platform provider yourself!

Before you begin

Whether you're an seasoned Slack developer or completely new, here's what you need to know before you can get building.

You'll need a workspace

You'll need a Slack workspace on a paid plan you can work on.

While in development, you can keep your project mostly to yourself or share it with a close collaborator. If your Slack admin cabal requires approval of app installations, they’ll need to approve what you’re building before it’ll run locally on your computer or deploy using Slack infrastructure.

Running premium workflows with custom-built functions has pricing attached to it. Learn more about the pricing model in our help center.

You'll be using TypeScript and Deno

If you don't already know TypeScript (a strongly typed evolution of Javascript) or Deno (a limited runtime environment inspired by Node.js), that's okay! Start with a template and look for the things you know and love from other languages. You can find your way through this without being an expert in either.

A compass might be helpful as you explore this new world though - consider using a code editor designed to make strongly typed languages a joy to work with. We recommend a Deno plugin for VSCode that makes discovering a sense of flow possible, without switching to documentation too often.

A next generation Slack app's capabilities are defined by its app manifest. One of the joys of defining your manifest in Typescript is leveraging the language's features to automate its creation. In other words, think of cool tricks you might want to try to make your manifest less monolithic. Our starter template shows you one way we've settled on.

We are heartily working on support for other languages and environments, including adding support to our line of Slack Bolt SDKs. Stay tuned.

You’ll spend time on the command line

From your first steps in getting started to deploying to production, you'll be interfacing with a command-line interface - available on all modern operating systems - to build next generation Slack apps. That being said, you'll find yourself switching between editing code and configuration files, running CLI commands, and using Slack itself.

One caveat (for now): the app management UI on api.slack.com/apps doesn’t support configuring next generation Slack apps.

You'll need to rethink your approach to Slack apps

We write most of the documentation with an audience of someone who's never built on Slack before in mind. Of course, if you have developed on Slack before, you're going to arrive with notions about slash commands, bot users, and OAuth.

We hope you'll approach building next generation Slack apps with a beginner's mind. We don't recommending rushing to add functions to an existing app or to recreate one first off.

Learn how to build these function-oriented, event-driven integrations from our tutorials and sample code. This way of building is new, and our Developer Relations team is excited to share what they've learned building with you.

Consider the future today

The features available today are for developers like you. The features of tomorrow expand the narrative to better include and empower everyday users. Keeping in mind how users may one day remix your functions should inform how you approach the new platform.

Metadata is a love letter to the future. Every message you put into the system that has metadata attached can potentially benefit a user or developer at a later date. Who knows how someone might want to crunch data encoded in messages, or how they might want to filter and divide a conversation's history? You can even add structured metadata to the messages your current apps are posting.

Everyone will have a remit to remix. How you design the inputs and outputs of your functions and suggest use cases with workflows will have an enormous impact on what stories are left to tell when users begin to combine functions from Slack and other apps into sequences you've never considered before.

You're a platform provider now too. If you're building with metadata and functions, that makes you a kind of API service provider and along with that you should consider what kind of governor you'll be. We provide some tools to help you manage your little fiefdom too.

Ready?

Begin with our quickstart

Then try our tutorials

Beginner
Hello World

Get started by taking a tour around our Hello World next generation Slack app.

Beginner
Give Kudos

Learn the ropes of next generation Slack apps by giving kudos to your team.

Intermediate
Welcome Bot

Create, store, and send friendly welcome messages to your teammates when they join a channel.

Intermediate
GitHub Issue

Learn how to code functions utilizing the GitHub API, all neatly sequenced in a workflow.

Intermediate
Announcement Bot

Create and post announcements to your channels.

Advanced
Virtual Running Buddies

A social app to log your running activites each week and compare your team's progress with a leaderboard and stats.

Advanced
Request Time Off

Request approval for time off with workflows using Typescript and Deno.

Advanced
Open Authorization

Access Google services in your app with OAuth2.