This article is more than 1 year old
Visual Studio Code 1.50 goes hard on extensions support, but tackling add-on bloat is becoming more onerous
Also new: WebView sidebars, rich JavaScript debugging, accessible settings
Microsoft has released version 1.50 of the world's most popular code editor, Visual Studio Code, with enhancements to core features, richer extension support, accessibility improvements, and not forgetting a build that runs on Raspberry Pi.
The VS Code team delivers an update every month like clockwork, confusingly named by the previous month, so October's release is called "September 2020". Considering the frequency of the releases, there is a lot packed into this one. Some of the highlights, include:
- VS Code now runs on Linux ARMv7 and ARM64 – including Raspberry Pi.
- Settings now work better with keyboard control, for improved accessibility and screen-reader support, though it is also an improvement for all keyboard users. The gist of this change is that instead of being mainly controlled by tabbing, arrow keys, Enter and Escape work as you would expect, as explained here.
- Pinned tabs no longer hide most of the filename by default – this was infuriating before, but developers can still set the old way if they preferred it.
- The VS Code panel – home to the terminal, problem list, output and debug console – now has options to control its state when opened, from never maximised, always maximised, or like it was last time.
- When hovering over code while debugging, there is a battle between the debug hover and the language hover, which give different tips. Now developers can hold down Alt to get the language hover, which was impossible to see before.
- JavaScript debugging has a smart auto-attach feature for Node.js code which is now fully baked rather than experimental.
- An improved Flame graph extension, perhaps inspired by the flame charts in Chrome Dev Tools, shows a graphical analysis of JavaScript and browser performance. Real-time graphical analysis works both for Node.js and code running in the browser. Developers can also capture a performance profile file, and from this, view flame charts, with a new "left-heavy" view that groups call stacks and orders them by time making it easy to see where most CPU time is spent.
The enhanced VS Code Realtime Performance chart goes nuts trying to monitor the JetStream 2 browser torture test
Much of the value of VS Code is in its extensions and the release notes for version 1.50 also mention significant improvements to extensions for remote development, such as the ability to install an extension in a remote context without restarting VS Code, and to the key GitHub Pull Requests and Issues extension, which now shows all issues and pull requests in a VS Code workspace, even when there are multiple repositories.
Improved extension support
VS Code 1.50 has also made changes to the API for extensions. A big one is an improved Webview View API. This API lets developers render a browser view within VS Code as part of the extension. The ability to embed a webview has now been extended from the editor to include the VS Code sidebar and panel as well. This means in effect that coders can create a custom user interface for an extension as well as visualising data in any way they choose. A simple example shows use of a webview in the sidebar for displaying colours based on hexadecimal values.
Microsoft is also bragging about some of its own new extensions, including the C/C++ extension now out of preview, and the Edge for VS Code extension described here, which aims to enable developers using Edge to do browser debugging from VS Code rather than having to switch from the editor to the browser developer tools. A similar tool for Chrome has existed for some time.
The VS Code Flame Chart visualises a captured performance profile showing where the code spent most of its time
VS Code is high quality, versatile, and free. Is there anything that can disrupt it? The Eclipse folk are trying with the extension-compatible Theia IDE but Microsoft's open-source editor still has all the momentum. Perhaps the biggest issue – aside, perhaps, from the lack of much-requested support for floating windows – is that with too many extensions installed, VS Code can get messy, unwieldy, and annoying.
A developer starts VS Code to be greeted by a flurry of messages from extensions demanding updates, or errors from extensions that are not even in use for a current project. Such extensions can easily be disabled and removed, but the editor is also in the habit of inviting developers to install further extensions when it thinks they might be useful, and avoiding bloat takes discipline, particularly for developers who work on projects with different languages and platforms. The VS Code Activity Bar soon fills and overflows, especially when certain extensions (Google's Cloud Code is an example) fill multiple slots.
The newly extended WebView API means extensions can now have richer UIs with more graphics and more interactivity. These are powerful features, but introduce greater risk of UI inconsistency. If anything can impede the growing popularity of VS Code, it will be when the number and sophistication of its many extensions become a burden. ®