In 2022, Slack launched a new development platform using the Deno runtime, to provide developers a more modular, composable, and secure way to build Slack apps. Learn how Deno helped save Slack's platform engineering team months of development with its simple, modern, all-in-one JavaScript runtime.
The challenge
Slack launched its first developer platform in 2015, and it was such a success that it brought “chatbots” into the mainstream. (It even led to the creation of a new, buzzy, albeit temporary VC investment category.) By 2020, this platform saw millions of active developers each week.
However, developers voiced friction points around having to rebuild each Slack app from scratch, which required sifting through a lot of config and boilerplate. Developers also expressed concerns around needing to deliver apps with enterprise-grade security, a requirement that most web developers hadn’t had to meet prior.
To solve this, Slack’s platform team considered building a home grown runtime to offer a modern, easy-to-use, and secure JavaScript development experience, which would take months. Fortunately, they came across Deno, a secure-by-default, performant, JavaScript and TypeScript runtime, which would become the basis of running customer code in their new development platform.
The solution
Slack chose to use the Deno runtime in their next generation platform for the following reasons:
Ease of getting started: Deno offers native TypeScript support and web standards APIs in a portable, self-executable binary
Security: Deno is secure-by-default, offering developers the ability to create enterprise-grade security from the start
Performant: Deno, built with V8 and Rust, is optimized for running complex JavaScript and TypeScript applications
Slack recognized developer ergonomics as paramount to the success of their next generation platform. TypeScript, which is emerging as an industry standard for improving JavaScript development and built right into Deno, offers Slack’s developers a familiar path forward for building apps that are easier to scale and manage. Additionally, Deno being a portable self-executable binary meant Slack could include it in its install script to further simplify local development.
“Working with Deno was a natural choice since we’ve been able to address [developer productivity] head on,” Jim Ray says. The modular architecture also saw the creation of new resources for developers to quickly dive in and be productive.
Slack’s enterprise focus means apps also must have enterprise-level security, but without sacrificing productivity. Deno’s secure-by-default permissions model gave Slack confidence in running third-party untrusted code on their infrastructure. It also gave Slack admins visibility into the API calls their apps are making via the outgoing domains permission. “What stood out first and foremost to our team was their laser focus on security,” Jim Ray says. “We know this definitely makes Slack admins happy — they can let developers do what they do best, while also relying on built-in guardrails to protect their data.”
Integrating Deno’s runtime into Slack’s new development platform was straightforward. Building with Deno saved Slack’s platform engineering team months of having to build it in house and allowed them to onboard their developers sooner. “We firmly believe it’s our responsibility to ensure whatever developers build on top of is set at a high bar and secure by design,” says Jim Ray.