# Node RED Plugins

**URL:** <https://discourse.nodered.org/t/node-red-plugins/100542>\
**Category:** Developing Nodes\
**Tags:** plugin\
**Created:** [12 March 2026 15:32 UTC](https://discourse.nodered.org/t/node-red-plugins/100542 "2026-03-12T15:32:52Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![marcus-j-davies](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/marcus-j-davies/32/103435_2.png) [@marcus-j-davies](https://discourse.nodered.org/u/marcus-j-davies)\
**Post date:** [12 March 2026 15:32 UTC](https://discourse.nodered.org/t/node-red-plugins/100542/1 "2026-03-12T15:32:52Z")

</div>

Ok...

Having the experience of building nodes, I am prepping a new release of one.  
This time around, it has plugins, that need to be initialised prior to any instance of my normal flow editor nodes.

One thing I am confused about.

- Do they require a matching `.html` file?

My plugins are of the following shape.

- Backend (A few admin hooks for example)
- Front End (Loading of client libraries, side bar etc etc)

So do I

- A (both using the same type name)
  - `my-plugin.js`
  - `my-plugin.html`

or

- B (separate plugins - and type names)
  - `my-plugin-backend.js`
  - `my-plugin-frontend.html`

Looking at examples, it seems they need to be unique - although working together

Thanks

---

<div class="post-metadata">

**Author:** ![GogoVega](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gogovega/32/71313_2.png) [@GogoVega](https://discourse.nodered.org/u/GogoVega)\
**Post date:** [12 March 2026 16:35 UTC](https://discourse.nodered.org/t/node-red-plugins/100542/2 "2026-03-12T16:35:41Z")

</div>

From what I remember, you can have all three cases:

- HTML + JS (i.e. `my-plugin.html` and `my-plugin.js`)
- HTML
- JS

What I am sure of are the first two options.

---

<div class="post-metadata">

**Author:** ![marcus-j-davies](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/marcus-j-davies/32/103435_2.png) [@marcus-j-davies](https://discourse.nodered.org/u/marcus-j-davies)\
**Post date:** [12 March 2026 18:15 UTC](https://discourse.nodered.org/t/node-red-plugins/100542/3 "2026-03-12T18:15:07Z")

</div>

I have had different results across Node RED Versions - hence my need to get an answer

it feels "natural" that it should work the same as standard nodes (option 1 in your reply ). @knolleary ?

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [12 March 2026 18:32 UTC](https://discourse.nodered.org/t/node-red-plugins/100542/4 "2026-03-12T18:32:28Z")

</div>

A plugin can have either or both files. It depends if it is a frontend (.html) or backend (.js) plugin. There is no dependency between them.

Here you can see Node-RED Debugger has both files and they each register their plugin with the corresponding `RED` api object. (Ignore the fact the .js file here is a .ts file - was my first attempt at using TypeScript)

---

<div class="post-metadata">

**Author:** ![marcus-j-davies](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/marcus-j-davies/32/103435_2.png) [@marcus-j-davies](https://discourse.nodered.org/u/marcus-j-davies)\
**Post date:** [12 March 2026 18:37 UTC](https://discourse.nodered.org/t/node-red-plugins/100542/5 "2026-03-12T18:37:41Z")

</div>

Thanks @knolleary

So having a look at the debugger.

- Both will use the same type name
- Both will register via the `RED` (registerPlugin) API
- Register the JS file (Only) in `package.json`

This matches the approach of standard nodes - thanks

> [@knolleary](#):
>
> (Ignore the fact the .js file here is a .ts file - was my first attempt at using TypeScript)

Hey... im not here to judge 😉

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [26 March 2026 18:38 UTC](https://discourse.nodered.org/t/node-red-plugins/100542/6 "2026-03-26T18:38:37Z")

</div>

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.
