# Has the default settings.js file changed? Tools for working it out

**URL:** <https://discourse.nodered.org/t/has-the-default-settings-js-file-changed-tools-for-working-it-out/100703>\
**Category:** Share Your Projects\
**Tags:** tools\
**Created:** [1 April 2026 18:48 UTC](https://discourse.nodered.org/t/has-the-default-settings-js-file-changed-tools-for-working-it-out/100703 "2026-04-01T18:48:52Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![TotallyInformation](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/totallyinformation/32/31_2.png) [@TotallyInformation](https://discourse.nodered.org/u/TotallyInformation)\
**Post date:** [1 April 2026 18:48 UTC](https://discourse.nodered.org/t/has-the-default-settings-js-file-changed-tools-for-working-it-out/100703/1 "2026-04-01T18:48:52Z")

</div>

Here is something I've been meaning to do for a long time.

If you've had Node-RED installed for a while, it can be tricky to know if you are missing some new or changed settings for it. So I've written some small tools to work out if something has changed and if so, what.

Here is a summary from 1 of the tools - showing whether the default settings.js has changed between one version and the previous. Going back to version 3.0.0 (plus a couple of extras):

```auto
Found 40 settings file(s), checking each against the previous version:

v4.1.8 (settings-default-v4.1.8.js): [baseline]
v4.1.7 (settings-default-v4.1.7.js): same
v4.1.6 (settings-default-v4.1.6.js): same
v4.1.5 (settings-default-v4.1.5.js): same
v4.1.4 (settings-default-v4.1.4.js): same
v4.1.3 (settings-default-v4.1.3.js): same
v4.1.2 (settings-default-v4.1.2.js): same
v4.1.1 (settings-default-v4.1.1.js): same
v4.1.0 (settings-default-v4.1.0.js): same
v4.0.9 (settings-default-v4.0.9.js): DIFFERENT
v4.0.8 (settings-default-v4.0.8.js): same
v4.0.7 (settings-default-v4.0.7.js): same
v4.0.6 (settings-default-v4.0.6.js): same
v4.0.5 (settings-default-v4.0.5.js): same
v4.0.4 (settings-default-v4.0.4.js): same
v4.0.3 (settings-default-v4.0.3.js): same
v4.0.2 (settings-default-v4.0.2.js): same
v4.0.1 (settings-default-v4.0.1.js): same
v4.0.0 (settings-default-v4.0.0.js): same
v3.1.15 (settings-default-v3.1.15.js): DIFFERENT
v3.1.14 (settings-default-v3.1.14.js): same
v3.1.13 (settings-default-v3.1.13.js): same
v3.1.12 (settings-default-v3.1.12.js): same
v3.1.11 (settings-default-v3.1.11.js): same
v3.1.10 (settings-default-v3.1.10.js): same
v3.1.9 (settings-default-v3.1.9.js): same
v3.1.8 (settings-default-v3.1.8.js): same
v3.1.7 (settings-default-v3.1.7.js): same
v3.1.6 (settings-default-v3.1.6.js): same
v3.1.5 (settings-default-v3.1.5.js): same
v3.1.4 (settings-default-v3.1.4.js): same
v3.1.3 (settings-default-v3.1.3.js): same
v3.1.2 (settings-default-v3.1.2.js): same
v3.1.1 (settings-default-v3.1.1.js): same
v3.1.0 (settings-default-v3.1.0.js): same
v3.0.2 (settings-default-v3.0.2.js): DIFFERENT
v3.0.1 (settings-default-v3.0.1.js): DIFFERENT
v3.0.0 (settings-default-v3.0.0.js): same
v2.2.3 (settings-default-v2.2.3.js): DIFFERENT
v1.3.7 (settings-default-v1.3.7.js): DIFFERENT

```

The download-settings.from-tags.mjs file does this & it pulls all of the files from GitHub.

There is also a `get-and-compare-settings.mjs` which compares your installed version against the current latest. It also pulls the default settings.js from your local install AND, it opens vscode with a diff between your installed version and the version you've previously saved. That also runs the comparison of any downloaded files:

```auto
Installed node-red version: 4.1.5
Latest node-red version . : 4.1.8
A newer version of node-red is available. Consider updating to the latest version.

Settings file for installed version (4.1.5) exists: settings-default-v4.1.5.js
Found 37 settings file(s), checking each against the previous version:

v4.1.5 (settings-default-v4.1.5.js): [baseline]
v4.1.4 (settings-default-v4.1.4.js): same
v4.1.3 (settings-default-v4.1.3.js): same
v4.1.2 (settings-default-v4.1.2.js): same
v4.1.1 (settings-default-v4.1.1.js): same
v4.1.0 (settings-default-v4.1.0.js): same
v4.0.9 (settings-default-v4.0.9.js): DIFFERENT
...

```

The part that opens the diff in vscode is actually in a separate module, `diff-versions` which you can run as a script as well. This lets you diff between any 2 versions.

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/e/d/ed69cf9daf3d7a0de092b55bb1ccf4f873c27f3b.png)

All of the scripts are somewhat dependent on the way I've got my dev machine set up but if there is interest, I could make them available.

---

<div class="post-metadata">

**Author:** ![mudwalker](https://avatars.discourse-cdn.com/v4/letter/m/47e85d/32.png) [@mudwalker](https://discourse.nodered.org/u/mudwalker)\
**Post date:** [2 April 2026 15:40 UTC](https://discourse.nodered.org/t/has-the-default-settings-js-file-changed-tools-for-working-it-out/100703/2 "2026-04-02T15:40:01Z")

</div>

I think that `settings.js` is a file avoided by the less confident users of NR amongst us (or it might just be me!). I am of the opinion that any update of NR that flags a difference between the new file and my old one, as long as NR is running OK, it can stay as it is.

So yes, it would be might be good to have a way that we can see these differences at our leisure, rather in the midst of an install.

---

<div class="post-metadata">

**Author:** ![TotallyInformation](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/totallyinformation/32/31_2.png) [@TotallyInformation](https://discourse.nodered.org/u/TotallyInformation)\
**Post date:** [2 April 2026 16:54 UTC](https://discourse.nodered.org/t/has-the-default-settings-js-file-changed-tools-for-working-it-out/100703/3 "2026-04-02T16:54:33Z")

</div>

> [@mudwalker](#):
>
> So yes, it would be might be good to have a way that we can see these differences at our leisure, rather in the midst of an install.

Maybe I'll just update this thread after new releases. Might be the simplest way. 😃

My alternate installer has a sample enhanced example settings.js file which is why I was particularly interested in looking at this - so that I can keep it current.

---

<div class="post-metadata">

**Author:** ![dougle03](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dougle03/32/32979_2.png) [@dougle03](https://discourse.nodered.org/u/dougle03)\
**Post date:** [4 April 2026 07:41 UTC](https://discourse.nodered.org/t/has-the-default-settings-js-file-changed-tools-for-working-it-out/100703/4 "2026-04-04T07:41:50Z")

</div>

Has anyone made a GUI for settings.js?  
There is power in them settings, but like most users, almost every time I play with it, I break it.  
The point of NodeRed is no or low code automation, seems odd to me that the system comes with a powerful settings file that will easily break if you get any of the syntax wrong...  
If I could write code I'd probably not need NodeRed.... Feels like a hangover from a time when NodeRed was really just a handy GUI to an internal IBM automation engine (Which of course it is/was)...

I think there is now a strong argument for settings.js to become part of the UI in the editor. Or perhaps a standalone application, with a very simplified settings.yaml carrying only minimal elements that should not be available from the GUI.  
Pete

---

<div class="post-metadata">

**Author:** ![TotallyInformation](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/totallyinformation/32/31_2.png) [@TotallyInformation](https://discourse.nodered.org/u/TotallyInformation)\
**Post date:** [4 April 2026 08:41 UTC](https://discourse.nodered.org/t/has-the-default-settings-js-file-changed-tools-for-working-it-out/100703/5 "2026-04-04T08:41:50Z")

</div>

> [@dougle03](#):
>
> Has anyone made a GUI for settings.js?

Great question. No, I don't believe so.

I'll give it some thought though, it should be possible but I suspect quite complex.

> [@dougle03](#):
>
> strong argument for settings.js to become part of the UI

The main reason for keeping it separate is that it contains things that _will_ break Node-RED easily. But perhaps more importantly, it contains security settings that should not necessarily be exposed to flow authors.

---

<div class="post-metadata">

**Author:** ![dougle03](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dougle03/32/32979_2.png) [@dougle03](https://discourse.nodered.org/u/dougle03)\
**Post date:** [4 April 2026 10:21 UTC](https://discourse.nodered.org/t/has-the-default-settings-js-file-changed-tools-for-working-it-out/100703/6 "2026-04-04T10:21:12Z")

</div>

> [@TotallyInformation](#):
>
> it contains security settings that should not necessarily be exposed to flow authors.

Indeed, which is why I mentioned keeping a very slim settings.yaml just for those items that really should not be accessible from the UI

---

<div class="post-metadata">

**Author:** ![dceejay](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dceejay/32/38_2.png) [@dceejay](https://discourse.nodered.org/u/dceejay)\
**Post date:** [4 April 2026 10:36 UTC](https://discourse.nodered.org/t/has-the-default-settings-js-file-changed-tools-for-working-it-out/100703/7 "2026-04-04T10:36:54Z")

</div>

Actually I would say the other way round. The settings.js file is actually executable which was a deliberate choice at the time to allow for greater flexibility. It also allows for comments, which a .json file doesn't (yes I know a yaml file can have comments - but if edited via a UI then :shrug:).

So if we were to split them then I would keep all the non-expose stuff in the .js file and only put ui things in .json or .yaml. Downsides of that is that there are now two places to edit things - in two different styles (.js and .json or .yaml) which I think is even more non-friendly than just one place. Also we then have to decide what to expose where - I mean do I really want things like TCP connection timeouts which not exactly a security thing cluttering up the UI ?

---

<div class="post-metadata">

**Author:** ![dougle03](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dougle03/32/32979_2.png) [@dougle03](https://discourse.nodered.org/u/dougle03)\
**Post date:** [4 April 2026 12:19 UTC](https://discourse.nodered.org/t/has-the-default-settings-js-file-changed-tools-for-working-it-out/100703/8 "2026-04-04T12:19:21Z")

</div>

Ok, so perhaps it just needs a friendly UI to edit the settings.js file.  
One that's not bothered about script syntax and indenting etc...  
Certainly many elements should be in the main NR UI like themes, node list order, context settings ect...  
I agree that some settings should never be exposed via the main UI, but there is a lot that could be perhaps?

---

<div class="post-metadata">

**Author:** ![dceejay](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dceejay/32/38_2.png) [@dceejay](https://discourse.nodered.org/u/dceejay)\
**Post date:** [4 April 2026 14:29 UTC](https://discourse.nodered.org/t/has-the-default-settings-js-file-changed-tools-for-working-it-out/100703/9 "2026-04-04T14:29:09Z")

</div>

As it happens I have been looking at trying to create a merge tool that will try to merge any new settings into an existing settings file and it's not too bad if you've only made simple changes and the layout is mostly the same - but struggles if things have been moved all over the place - but it does have a diff mode and a dry-run mode. Obviously I'd like to make it part of the default install/upgrade script but I don't think it is quite good enough yet.

But you are free to try it out and feedback - [linux-installers/resources/merge-settings.js at master · node-red/linux-installers · GitHub](https://github.com/node-red/linux-installers/blob/master/resources/merge-settings.js)

---

<div class="post-metadata">

**Author:** ![gerry](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gerry/32/21604_2.png) [@gerry](https://discourse.nodered.org/u/gerry)\
**Post date:** [4 April 2026 15:35 UTC](https://discourse.nodered.org/t/has-the-default-settings-js-file-changed-tools-for-working-it-out/100703/10 "2026-04-04T15:35:20Z")

</div>

Want to try this so...  
Download file to .node-red  
Run node merge-settings.js  
???

---

<div class="post-metadata">

**Author:** ![gerry](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gerry/32/21604_2.png) [@gerry](https://discourse.nodered.org/u/gerry)\
**Post date:** [4 April 2026 15:44 UTC](https://discourse.nodered.org/t/has-the-default-settings-js-file-changed-tools-for-working-it-out/100703/11 "2026-04-04T15:44:15Z")

</div>

downloaded and played around but here's my problem. This wants to merge old and new files and I don't have a copy of the new original unaltered settings.js file, all mine are modified. Any chance you could post a copy of a virgin settings.js file?  
Thanks

---

<div class="post-metadata">

**Author:** ![dceejay](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dceejay/32/38_2.png) [@dceejay](https://discourse.nodered.org/u/dceejay)\
**Post date:** [4 April 2026 15:57 UTC](https://discourse.nodered.org/t/has-the-default-settings-js-file-changed-tools-for-working-it-out/100703/12 "2026-04-04T15:57:21Z")

</div>

Default one is here - [node-red/packages/node\_modules/node-red/settings.js at master · node-red/node-red · GitHub](https://github.com/node-red/node-red/blob/master/packages/node_modules/node-red/settings.js)

and yes it has some changes in that most won't have 🙂 - yet

---

<div class="post-metadata">

**Author:** ![TotallyInformation](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/totallyinformation/32/31_2.png) [@TotallyInformation](https://discourse.nodered.org/u/TotallyInformation)\
**Post date:** [4 April 2026 17:19 UTC](https://discourse.nodered.org/t/has-the-default-settings-js-file-changed-tools-for-working-it-out/100703/13 "2026-04-04T17:19:37Z")

</div>

> [@gerry](#):
>
> This wants to merge old and new files and I don't have a copy of the new original unaltered settings.js file, all mine are modified. Any chance you could post a copy of a virgin settings.js file?

Urm, my tool will grab things for you. 😉

---

<div class="post-metadata">

**Author:** ![TotallyInformation](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/totallyinformation/32/31_2.png) [@TotallyInformation](https://discourse.nodered.org/u/TotallyInformation)\
**Post date:** [4 April 2026 17:21 UTC](https://discourse.nodered.org/t/has-the-default-settings-js-file-changed-tools-for-working-it-out/100703/14 "2026-04-04T17:21:49Z")

</div>

> [@dceejay](#):
>
> So if we were to split them then I would keep all the non-expose stuff in the .js file

We absolutely MUST keep the .js file. It is our "safe" entry point for running things before Node-RED gets started. I have a number of things in mine that check memory usage and pass some system variables into Node-RED.

Then of course, we mustn't forget those people who embed Node-RED into an existing or other Node.js app.

---

<div class="post-metadata">

**Author:** ![gerry](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gerry/32/21604_2.png) [@gerry](https://discourse.nodered.org/u/gerry)\
**Post date:** [4 April 2026 17:35 UTC](https://discourse.nodered.org/t/has-the-default-settings-js-file-changed-tools-for-working-it-out/100703/15 "2026-04-04T17:35:10Z")

</div>

@TotallyInformation reread thread and I'm sorry but I just don't get your tools or how to run them. @dceejay seems pretty straightforward so , sorry but that's the direction I went,

---

<div class="post-metadata">

**Author:** ![TotallyInformation](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/totallyinformation/32/31_2.png) [@TotallyInformation](https://discourse.nodered.org/u/TotallyInformation)\
**Post date:** [4 April 2026 18:09 UTC](https://discourse.nodered.org/t/has-the-default-settings-js-file-changed-tools-for-working-it-out/100703/16 "2026-04-04T18:09:35Z")

</div>

> [@dougle03](#):
>
> settings.yaml

Personally, I would be against that. It's just another complexity that brings no benefit to most people. The .js file isn't hard to edit, especially since the comments were expanded.

> [@gerry](#):
>
> I'm sorry but I just don't get your tools or how to run them

No worries, I was just reminding people where this thread started - it has somewhat drifted since then 😃

---

<div class="post-metadata">

**Author:** ![gerry](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gerry/32/21604_2.png) [@gerry](https://discourse.nodered.org/u/gerry)\
**Post date:** [4 April 2026 18:47 UTC](https://discourse.nodered.org/t/has-the-default-settings-js-file-changed-tools-for-working-it-out/100703/17 "2026-04-04T18:47:22Z")

</div>

This has drifted off course but for the record it wasn't me.

---

<div class="post-metadata">

**Author:** ![striper](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/striper/32/81114_2.png) [@striper](https://discourse.nodered.org/u/striper)\
**Post date:** [5 April 2026 06:17 UTC](https://discourse.nodered.org/t/has-the-default-settings-js-file-changed-tools-for-working-it-out/100703/18 "2026-04-05T06:17:20Z")

</div>

In addition, Github is also useful to list all commits that have been done to settings.js and inspect the changes:

> **[History for packages/node\_modules/node-red/settings.js - node-red/node-red](https://github.com/node-red/node-red/commits/master/packages/node_modules/node-red/settings.js)**
>
> Low-code programming for event-driven applications - History for packages/node\_modules/node-red/settings.js - node-red/node-red

Via this method, I found your [recent commit](https://github.com/node-red/node-red/commit/2ec26dc31d0cc6d43d08e5debb200f656a589dbb#diff-2d41b29f642358bd960d10dfb88f1a87c14a95da148dc68cf69cf7920739f177) that implements the very useful "nodeDefaults" 🙂

---

<div class="post-metadata">

**Author:** ![DestyNova](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/destynova/32/106092_2.png) [@DestyNova](https://discourse.nodered.org/u/DestyNova)\
**Post date:** [5 April 2026 22:23 UTC](https://discourse.nodered.org/t/has-the-default-settings-js-file-changed-tools-for-working-it-out/100703/19 "2026-04-05T22:23:17Z")

</div>

Great idea! Elixir's Phoenix framework has a similar diffing tool that lets you see what's changed in a default generated app between any two versions. Super useful.

---

<div class="post-metadata">

**Author:** ![JoW](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/jow/32/108217_2.png) [@JoW](https://discourse.nodered.org/u/JoW)\
**Post date:** [7 April 2026 08:13 UTC](https://discourse.nodered.org/t/has-the-default-settings-js-file-changed-tools-for-working-it-out/100703/20 "2026-04-07T08:13:34Z")

</div>

In docker, I mapped /data/settings.js to a custom file, and encapsulated the original located in /usr/src/node-red/node\_modules/node-red/settings.js

```auto
// the default settings.
var mySettings = require('/usr/src/node-red/node_modules/node-red/settings.js')

mySettings.contextStorage = {
    default: 'memoryOnly',
    memoryOnly: { module: 'memory' },
    file: { module: 'localfilesystem' }
};
module.exports = mySettings;

```

This allows for customizations to settings.js to survive node-RED upgrades, as long as they are not conflicting with the new versions.
