[Plugin] Type Editor vs Type Runtime vs Type Development and Best practices?

I was wondering if anyone could give some clarity on the differences between making a plugin module of type “Editor” versus of type “Runtime”.

At first the difference seems obvious, but after some testing I am not so sure. For example I put BPFunctionLibrary code into my “Runtime” module fully expecting it to not show up for use in the Editor but it does. Upon further thought the distinction seems unclear because anything you may do in the “Editor” almost for sure would need to also work in “Runtime” or else what would be the point? The only exception I can think of is custom editor controls and what not. If for example you made a custom asset type, it would need to work both in the editor and in runtime. So thinking it over more it would seem that anything defined in either a Runtime or an Editor module would almost for sure be “accessible” from both.

Which leads me back to the original desire for clarification.

On a side but related note, when I look at Epic provided plugins like Paper2D they define modules like the above, as “Editor” or “Runtime”. But when you make a plugin using the plugin wizard it makes a module of type “Development”. What is that and how again does that differ?

What are best practices here?


Ok answering my own question for future posterity rather than removing it, but apparently it is well documented in the Wiki and I just failed to notice: