Tue, Mar 9, 2021Replit Dotcom
tl;dr In the next few days, we'll be moving domains from "repl.it" to "replit.com." Nothing is required on your end -- all urls will automatically redirect and you'll remain logged-in (as if by magic). Nothing else changes. We prefer if people referred to us as "Replit" (pronounced rep-lit 🔥). To understand the origins of our name and how we got here, it's useful to tell you the Replit genesis story: Back in university, where I was studying Computer Science, I had to set up a development environment for every subject on each computer I wanted to use to work on homework. Whether it was object-oriented programming in Java, Data Structures in C++, or Operating Systems in C, they all had their unique setup process complete with gigabytes worth of IDEs, system dependencies, and packages to download. Even worse, IT admins locked down some computer labs at school, and you had to chase them down to install software. Still worse, sharing code was a nightmare. You had to email files around, and more often than not, they didn't run on the professor or other student's machines because of versioning issues. Around the same time, we saw giant leaps in browser and web technologies. Inspired by Google Docs, I had an idea: Why not write and run code in the browser. Make it extremely easy to share code in a reproducible environment. Another inspiration for such a system was a cloud portable Virtual Machine where you wrote code and shared the entire machine that could be cloned by others. Another mental model useful for inventing what became Replit was REPLs—inspired by Paul Graham's Lisp essays, SICP, and Scheme—I thought a REPL was the easiest way to spin up an environment to learn to program. After years of work, in 2011 we had a prototype, which we initially called "JSRepl".
Mon, Mar 8, 2021Introducing Threads: Have Conversations Around Code
A few months ago, we announced Annotations for our education users, a feature which lets Replit collaborators highlight code and discuss it in context. As classrooms were remote, Annotations became a major part of our teachers' workflow. Over a 100,000 annotations have been created since its launch. Students have used it to ask questions and clear doubts. Teachers have used it to provide feedback, and help students debug issues with their code. We've learnt a lot from them. And now, we're building Threads to make the experience complete. As repls have become more powerful, the way people use them has evolved.
Thu, Feb 25, 2021HTTPS by default
The easiest, fastest way to put a server on the internet should also come with secure defaults. That's why we're excited to announce that Replit is now HTTPS-first, which brings additional privacy, integrity, and security benefits to servers hosted on our platform. This applies to every HTTP server repl on Replit. HTTPS-first Our hosting infrastructure makes it easy for anyone to instantly have a secure, HTTPS-secured server by default without having to lift a finger. Any repl can open up a port and we'll automatically give it a publicly-accessible URL. Routing requests from the internet through to individual repls is handled by a component of our infrastructure we call the proxy.
Mon, Feb 8, 2021Hosting Apps with Always On
Today we're excited to announce that Always On repls are available to all hackers! Anyone with Hacker plan can choose up to 5 repls and keep them running all the time. Users with a free plan can access Always On power ups using Cycles! With Always On, you can for example spin up and host an app like a Discord bot in 30 seconds: As a reminder, Replit gives you most of what you need to rapidly build and ship apps in the cloud -- at lightning speed: A blazing fast online IDE Automatic Package Management Automatic hosting
Wed, Feb 3, 2021Introducing Spotlight pages
Replit has never been just about code. It's also about the stories we tell, the apps and games we build, and how we collaborate. It's a part of Replit's DNA to make our community baked into the experience of learning and making. Today, we're announcing Spotlight pages: a new way to showcase your repls to the world. Whenever you visit someone else's repl, you'll see its Spotlight page where you can play with the repl's output, browse its code, and comment all in one place. And if you want to start a multiplayer session with someone new, you can directly request to edit their repl. Here's a demo of adding a new feature to a game using the Kaboom framework on Replit.
Fri, Jan 29, 2021Rails in 30 seconds
Philosophically, Replit and Rails are incredibly aligned. We both exist to remove excessive configuration and complexity that stands in the way of building things. However, for a long time, it bothered me that Replit didn't work well with Rails because we focus on small and lightweight projects. Recently, our infrastructure has gotten much more powerful, and I decided to give Rails another spin. It turns out it's not only possible to do Rails on Replit; it's quite a delightful experience. It takes less than 30 seconds from starting a project to seeing the welcome screen: There is no magic under the hood. You can view the template here. I merely followed the getting started guide on the rails site and had to do only a couple of modifications to make the development website show up in the iframe on Replit (detailed in the readme file). Give it a spin, and let me know what you think!
Fri, Jan 15, 2021Native Graphics Love ❤️
We have reimagined the native graphics experience on Replit. Our community of educators and hackers have given us immense feedback on graphics performance and reliability. Yes, It Runs DOOM! Our engineers have built a native graphics experience that is faster, more reliable, and elegant. Games and other native GUI applications launch quickly and reliably on our platform. Common issues like applications not launching and window resizing have been fixed. Among our most popular use cases is Pygame for beginner game programming and Java Swing for AP CSA students. Engineering behind the scenes Before we take a peek behind the curtain, let's look at a very high-level view ofhow graphics work in practice. Like many Linux systems, Repl.it uses the X Windows System to display graphics. The X Windows System is natively a network-ready system: so there is one process that directly interacts with the hardware (the server), which doesn't need to be the on same machine where the program (the client) is being run. Nowadays, the networking capabilities of X are rarely used, since many optimizations rely on the fact that both the server and client processes run on the same machine and are able to share memory between them cheaply, to avoid having to move around massive amounts of graphics data through a narrow networking pipe. In order to support being able to view and interact with graphical user interfaces remotely other techologies are used, like VNC. And just for completeness' sake, X is not the only solution for graphics in Linux, and Wayland is slowly becoming the alternative of choice for X. Android users will be more familiar with SurfaceFlinger.
Mon, Dec 28, 2020Tabbed Shell
Among the many things that makes Repl.it special is our ability to provide free compute to millions of users. We've built a platform that not only lets you write and run code, but also gives you access to a Linux container through which you can execute arbitrarily complex commands. Despite being such a powerful feature, we haven't done a great job of exposing that capability to its fullest. Today, we're excited to announce that we're rolling out a redesign of the shell as a separate tab next to the console. Although we've already had a shell, this new redesign helps make it a more integral part of the experience in a repl. Here's what it looks like: Now it'll be easier than ever to switch between viewing your program's output in the console and executing bash commands in the shell. This will also greatly benefit beginners that are new to Linux since it will expose them to an easy to use shell that they can play around with in any repl. Note that you can still use the existing keyboard shortcut (Cmd/Ctrl + Shift + S) to open and focus the shell in addition to the new tab UI. If you have any comments or feedback, please let us know on Canny. We'd love to hear it!
Tue, Nov 3, 2020reCAPTCHA and the anonymous experience
When we started Repl.it, we set out to remove all friction from getting started with programming. That also meant getting out of the way and letting you code as quickly as possible. As part of that, and for a long time, you could start coding on Repl.it without a user account. We anticipated that giving free unfettered compute to the universe would be challenging. Still we didn't flinch and made it a point to innovate on sandboxing, security, and anti-abuse tools, and we've been largely successful at that. Today, Repl.it the largest open compute platform on the internet, one where you don't need a credit card or even an account to start executing. We run 150,000 concurrent containers, which is 10x what we used to run last year. We have our fair share of war stories, like when we had to battle dark-web hackers trying to sell DDoS attacks from our site for Bitcoin. Luckily reCAPTCHA from Google was a massive help, protecting against botting made it possible for us to continue to grow and offer our services for free. Sadly, earlier this year, Google surprised us that they're going to be charging for reCAPTCHA. Of course, it makes business sense for them, but for a startup like ours, operating at the scale we operate at, it meant that we have to pay them more than we make in monthly revenue[1]. That leaves us with two choices: leave the site vulnerable to botting and attacks resulting in an immense amount of time spent fighting abuse and risking outages
Sun, Sep 13, 2020A database for every repl
Repl.it is already the best place to build your apps. But there was a missing piece: where do you store your data? We’re introducing Repl.it Database: a fast, free, and easy key-value store that’s built into every repl.[](preview end) All you have to do is import one of our packages for Python, Node.js, or Go, and you can instantly start setting keys in your database. Because Database is built-in, there is no setup, provisioning, or configuration. It's the fastest and easiest way to store data on Repl.it.
Wed, Aug 26, 2020CLUI Command bar and Search
One of the challenges of adding new functionality to any interface is balancing discoverability with visual clutter. We've written before about how a universal command bar can be a great way to expose features without overloading the UI with buttons. This pattern already works well for us in our mobile interface, so now we're bringing it to desktop! Here's a demo of what it looks like: The new command bar replaces our old shortcuts and file switcher modal. Just like before, you can use keyboard shortcuts (Cmd/Ctrl + P to switch files, Cmd/Ctrl + K to bring up all the options, etc) to interact with it. As we add more commands, power users will be able to have a keyboard centric experience while beginners can learn about features by exploring the different options. Among the new features introduced in the updated command bar is Search! Search indexes the contents of every file in your project (with the exception of hidden files such as node_modules and anything in your .gitignore) and allows you to see every instance of a query across every file in your repl. From there, you can scroll through the results, see which line and file they appear in, and select a result to navigate directly to that line in the code like so:
Tue, Jul 28, 2020Shareable Computing
This is a guest blogpost by GPT-3, the new AI software from OpenAI. We only gave it the title and "Repl.it" and it generated the following post for us For a while, I wondered why it's so hard to share code. Surely sharing webpages is easy, since you can link to them with a URL. But webpages are static. They're basically just text files. Their content never changes, so there's no reason to try to sync it. What changed my mind was the birth of "repl" programming. With repl, you type your program into a text box, press a button, and it runs immediately. A second text box shows its output. Repl turns programming into an activity like writing prose, in which you revise continuously, as many times as you like, and always with access to the latest version. I used to write my first drafts on paper, and then rewrite them in Word, or Google Docs. But repl turns code into the equivalent of a first draft. At first, repl was strictly for "quick-and-dirty" programming. But now that it's become popular, more and more people use it for serious coding. And repl is inherently more social than code sharing has ever been. Even if you're the only person in the world working on a particular program, you can invite your friends to code with you by sharing your repl, and anyone can see the source code.
Sun, Jul 26, 2020Emmet support
Emmet is a plugin for many popular text editors which greatly improves HTML & CSS workflow, it's also one that's been requested by many of our users. It works for both HTML and CSS and you can use emmet in any repl as long as you're editing an HTML or CSS file. Please check the Emmet docs to learn more about it, and give it a spin by starting a new HTML repl and let us know what you think.
Wed, Jul 1, 2020Multitabs
Repl.it is a great place for prototyping ideas and starting new projects. However as your projects get bigger, the editing experience starts feeling a little limited. That's why we're exciting to announce that we're adding support for tabs! With the new multitab layout, you can open files in new tabs so that you can quickly switch back to them later. There are a few ways of opening a file in a new tab: Ctrl + Click (or Cmd + Click on MacOS) the file in the filetree Drag the file from the filetree directly onto the header or onto an open tab in the header Right click on the file and hit "Open tab" in the menu
Thu, May 21, 2020Share where you are in a Repl with Deeplinking
Oftentimes when we're sharing a repl with a friend we want to link them to exactly where we are in our project. Well now you can with deeplinking! Deeplinking allows you to link to any file in your repl as well as specific lines and columns within that file. You may have noticed that the URL hash now changes as you navigate throughout the different files in your project. For example, if you're in src/index.js, it should look something like this: This means that all you have to do to link to the file that you're currently in is copy the URL! This also affects your browser history so if you hit the back button it'll take you to the last file you viewed rather than away from your repl entirely. If you want more granularity in your links, you can add :line or :line:col to the end of the URL. So linking to the 5th line and 12th column in src/index.js looks like this:

