Which Version of Node.js Does VS Code Use to Run Extensions?

CI/CD
Jul 9, 2025
Dan Manges
Which Version of Node.js Does VS Code Use to Run Extensions?

The version of your language runtime matters. We've previously run into bugs with function signatures changing in patch versions of Node and character encoding breaking in minor versions of Node

When we built our language server and VS Code extension we wanted to determine the version of Node.js that VS Code uses to run extensions.

Looking at the VS Code Source

VS Code sets the version of Node in an .nvmrc file in their repository.

https://github.com/microsoft/vscode/blob/main/.nvmrc

The version is specified in a few other places in the repository, but it appears that they're all kept in sync.

We made sure we tested our VS Code extension against the exact same version.

We considered whether to test against older versions as well, but decided to only test against the version used by the latest release.

Following VS Code Updates

Of course, we also want to make sure we continue to follow the version when it changes. We decided to track it by using the cron feature of RWX.

We configured our cron failures to post into a Slack channel, so if the version ever changes, we'll see the failed run and can bump the version.

In the RWX run definition we:

.rwx/cron-node-version.yml
1
on:
2
cron:
3
- key: check-node-version
4
schedule: "0 7 * * 1 America/New_York"
5
init:
6
ref: ${{ event.git.sha }}
7
8
base:
9
os: ubuntu 24.04
10
tag: 1.1
11
12
tasks:
13
- key: get-latest-vscode
14
cache: false
15
run: |
16
LATEST_TAG=$(curl -s https://api.github.com/repos/microsoft/vscode/releases/latest | jq -r .tag_name)
17
echo "Latest tag is $LATEST_TAG"
18
echo "$LATEST_TAG" > $RWX_VALUES/latest-tag
19
20
- key: get-latest-version
21
run: |
22
NVMRC_URL="https://raw.githubusercontent.com/microsoft/vscode/${LATEST_VSCODE_TAG}/.nvmrc"
23
NODE_VERSION=$(curl -s "$NVMRC_URL")
24
25
echo "Latest VS Code release: $LATEST_VSCODE_TAG"
26
echo "Node.js version from .nvmrc: $NODE_VERSION"
27
echo "$NODE_VERSION" > $RWX_VALUES/node-version
28
env:
29
LATEST_VSCODE_TAG: ${{ tasks.get-latest-vscode.values.latest-tag }}
30
31
- key: code
32
call: git/clone 1.6.7
33
with:
34
repository: https://github.com/rwx-cloud/language-server.git
35
github-access-token: ${{ github['rwx-cloud'].token }}
36
ref: ${{ init.ref }}
37
38
- key: tool-versions
39
use: [code]
40
call: rwx/tool-versions 1.0.4
41
42
- key: compare-version
43
run: |
44
echo "VS Code Node version: $VSCODE_NODE_VERSION"
45
echo "Project Node version: $PROJECT_NODE_VERSION"
46
test "$VSCODE_NODE_VERSION" = "$PROJECT_NODE_VERSION"
47
env:
48
VSCODE_NODE_VERSION: ${{ tasks.get-latest-version.values.node-version }}
49
PROJECT_NODE_VERSION: ${{ tasks.tool-versions.values.nodejs }}

Run Results

Never miss an update

Get the latest releases and news about RWX and our ecosystem with our newsletter.

Share this post

Enjoyed this post? Pleas share it on your favorite social network!

Related posts

Read more on updates and advice from the RWX engineering team

See all posts
Using an MCP Server to Fix Tests that Failed on CI
CI/CD

Using an MCP Server to Fix Tests that Failed on CI

We shipped an MCP Server via the RWX CLI. Use it to have AI fix tests that failed on CI, powered by RWX tracking test failures as a semantic output.

Aug 8, 2025
Read now
tmpfs for Super Fast Writes
CI/CD

tmpfs for Super Fast Writes

To accelerate performance in high iops scenarios like an npm install, we built support for running tasks using tmpfs.

Aug 6, 2025
Read now
RWX July 2025 Recap: ARM runners, VS Code Extension, and more
CI/CD

RWX July 2025 Recap: ARM runners, VS Code Extension, and more

In July we released ARM runners, a VS Code Extension, and an option to start runs manually. Stay tuned for progress on a new way to build container images.

Aug 4, 2025
Read now