# Formalising reusable functions with autocompletion, parameter hints, click-through-navigation

**URL:** <https://discourse.nodered.org/t/formalising-reusable-functions-with-autocompletion-parameter-hints-click-through-navigation/101645>\
**Category:** Core Development\
**Created:** [15 August 2026 13:14 UTC](https://discourse.nodered.org/t/formalising-reusable-functions-with-autocompletion-parameter-hints-click-through-navigation/101645 "2026-08-15T13:14:03Z")\
**Posts on this page:** 10\
**Page:** 2

<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:** [18 August 2026 10:58 UTC](https://discourse.nodered.org/t/formalising-reusable-functions-with-autocompletion-parameter-hints-click-through-navigation/101645/21 "2026-08-18T10:58:35Z")

</div>

> [@Colin](#):
>
> export a function node that imports a module node will that module node be automatically include in the export

The answer seems to be that, at least in the test that Steve made available, the module node is NOT included in the export. Which is pretty much what I expected.

---

<div class="post-metadata">

**Author:** ![bakman2](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bakman2/32/6207_2.png) [@bakman2](https://discourse.nodered.org/u/bakman2)\
**Post date:** [18 August 2026 12:02 UTC](https://discourse.nodered.org/t/formalising-reusable-functions-with-autocompletion-parameter-hints-click-through-navigation/101645/22 "2026-08-18T12:02:24Z")

</div>

Do you have truly nothing else to do, other than seeing bears on the road?

All your concerns already exist at this moment, i am only asking for a color, icon and a rendered node in the palette, nothing different than copy/pasting a function node within the flow.

And no it is not the same as a sublow, as that requires its own scaffolding.

---

<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:** [18 August 2026 13:45 UTC](https://discourse.nodered.org/t/formalising-reusable-functions-with-autocompletion-parameter-hints-click-through-navigation/101645/23 "2026-08-18T13:45:34Z")

</div>

> [@bakman2](#):
>
> Do you have truly nothing else to do, other than seeing bears on the road?

Was much of my job for many ~~years~~ decades. And I think my posts speak for themselves in terms of positivity and warnings as needed.

> [@bakman2](#):
>
> All your concerns already exist at this moment

Indeed, but how many other people in this forum understand the issues I wonder?

Anyway, your very valid idea prompted me to look more deeply at part of Node-RED I'd made assumptions about. That in turn made me realise that there are some shortcomings in how the function node package manager is dealing with things.

> [@bakman2](#):
>
> i am only asking for a color, icon and a rendered node in the palette, nothing different than copy/pasting a function node within the flow.

The difference is in the length and complexity already present in the palette sidebar. And maybe the further exposure of a feature that currently has some limitations and that may well lead people with minimal knowledge of node.js package management to make unwarranted assumptions. Personally, I don't want more things cluttering up the palette sidebar, but that's just my view.

---

<div class="post-metadata">

**Author:** ![gdvine](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gdvine/32/101799_2.png) [@gdvine](https://discourse.nodered.org/u/gdvine)\
**Post date:** [21 August 2026 04:46 UTC](https://discourse.nodered.org/t/formalising-reusable-functions-with-autocompletion-parameter-hints-click-through-navigation/101645/24 "2026-08-21T04:46:12Z")

</div>

I'm also using a library stored in `msg` and saved to global context to get around this issue and agree that a better solution ought to be formalized in NR. Skeptical about the UX of having lib module nodes be "another type of" function node rather than their own thing.

---

<div class="post-metadata">

**Author:** ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)\
**Post date:** [21 August 2026 13:50 UTC](https://discourse.nodered.org/t/formalising-reusable-functions-with-autocompletion-parameter-hints-click-through-navigation/101645/25 "2026-08-21T13:50:11Z")

</div>

Now if we could just keep the module source in an external file the world would be a better place.

---

<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:** [21 August 2026 13:53 UTC](https://discourse.nodered.org/t/formalising-reusable-functions-with-autocompletion-parameter-hints-click-through-navigation/101645/26 "2026-08-21T13:53:29Z")

</div>

And have an official method for adding function node external modules in settings.js maybe - other than bunging them into the global context? So saving the need for any extra nodes. Though keeping that as an option as well ideally.

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [21 August 2026 16:05 UTC](https://discourse.nodered.org/t/formalising-reusable-functions-with-autocompletion-parameter-hints-click-through-navigation/101645/27 "2026-08-21T16:05:33Z")

</div>

> [@Colin](#):
>
> Now if we could just keep the module source in an external file the world would be a better place.

I am working on a plugin (side project) that connects VSCode to Node-RED over admin APIs, pulls and shows diffs, keeps local copy where you can edit functions in the IDE (with node-red completions and full references) then push back (deploy) from VSCode to Node-RED)

This gets around the extensive changes required to the RED storage that would otherwise be required.

---

<div class="post-metadata">

**Author:** ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)\
**Post date:** [21 August 2026 17:01 UTC](https://discourse.nodered.org/t/formalising-reusable-functions-with-autocompletion-parameter-hints-click-through-navigation/101645/28 "2026-08-21T17:01:11Z")

</div>

Will that allow a module to be used in multiple node red systems?

---

<div class="post-metadata">

**Author:** ![ThingsTinkerer](https://avatars.discourse-cdn.com/v4/letter/t/91b2a8/32.png) [@ThingsTinkerer](https://discourse.nodered.org/u/ThingsTinkerer)\
**Post date:** [21 October 2026 04:29 UTC](https://discourse.nodered.org/t/formalising-reusable-functions-with-autocompletion-parameter-hints-click-through-navigation/101645/29 "2026-10-21T04:29:08Z")

</div>

This is the single best thing I've seen in node red ever!

---

<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:** [21 October 2026 10:40 UTC](https://discourse.nodered.org/t/formalising-reusable-functions-with-autocompletion-parameter-hints-click-through-navigation/101645/30 "2026-10-21T10:40:22Z")

</div>

> [@Steve-Mcl](#):
>
> a plugin (side project) that connects VSCode to Node-RED

That sounds great!

Is that a VSCode extension or a node-red plugin?

Either way, please do enable it for VSCodium as well as VSCode. 😃

[Previous page](https://discourse.nodered.org/t/formalising-reusable-functions-with-autocompletion-parameter-hints-click-through-navigation/101645.md?page=1)
