diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -198,6 +198,16 @@
 [sudo] npm install -g eslint
 ```
 
+Some repositories have a `.nvmrc` file which specifies the version of node expected.
+For example, to work in Cashtab,
+
+```
+cd bitcoin-abc/cashtab
+nvm use
+```
+
+The specified version of nodejs will be installed and used.
+
 To work on the extension, you will need `browserify`
 
 ```
diff --git a/cashtab/.nvmrc b/cashtab/.nvmrc
--- a/cashtab/.nvmrc
+++ b/cashtab/.nvmrc
@@ -1 +1 @@
-16
\ No newline at end of file
+20.11.0
diff --git a/cashtab/Dockerfile b/cashtab/Dockerfile
--- a/cashtab/Dockerfile
+++ b/cashtab/Dockerfile
@@ -3,7 +3,7 @@
 # 2) nginx stage to serve frontend assets
 
 # Stage 1
-FROM node:16-buster-slim AS builder
+FROM node:20-buster-slim AS builder
 
 # Install some dependencies before building
 RUN apt-get update && \
diff --git a/cashtab/package.json b/cashtab/package.json
--- a/cashtab/package.json
+++ b/cashtab/package.json
@@ -1,6 +1,6 @@
 {
     "name": "cashtab",
-    "version": "1.0.27",
+    "version": "1.0.28",
     "private": true,
     "scripts": {
         "start": "node scripts/start.js",