Wed, Sep 7, 2022Ghostwriter AI & Complete Code Beta
Update: Ghostwriter is out now! In 2018 when we announced Multiplayer Mode, we said it's the most significant evolution of Replit to date. For the first time, you could share a URL with a friend, student, or coworker and get a shared text editor and runtime — no setup required. Replit Multiplayer is changing how an entire generation of programmers learn how to code and make software. Today, we're announcing Ghostwriter, which infuses state-of-the-art intelligence into nearly all IDE features. Ghostwriter sports an ML-powered pair programmer that completes your code in realtime, tools to generate, transform, and explain code, and an in-editor search utility that lets you find and import open-source code without leaving your editor (think Stackoverflow in your editor).
Thu, Sep 1, 2022My internship experience at Replit.
Hey, it’s your friendly community intern, Lily! It’s been 8 months since I became an intern at Replit, and this blog post concludes my awesome journey. How did it all start? I have been active in the Replit community for over 2 years where I used to primarily be a front-end developer and designer. I have participated in countless hackathons and community events, posted my design projects in the community, and much more. This made me kinda famous in the community! Here is the post I wrote earlier on how I got into the Replit community. Back in 2020, after 4 months of being active, one of my friends (who was also a Replit team member back then) suggested that I apply for a design role. I, of course, really wanted to work at Replit, but I wasn't sure if I was ready. It took me more than a year to gather enough confidence to finally apply for the design role in November 2021! I also knew that Replit had eyes on me for a long time because of my contributions to the community and my performance in the hackathons. After a couple of weeks, I got an email from Barron Webster (Design Lead at Replit) telling me that they hadn’t forgotten about my application. However, they had never had a Design Intern before, and they were currently working on finding the right way of bringing me in. I was told they would connect with me again at the start of 2022! In January, I got a message from Lena Vu (Community Lead) with an offer to join the Community Team at Replit. We discussed the possibilities for both Design and Community roles. I could start as a Community Intern right away, but for design, I would need to wait for the summer. I didn’t really want to wait that long, and also wanted to try something new, so, I chose to join Replit as a Community Intern, and started in January 2022! What happened during my internship?
Mon, Aug 29, 2022Welcoming Heroku Users to Replit
Last week, Heroku announced they are discontinuing their free hosting plan. We get it. Offering free hosting and compute is extremely challenging, but there are many creators globally that are unable to pay for resources. As a result, many Heroku users are moving over to Replit, and we're excited! At Replit, we believe anyone should be able to create software, and we will continue to create pathways for users to host their projects without swiping a credit card. Not only that, but we are taking it to new levels. Today, we host 1M concurrent containers and serve 10b+/month in dynamic content from apps deployed on Replit. At this scale, we are one of the largest compute providers in the world. But we're only getting started. In the coming months, we're going to radically change our hosting offering. Earlier this year, we set super ambitious goals: 10x performance and reliability 3x the nines of availability
Sun, Aug 14, 2022Ethical hacking on Replit
We’re proud to say that Replit was built by and for hackers. A hacker, as defined in an early Internet glossary, is “A person who delights in having an intimate understanding of the internal workings of a system, computers and computer networks in particular.” It’s this sense of curiosity and delight that motivates our community to grow and share their skills, and to show off their creations in our Community. The media often misuses the word “hacker” to refer only to malicious cybercriminals. While that’s not what it means, there are some “black hat” hackers who seek to spoil the experience of others. This is true on Replit and other places - such hackers use platforms to distribute spam or malware, attack third-party services, or steal resources. That’s not part of our ethos of hacking, and those activities are prohibited by our Terms of Service. With that said, the line between ethical hacking and abuse isn’t always obvious, particularly to young hackers who are just starting out. In particular, many of our users begin their programming journey on Discord, where Replit has a large community. Hacking on bots to interact with Discord’s service is a great way to learn, but some of these bots have malicious functions that aren’t allowed to be hosted on Replit. To make things a bit clearer, here are some examples of the most common violating repls that we come across on a daily basis, with explanations of why we don’t allow them. Nuke and raid bots. Bots designed to disrupt Discord servers are one of the most common violating repls that we see. Because these are used to attack third-party services, we do not allow them. Snipers and grabbers. Scripts that steal credentials or tokens from other users are not allowed. A common example of this that we see are Discord Nitro snipers or generators. There’s no such thing as “free Nitro”... even if they claim to “generate” Nitro, these scripts are actually attempting to find and steal tokens that other users have already purchased. Other examples that fall into this category include token grabbers and IP loggers. These are commonly combined with “free Nitro” or “free Robux” scams, that are designed to fool users into giving up their login tokens or IP addresses by clicking on a malicious link or scanning a malicious QR code.
Wed, Aug 10, 2022A Tale of Two Tabs
Today we're launching a long-awaited feature in the Workspace: Tabs! Yes, you can finally: Open two files side by side Open as many shells as you'd like Remove tools you don't need to use
Thu, Aug 4, 2022My Experience as a Replit Design Intern
Hi! Hi! My name is Clément, aka Bookie0, and I'm a 15 year old high school student from New York City. This summer, I had the awesome experience of being one of Replit's first Design interns! In this blog post, I'm going to talk about what I did and accomplished as well as what I've learnt during my internship. What I accomplished As an intern, you might think that my role was to just sit around all the time and observe the team do stuff – that was part of what I did, but most of the time I was actually actively working on real-world problems. So, what did I do exactly? As a designer, part of my role was to design Replit's interface: this means choosing where elements (like text, buttons, icons) are placed, the layout of a page, what colors to use, and much more.
Tue, Aug 2, 2022Zero-Click Auth For Your Apps
Picture this: you've built an arcade game on Replit. Gamers playing your game will head to the repl's cover page and click "Run". They love your game, and they send you feature requests and ideas in the comments. Now, you want to keep track of high scores and add other social features to your game. This used to be a show-stopper: there was no way to verify the API requests coming in, so your high-score feature was either easy to spoof, or simply didn't get off the ground. We're rolling out Repl Identity to solve this. Cover Page Runs When you click "Run" on a repl's cover page, we create what we call a "guest fork" in the background. For all intents and purposes, this is just like you clicked "Fork" on the repl - but it's ephemeral and gets cleaned up when you're finished running that repl. These stateless guest forks make the cover page experience work, but a side effect is that they don't have secrets and they don't share certain resources (like the Repl Database). That's good for you: a user running a guest fork can't get a shell and view all of your secrets! However, this functionality makes it hard to figure out how to authenticate a cover page run to any of your other repls that do have the secrets. An isolated Repl DB means no data sharing. No secrets means no access to APIs or authentication keys. That's made it significantly harder to build multiplayer, social, or just user-oriented experiences in applications running in the cover page, because they are so isolated. That's what Repl Identity is for.
Sun, Jul 31, 2022Template Jam 2022 — Phase 2 Winners
We are now finished calculating the winners for the second phase of the contest using a super-secret formula that measures community reception! You can check out all the phase 1 winners here, which were hand-selected by a group of judges. Phase 2 Winners—$5000 We are proud to announce the following templates as winners of the second phase of Template Jam 2022, as decided by the community! Note: we made a couple corrections as we found out a couple of the templates did not run
Wed, Jul 27, 2022Get Replit Famous
Replit wouldn't be Replit without our community. Our community is a global group of hackers, learners, educators, and entrepreneurs from all walks of life. It's extremely important to us that they have a space to share their work and collaborate with one another. Features like Search, Profiles, and Publishing were all built with the goal of making the on-platform social experience better. In the past, if someone you know shared something on Replit, it would get lost in the sea of published Repls. As our community has grown and the number of published Repls has increased, it has become increasingly difficult to discover new content and keep up with the work of your friends. This shouldn't be the case. If one of my friends publishes a cool Repl, I should know about it! Enter: Following!
Tue, Jul 26, 2022The New Game: Engaging 15M Next Generation Developers
Today, we launch partnerships with 19 companies, offering 35+ templates for Replit users to build with. The goal? Helping our community build the next-generation of projects. Let me explain. Context: The growing strength of the Replit community The Replit community is growing exponentially. As of today: +15M Replit users
Wed, Jul 20, 2022Revamping the GitHub Import Flow
Early last year, we made the announcement that our infrastructure and Repls now had Nix baked in. Just a few months ago, we announced all new Repls would be Nix-based. And today, we're happy to announce that our GitHub imports flow is now also powered by Nix! For a while now, the state of Git and GitHub integration within Replit has been a major pain point. One of the foremost problems was that while the rest of Replit jumped on the Nix train, repos imported from GitHub were still forced to use the old Bash style Repls. We hear you: it's frustrating not to have the ability to use our packager or to go through a convoluted multi-step import experience. While many other parts of Replit have been getting frequent updates and reworks, the code powering everything Git was left behind. It was thought that this change would be a rather significant and difficult change. The longer we pushed it off, the more adamant we became that we'd need to get it done right this time. We finally decided that enough was enough - we dove deep into actually resolving this. And after some changes, we very quickly realised that the problem was not nearly as scary as we thought. After some tinkering, your GitHub imports should now be faster and more intuitive than ever! Here's a side-by-side comparison of the two flows:
Thu, Jul 14, 2022Inspect your HTML/CSS/JS Repls with native DevTools
We recently launched a new Replit-native way to inspect and debug web pages you build on Replit. Whether you're learning the basics or hosting a rich application, quickly being able to inspect the console and DOM is critical to your workflow. Browsers ship with developer tools (e.g. Chrome), but they have a few shortcomings when working on Replit: Inspecting the nested webview iframe using browser DevTools can be complicated There are no solid solutions for developers working on mobile devices Some schools block access to browser DevTools Now all repls that show a webview have access to a Replit-native set of DevTools. Just click the wrench icon to bring it up:
Thu, Jul 14, 2022Kajam 2022 Winners
What’s Kajam? Kajam is Replit’s official game jam where members of our community build games, play games, and sometimes even win cash prizes for their games in the span of a single week! This year, from June 25th to July 2nd, Replit spiced things up with a grand prize of $10,000, category prizes of $5,000, and a new Crowd Pleaser prize of $1,000. The catch? The games had to meet the theme: SPICY! During the jam, participants collaborated and got help from mentors on our Discord, audiences sampled and judged the games for themselves, and some players even documented their journeys! In the end, we received over 190 awesome submissions this year, battling to win the grand prize! But only one could beat the heat. Our judges (PolyMars, CodeWithHarry Metal and Coffee, Ania Kubow, MindJoy, Tiga Wu, Lee Fleming, Vimlark) carefully reviewed each game to decide the ultimate spicy winners… This year’s winners: Most Creative - SpicyBoyTimeToShine
Tue, Jul 12, 2022Leaky UIs
Building a robust and powerful UI without compromising on simplicity is complicated, and we're always exploring solutions that alleviate that problem. A few years ago, we rewrote our workspace architecture, and Amjad gave a talk about it. We're about to add a lot of firepower to our layout system (stay tuned!), but we noticed significant shortcomings in our abstractions. This blog post will outline the flaws and how the underlying data structure hurt the interactions. To keep this post concise, I will defer the reasoning behind the UI and UX to a future post. First, let's lay down some fundamentals. We want a tiled layout system where a group of panes (a.k.a tiles) are laid on the screen next to each other, vertically and/or horizontally, without overlapping. Each pane should have another pane adjacent to it or be at the edge of the screen. The screen is finite, and pane sizes vary. People should be able to resize their panes.
Fri, Jul 8, 2022Worldwide Repls, part 1: The Control Plane
During the ReplCon 2022 keynote, we announced that we were going to geo-distribute our infrastructure so that your Repls are much faster when accessed outside of the United States. The speed of electrons / light in a medium is a fundamental speed limit. Most of our users are several thousand kilometers away from the data centers where we host Repls (currently limited to the United States), so the round trip from them to the users' homes is going to necessarily take several hundred milliseconds just to traverse the series of tubes that is the Internet. Today, we have finished the first milestone to make this a reality, and that comes with some pretty neat side-effects! The control / data plane separation Up to this point, our infrastructure was designed in a way that allows for horizontal scalability: being able to have more capacity to run Repls by adding more VMs to our infrastructure. This allows us to quickly react to having more users at certain times of day without making any code changes, and is built upon having a Load Balancer that routes requests to connect to a container using the WebSockets protocol to individual VMs in our infrastructure. Some of you might remember that we had announced global routing last year, which we achieved by having a small set of servers in Mumbai, India. That worked well during testing, but after enabling it for everybody we discovered an interesting edge case: since the Load Balancer is the component that decides where any WebSockets connection goes and we have little control over that whole process, sometimes the India servers were a bit busier than servers elsewhere and the Load Balancer decided to route a connection to the United States. But what if this was a multiplayer Repl, or a reconnect to a Repl that was already running? In those cases, the VM where the request lands performs a transparent proxy of the WebSockets connection to the VM where the Repl is actually running. So now users would have to connect to a server in the United States (which was the old "normal"), but then that server had to talk to a server in India, which added an unnecessary ~250ms worth of roundtrip to the previous behavior. We had accidentally made things slower! Sadly, we had to revert this change 😢. So back to the drawing board we go. What became obvious is that we had to make changes such that the Load Balancer was not the source of truth of where Repls are placed. Enter the Control Plane. In Networking, there is a distinction between what are called Control and Data Planes: where the Control Plane is concerned with making changes to the network to make sure that packets go to their destination in the best way possible at that moment, and the Data Plane is the part of the system that actually moves the internet packets (a.k.a. the data). There is also the Management Plane, which is analogous to the Control Plane but manages other non-networking systems. So for us, we wanted to have a Control / Data Plane separation to clearly distinguish making modifications to the shape of the system: making a Repl start / stop in a particular VM vs. the WebSockets communication between the Linux container and the Workspace. A new abstraction to build upon

