All blogs / Software / engineering practice
Engineering at Slack
A deep dive into the technology behind building Slack. Written by engineers, for engineers passionate about solving complex technical problems.
Software / engineering practiceDevOps / SRE / infrastructureAI / MLTesting / QAEngineering blogs
- Posts
- 194 from 26 Jan 2016 to 14 Jul 2026
- Posting
- monthly (10 in the last year)
- Kind
- company blog
- Feed
- https://slack.engineering/feed/
2026 7
- Shipyard: How We Built Slack’s Next-Generation EC2 Platform
- Agentic Testing: Where Agents Fit in the E2E Testing Stack
- Slack AI: The Path to Multi-Cloud
- From SSH to REST: A Security-Driven Modernization of Slack’s EMR Data Pipelines
- Managing context in long-run agentic applications
- From Custom to Open: Scalable Network Probing and HTTP/3 Readiness with Prometheus
- How Slack Rebuilt Notifications 📣
2025 9
- Streamlining Security Investigations with Agents
- Android VPAT journey
- Build better software to build software better
- Advancing Our Chef Infrastructure: Safety Without Disruption
- Deploy Safety: Reducing customer impact from change
- Building Slack’s Anomaly Event Response
- Optimizing Our E2E Pipeline
- How we built enterprise search to be secure and private
- Automated Accessibility Testing at Slack
2024 19
- Migration Automation: Easing the Jenkins → GHA shift with help from AI
- Break Stuff on Purpose
- Slack Audit Logs and Anomalies
- Astra Dynamic Chunks: How We Saved by Redesigning a Key Part of Astra
- There’s No Such Thing as a Free Lunch!
- Empowering Engineers with AI
- We’re All Just Looking for Connection
- Driving a Project: Intern Edition
- Advancing Our Chef Infrastructure
- Engineering with Empathy: My Journey to Understanding the User Experience
- Unified Grid: How We Re-Architected Slack for Our Largest Customers
- Unlocking Efficiency and Performance: Navigating the Spark 3 and EMR 6 Upgrade Journey at Slack
- Proactive Measures Against Password Breaches and Cookie Hijacking
- Catching Compromised Cookies
- Advanced Rollout Techniques: Custom Strategies for Stateful Apps in Kubernetes
- Balancing Old Tricks with New Feats: AI-Powered Conversion From Enzyme to React Testing Library at Slack
- How Women Lead Data Engineering at Slack
- How We Built Slack AI To Be Secure and Private
- The Scary Thing About Automating Deploys
2023 16
- Our Journey Migrating to AWS IMDSv2
- Building Custom Animations in the Workflow Builder
- Managing Slack Connect
- The Query Strikes Again
- Unleashing Impact at Slack’s Data Engineering Internship
- Executing Cron Scripts Reliably At Scale
- My Summer Return Internship @ Slack: A Guide on Building on Past Experiences
- Traffic 101: Packets Mostly Flow
- Slack’s Migration to a Cellular Architecture
- Service Delivery Index: A Driver for Reliability
- Real-time Messaging
- Tracing Notifications
- Technology Lifecycle
- Hakana: Taking Hack Seriously
- It’s a non-transitive R class world
- What We Learned from Building GovSlack
2022 21
- How We Use Terraform At Slack
- Mobile Developer Experience at Slack
- How to Mentor Interns to Become Skillful Engineers
- A Day in the Life of a Cloud Engineer at Slack Australia
- Blocked: How to Ask For Help as an Intern
- Our Hybrid and Collaborative Summer @ Slack’s Data Eng
- Recommend API
- BuildRock: A Build Platform at Slack
- Slowing Down to Speed Up – Circuit Breakers for Slack’s CI/CD
- AutoTransform: Efficient Codebase Modification
- Remote Development at Slack
- Building Background Effects for Clips
- Scaling Slack’s Mobile Codebases: Modernization
- Continuous Load Testing
- Slack’s Incident on 2-22-22
- Handling Flaky Tests at Scale: Auto Detection & Suppression
- Scaling Slack’s Mobile Codebases: Modularization
- Applying Product Thinking to Slack’s Internal Compute Platform
- Balancing Safety and Velocity in CI/CD at Slack
- Building Self-driving Kafka clusters using open source components
- Stabilize, Modularize, Modernize: Scaling Slack’s Mobile Codebases
2021 24
- A Simple Kubernetes Admission Webhook
- Going from Coder to Slack Engineer
- The Case of the Recursive Resolvers
- Developing in the Open
- How Two Interns Are Helping Secure Millions of Lines of Code
- Building the Next Evolution of Cloud Networks at Slack – A Retrospective
- Infrastructure Observability for Changing the Spend Curve
- Behind the Scenes of Slack’s Acquisition Announcement
- The Four Agile Values and Slack
- Building Android Conversation Bubbles
- Data Lineage at Slack
- How We Design Our APIs at Slack
- Email Classification
- Extending Anvil for Fun and Profit
- Managing Focus Transitions in Slack
- How a Jenkins Job Broke our Jenkins UI
- Role Management at Slack
- Load Testing with Koi Pond
- Client Tracing: Understanding Mobile and Desktop Application Performance at Scale
- Migrating Millions of Concurrent Websockets to Envoy
- Shadow Jobs
- Slack’s Outage on January 4th 2021
- Women in Security at Slack
- A Day in the Life of a Backend Platform Engineer at Slack Pune
2020 26
- Creating a React Analytics Logging Library
- Scaling Datastores at Slack with Vitess
- Migrating Slack Airflow to Python 3 Without Disruption
- Creating a React Analytics Logging Library
- Bridging the Gap Between Slack and Email Users
- Building the Next Evolution of Cloud Networks at Slack
- The Unsuspecting Beauty & Complexity of Web Forms
- Starting an Initiative
- Tracing at Slack: Thinking in Causal Graphs
- How to Have an Impactful Internship… Virtually
- Blocking Slack Invite Spam With Machine Learning
- All Hands on Deck
- A Terrible, Horrible, No-Good, Very Bad Day at Slack
- The App Sandbox
- Scaling End-to-End User Interface Tests
- Prototyping at Slack
- A Day in the Life of a Frontend Foundations Engineer at Slack
- Happiness is… a freshly organized codebase
- Development Environments at Slack
- A Day in the Life of a Mobile Product Engineer at Slack
- Hacklang at Slack: A Better PHP
- A Day in the Life of a Backend Product Engineer at Slack
- Deploys at Slack
- How Big Technical Changes Happen at Slack
- A Day in the Life of a Frontend Product Engineer at Slack
- Reliably Upgrading Apache Airflow at Slack’s Scale
2019 21
- Introducing Nebula, the open source global overlay network from Slack
- A Day in the Life of a Backend Foundation Engineer at Slack
- Gantry: Slack’s Fast-booting Frontend Framework
- Client Consistency at Slack: Beyond Libslack
- Building Dark Mode on Desktop
- How Slack Built Shared Channels
- The Gradual Design System: How We Built Slack Kit
- Interning on Slack’s Product Security Team
- Service Workers at Slack: Our Quest for Faster Boot Times and Offline Support
- PanModal: Better support for thumb accessibility on Slack mobile
- Disasterpiece Theater: Slack’s process for approachable Chaos Engineering
- When a rewrite isn’t: rebuilding Slack on the desktop
- 🏄♀️ Surf’s Up! Preparing for Huge Waves of Traffic via Load Testing
- Chrome Tracing for Fun and Profit
- Rewriting the Slack Python SDK
- How Slack Hires a Red Team (and you can too!)
- Refactoring Backend Engineering Hiring at Slack
- Highlights from Slack’s March Growth Meetup
- Engineering dive into Slack Enterprise Key Management
- Defining a career path for Developer Relations
- How to Fail at Accessibility
2018 11
- Highlights from Slack’s August Mobile Meetup
- Re-architecting Slack’s Workspace Preferences: How to Move to an EAV Model to Support Scalability
- Unified Cross-Platform Performance Metrics
- Streamlining Your Workflow: Debugging for HHVM
- Ways we make the Slack iOS app accessible
- Moving Fast and Securing Things
- Interop’s Labyrinth: Sharing Code Between Web & Electron Apps
- Evolving the Slack API
- Keep webpack Fast: A Field Guide for Better Build Performance
- Android UI Automation: Part 2, Making It Easy
- Android UI Automation: Part 1, Building Trust
2017 21
- Scaling Slack’s Job Queue
- Growing Pains: Migrating Slack’s Desktop App to BrowserView
- Rebuilding slack.com
- LibSlack: The C++ Library at the Foundation of Our Client Application Architecture
- Localizing Slack
- Evolving API Pagination at Slack
- Maximum Warp: Building Migrations for Slack Enterprise Grid
- Technical Leadership: Getting Started
- Introducing Highlights
- Into the Clouds
- Flannel: An Application-Level Edge Cache to Make Slack Scale
- Rebuilding Slack’s Emoji Picker in React
- TypeScript at Slack
- Slack Bug Bounty: Three Years Later
- How Slack Supports Junior Engineers
- Reducing Slack’s memory footprint
- Search at Slack
- Making Slack Faster By Being Lazy: Part 2
- Weaving Threads
- Introducing Electron to the Windows Runtime
- Making Slack Faster By Being Lazy
2016 19
- Data Wrangling at Slack
- Syscall Auditing at Scale
- What matters to you, matters to us.
- Building Hybrid Applications with Electron
- Mentorship at Slack
- Taking PHP Seriously
- Personalized channel recommendations in Slack
- The Slack Internship
- Data Consistency Checks
- Getting to Slack faster with incremental boot
- Making Slack Feel Like Slack
- Calls: Is it you or is it me?
- A Walkthrough Guide to Finding an Engineering Job at Slack
- Using ES2015 with Electron — introducing electron-compile
- The Joy of Internal Tools
- Distributed Security Alerting
- How About Code Reviews?
- On Empathy & Pull Requests
- A faster, smarter Quick Switcher