Theia – VS Code in the Cloud

Wed Dec 06 2017 by Sven Efftinge

… that supports native desktop apps through Electron, too.

VS Code is an awesome development tool. It comes with the right balance of simplicity and feature depth. The quality is really high and it performs very well in all situations. Even die-hard Emacs fans are convinced. As VS Code is mostly implemented in TypeScript you would assume that you can run it in browsers connecting to remote workspaces running in containers. Unfortunately, it wasn’t designed for that. The underlying architecture is really not made for a remote connection between the backend node processes and the frontend (renderer process), as the communication is very chatty and fine-grained. Providing an awesome IDE for workspaces running in containers is, however, something we needed. And because the available cloud IDEs were disappointing we started Theia.

Theia Screenshot

Besides the support for a browser IDE, we also wanted to allow extension developers to build feature-rich extensions. So unlike VS Code, where only a limited set of functionality is exposed to extension developers, Theia itself is a collection of extensions. In other words, extensions are first-class citizens and they have access to everything the core packages have (as they are extensions, too). Besides those two design goals, Theia is in many ways similar to VS Code and it is reusing many parts, like the Monaco editor, the language server protocol or the quick open widget (command palette, etc.).

Theia BETA is out

Today we have reached an important milestone and published a new version (v0.3.0) to Theia offers the following features already:

  • Extension System
  • Navigator
  • Editor (monaco)
  • Terminal (xterm.js)
  • Flexible Layout (through phosphor.js)
  • Full! Language Server Protocol Support (diagnostics, completion, etc. for 50+ languages)
  • Language Extensions for TypeScript, JavaScript, Java, Python, YANG, DSLs etc.
  • Outline View
  • Problem Marker View
  • Git Staging View
  • Command Palette
  • Command and Keybinding Registries
  • Theming
  • Layout Restoration
  • Find File
  • Find Global Symbol
  • many more

It is best to try out yourself, which you can easily do if you have Docker on your machine: docker run -it -p 3000:3000 -v "$(pwd):/home/project:cached" theiaide/theia The Docker Hub organization currently hosts two images, but more configurations will be added over time. And you are invited to contribute your own, just as IBM did last week with the Java image.

Next Steps

We are in the process of finalizing our plans for the next months. While Theia is in a good shape to start diving into it, there are some features missing. We will come up with a more concrete plan in the coming days/weeks, but it will include support for debugging, launching tasks and better support for Git among others. The activity on Theia is very promising, as you can see on Github.

Github Activity

Besides Ericsson and TypeFox, who are both more committed than ever, we are having conversations with three other larger corporations who use Theia for building products and who are willing to join and contribute back. In addition, people show up every other day trying Theia or expressing their excitement:


And we are excited, too! :) During the next months we will focus on adding missing features, fix bugs, sorting out rough edges and taking care of performance improvements. But we will also be very happy to help you picking up and getting into Theia. It’s ready for that! Get in touch on Github or Gitter (or simply leave a comment below).

Read More