vscode.dev
Yesterday, Microsoft released vscode.dev, which is a lightweight version of Visal Studio Code that runs in the browser.
This is not the first time Visual Studio Code has been made available as a browser-based application, however, previous examples have required a dedicated server or a paid subscription (GitHub Codespaces).
vscode.dev is different as it follows a SaaS model (no dedicated server) and is available for free.
Knowing that Visual Studio Code is based on the cross-platform Electron framework, you may be questioning why anyone would need a browser-based version. I can think of two specific examples.
-
In a corporate/education environment, end-user computing can be restricted through policy, sometimes removing the ability to install software development tools locally. Ironically, these restrictions can even be applied to software developers, inhibiting their ability to work. For example, I have seen scenarios where corporate/education entities require their software development teams to use jump boxes and/or virtual desktop infrastructure, which directly impacts the developer experience and productivity.
-
Software development on low-powered systems or platforms with inherent software restrictions. For example, Google Chromebook or the Apple iPad. Although there are alternative code editors for these platforms, they rarely compete with Visual Studio Code, which at this point has become the standard.
I am most interested in the second example, specifically software development from the iPad. Over the years, I have challenged myself to use the iPad as a daily driver, specifically in the context of work. Unfortunately, software development has always been a challenge, requiring elaborate workarounds (using a Raspberry Pi).
Therefore, I hope vscode.dev is another step towards making the iPad a viable platform for software development, even if it is restricted to web technologies.
Alongside the release of vscode.dev, Microsoft published a blog post, which describes the new features and framed the target use cases. They used the positioning “Good”, “Better” and “Best”, as outlined below.
-
Good: For most programming languages, vscode.dev gives you code syntax colourisation, text-based completions, and bracket pair colourisation. Using a Tree-sitter syntax tree, we’re able to provide additional experiences such as Outline/Go to Symbol and Symbol Search for popular languages such as C/C++, C#, Java, PHP, Rust, and Go.
-
Better: The TypeScript, JavaScript, and Python experiences are all powered by language services that run natively in the browser. With these programming languages, you’ll get the “Good” experience plus rich single file completions, semantic highlighting, syntax errors, and more.
-
Best: For many “webby” languages, such as JSON, HTML, CSS, and LESS, the coding experience in vscode.dev is nearly identical to the desktop (including Markdown preview).
An important prerequisite for vscode.dev is a modern browser, specifically one that supports the File System Access API.
Unfortunately, as highlighted by the table, mobile browsers are not compatible with the File System Access API, meaning they are limited to individual file uploads/downloads or linking to a remote GitHub or Azure DevOps repository. This is not ideal, but workable in most software development scenarios.
I attempted to use vscode.dev on the iPad to update this blog (JAMstack architecture).
This use case falls between the “Better” the “Best” categories as outlined by Microsoft and I am pleased to report everything worked as designed. Visual Studio Code behaved as expected, delivering a familiar experience to the desktop application. The iPad also worked well, especially when connected to an external keyboard, such as the Apple Magic Keyboard.
However, I encountered two frustrations, specifically the previously mentioned file system access (a constant pain point with Apple iOS and iPadOS), as well as the standard Visual Studio Code keyboard shortcuts, which conflict with the browser keyboard shortcuts.
In theory, both of these challenges could be resolved via a custom browser wrapper (using a lightweight version of Chromium or if Microsoft decided to deliver specific customisations for Microsoft Edge. The use of Microsoft Edge feels like an ideal path for Microsoft, acting as a clear differentiator by exploiting the strengths of their end-to-end ecosystem (e.g. Edge + vscode.dev).
Finally, it should be noted that only a handful of the popular Visual Studio Code extensions are compatible with vscode.dev. Thankfully, this is an area I expect to improve over time.
In conclusion, vscode.dev works well! I can see it being popular within education, where the environment (policy) and/or devices (Chromebooks) have specific limitations.
Regarding the iPad, for web development, the core vscode.dev application works surprisingly well, with a few minor frustrations caused by the restrictions associated with iPadOS. I would be happy to use it today for quick updates/fixes, but the highlighted frustrations would deter me from using it as my daily driver.
With that said, vscode.dev shows great promise and I remain optimistic that the iPad will (one day) become a viable software development platform.