Earlier this year, a small team of engineers at Meta started working on an idea for a new app. It would have all the features people expect from a text-based conversations app, but with one very key, distinctive goal – being an app that would allow people to share their content across multiple platforms. We wanted to build a decentralized (or federated) app that would enable people to post content that is viewable by anyone on other social apps, and vice versa.
On July 5, people were greeted with a surprise when they logged into Instagram – an invitation to try a brand new app for sharing text and joining public conversations – Threads.
Five days later, over 100 million people had joined Threads, making it the most successful app launch of all time.
It took a small, nimble engineering team working alongside Meta’s infrastructure teams to take Threads from zero to 100 million people in record time with no major downtime. The story of its development and initial launch is the story of Meta’s ability to scale with speed and impact. But Threads is still evolving. We are working toward making Threads compatible with the open, interoperable social networks that we believe can shape the future of the internet – where peoples’ content exists in the fediverse and is platform-agnostic.
Planning and developing Threads
Threads was developed in an environment more akin to a startup. Creating a new app with such a small team meant assembling a group with a high level of trust – where everyone was aligned toward a singular goal and there was close alignment with our leadership, like the Head of Instagram, Adam Mosseri. People had to move fast and work independently, even as the team grew to roughly 60 engineers over the course of a few months. Daily burndown syncs, where we met to prioritize tasks, and setting monthly milestones were crucial.
Instagram uses Python (Django) for its backend. By using the same backend for Threads, we could leverage a lot of the existing tech stack for Threads and reuse most of our existing data models, business logic, security features, and server infrastructure. This also meant users could sign in to the app with their existing Instagram account, making it super simple to onboard and set up your Threads app.
The Threads mobile apps themselves were built primarily with Swift on iOS, and Jetpack Compose on Android. But building an app that needed to be ready to launch at any time, and moving on such a strict timeline, meant we had to be very intentional in determining the core set of minimum viable features the app could realistically roll out with. Features like keyword search, which rolled out to more countries today, and private messaging were put on hold for later updates, as were the decentralized features.
You also can’t go from zero to 100 million users without having an infrastructure in place that can handle that level of growth with efficiency and reliability. Threads scaled successfully to 100 million users without any major downtime thanks to Meta’s underlying infrastructure and engineering foundations, which were critical to the successful launch.
Over the years, Meta’s larger infrastructure, foundation, production, and engineering teams have already done a lot of the heavy lifting to build the infrastructure that has allowed us to scale Threads. Without this level of close collaboration we wouldn’t have been able to support scaling the app to so many people so quickly.
The Threads launch
With everything moving ahead at full speed toward a July launch, our team saw and took an opportunity to release the app early. On the upside, this meant Meta would be able to offer a new social app at a time when people were eager for a new experience. But the earlier rollout also meant challenges around reduced time to dark test and ensure distribution channels were properly configured.
Once the decision was made to launch, we set up launch rooms with teams across San Francisco, Menlo Park, New York, and London. Engineers from all parts of the Infrastructure team, the product teams, as well as on-call engineers were pulled in. At Meta, we have internal monitoring tools like ODS and Scuba that help us track important metrics that were displayed on dashboards throughout launch to monitor app health. Having tools like these in place was an important part of addressing scaling challenges that arose with the launch.
Some of the engineers on the Threads team had worked on a launch of this capacity previously, while others had not. But for the infra engineers this was just another day at the office. On the day of the launch, we had engineers, especially production engineers, that were incredible throughout the process – herding us all together and coordinating what we needed to do.
The future is decentralized
Shortly after launch, we signaled that we are taking open standards seriously with Threads by allowing people to use their Threads profile to verify their identity on supported platforms like Mastodon.
Some people aren’t familiar with the idea of the fediverse (federated universe), but, for me, the easiest analogy is to think of it like email. Let’s say someone uses Gmail and another person uses Yahoo Mail. We don’t think twice that they can send and receive emails to each other, even though one is on a Google platform and the other is on Yahoo. That’s because email is interoperable and these two companies both conform to the SMTP protocol for delivering emails. But you can’t do that today on social media. People on Instagram can’t follow other creators on Tumblr, for example.
Our goal with Threads is to make social content as interoperable as email. We are working on the ability for Threads to integrate with ActivityPub, the open, decentralized social networking protocol. Once that happens people will be able to enjoy the best features of Threads across platforms. More importantly, they’ll be able to have more control over their online social presence, regardless of any app or platform. They’ll have the ability to distribute their posts to other social media apps, and consume content from creators on other apps on Threads.
It’s all about connecting with more people and helping the world be more open.
Code wins arguments
Now that Threads is out in the world, we’ve shifted our focus to improving the product, continuing to build new features and closing the feature gaps that people expect from an app like Threads. We recently launched Threads on Web and other new feature updates have already been rolled out, including Following feed, the ability to edit alt-text, and the ability to share a Thread to Instagram DMs.
Last week, Meta announced that we began testing keyword search, which allows people to search specific keywords they’re interested in. Today, we announced we’ll start rolling out the feature in English and Spanish, in countries where most people post in these languages – such as Argentina, India, Mexico, the United Kingdom and the United States – on both mobile and web.
We could have built and designed the Threads app a million different ways. But we were able to complete the technical work for a new app in five months because we were given the freedom to operate in a completely greenfield space, where we could prototype things, test our ideas, and get internal feedback very quickly.
Code wins arguments. If we tested a feature and didn’t like it, we rebuilt it until we landed on the best version. For some surfaces, like the activity feed, we rewrote it three times before we finally landed on an implementation that felt good enough.
My ultimate hope for Threads is that it becomes the zeitgeist of the internet. It’ll be the place you go to where you want to have positive conversations about the latest cultural events. It’ll be where you want to go to see the latest conversations between creators, or between other people that you’re interested in. I really hope to see that happen over the next few months as we continue to improve the product for you all.