The new Slack platform and the features described below are in beta and under active development.
Beginner

Welcome to the world of modular Slack apps!

The newest addition to our platform is all about:

  1. Coding built-in 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 modular 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.

Modular 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.

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 modular Slack apps'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 modular 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 modular 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 modular 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
Create an app to give kudos

Learn the ropes of building a next-gen Slack app by building an app that can build up your crew.

Beginner
Create a Hello World app

Take a tour around our Hello World next-gen sample app.

Intermediate
Create a bot to welcome users

The Welcome Bot helps create, store, and send friendly welcome messages when a user joins a channel.

Intermediate
Create a GitHub issue with a workflow

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

Intermediate
Create an app to send announcements

Use TypeScript and Deno to create an announcement bot.

Advanced
Create a social app to log runs with running buddies

Log runs and view a leaderboard with stats.

Advanced
Create an approval app with workflows using Typescript and Deno

Use Typescript and Deno to build a time-off approval workflow.