diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/helium/HeliumBundleFactory.java b/zeppelin-server/src/main/java/org/apache/zeppelin/helium/HeliumBundleFactory.java
index f6e9389633f..7af9bbee789 100644
--- a/zeppelin-server/src/main/java/org/apache/zeppelin/helium/HeliumBundleFactory.java
+++ b/zeppelin-server/src/main/java/org/apache/zeppelin/helium/HeliumBundleFactory.java
@@ -70,7 +70,7 @@
*/
public class HeliumBundleFactory {
private static final Logger LOGGER = LoggerFactory.getLogger(HeliumBundleFactory.class);
- private static final String NODE_VERSION = "v16.16.0";
+ private static final String NODE_VERSION = "v22.23.4";
private static final String NPM_VERSION = "8.11.0";
private static final String YARN_VERSION = "v1.22.0";
private static final String NPM_PACKAGE_NAME = "npm";
diff --git a/zeppelin-web-angular/package-lock.json b/zeppelin-web-angular/package-lock.json
index d59bed52eec..25c0a77f693 100644
--- a/zeppelin-web-angular/package-lock.json
+++ b/zeppelin-web-angular/package-lock.json
@@ -91,7 +91,7 @@
"ws": "8.22.0"
},
"engines": {
- "node": ">=22.12.0"
+ "node": "^22.23.4 || ^24.22.1 || >=26.12.1"
}
},
"node_modules/@algolia/abtesting": {
diff --git a/zeppelin-web-angular/package.json b/zeppelin-web-angular/package.json
index 67838599f29..9f899297f9d 100644
--- a/zeppelin-web-angular/package.json
+++ b/zeppelin-web-angular/package.json
@@ -53,7 +53,7 @@
"e2e:cleanup": "npx tsx e2e/cleanup-util.ts"
},
"engines": {
- "node": ">=22.12.0"
+ "node": "^22.23.4 || ^24.22.1 || >=26.12.1"
},
"private": true,
"dependencies": {
diff --git a/zeppelin-web/.nvmrc b/zeppelin-web/.nvmrc
index 0af79149663..1a5acc8c372 100644
--- a/zeppelin-web/.nvmrc
+++ b/zeppelin-web/.nvmrc
@@ -8,4 +8,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-16.20.2
+22.23.4
diff --git a/zeppelin-web/README.md b/zeppelin-web/README.md
index 4023f14d873..ac16f370b83 100644
--- a/zeppelin-web/README.md
+++ b/zeppelin-web/README.md
@@ -6,7 +6,7 @@ This is Zeppelin's frontend project.
### Local Development
-It is recommended to install [Node.js](https://nodejs.org) v16 or use [creationix/nvm](https://github.com/creationix/nvm).
+Use the [Node.js](https://nodejs.org) version pinned in [.nvmrc](./.nvmrc) for local development. You can manage this version with [nvm](https://github.com/nvm-sh/nvm).
All build commands are described in [package.json](./package.json)
diff --git a/zeppelin-web/package-lock.json b/zeppelin-web/package-lock.json
index 78454256ea1..704ab376d03 100644
--- a/zeppelin-web/package-lock.json
+++ b/zeppelin-web/package-lock.json
@@ -125,7 +125,7 @@
"webpack-dev-server": "^4.15.2"
},
"engines": {
- "node": "~16.20.2",
+ "node": "~22.23.4",
"npm": "~8.19.4"
}
},
diff --git a/zeppelin-web/package.json b/zeppelin-web/package.json
index 484fe4a4318..17c5bdb9c36 100644
--- a/zeppelin-web/package.json
+++ b/zeppelin-web/package.json
@@ -3,7 +3,7 @@
"license": "Apache-2.0",
"version": "0.0.0",
"engines": {
- "node": "~16.20.2",
+ "node": "~22.23.4",
"npm": "~8.19.4"
},
"scripts": {
diff --git a/zeppelin-web/pom.xml b/zeppelin-web/pom.xml
index b9295680462..bc05a41f8b0 100644
--- a/zeppelin-web/pom.xml
+++ b/zeppelin-web/pom.xml
@@ -38,7 +38,7 @@
https://nodejs.org/dist/
https://registry.npmjs.org/npm/-/
- v16.20.2
+ v22.23.4
8.19.4
test