What happens to Blueprint macros during nativization?

According to the documentation

Blueprint Macros aren’t supported by the Blueprint Nativization tool, and won’t be converted into native C++ code

This suggests that nodes inside of macros are not nativized, but Blueprints with macros can be selected for Nativization. So this leads to the following questions:

  1. What happens to the macros inside of Blueprints that are selected for nativization? Are the macros expanded and nativized or does the native code reference the macro nodes externally somehow?
  2. How are references to nodes in Blueprint macro libraries handled?

I can’t answer your question, I just felt the need to comment because I recentally had a bad experience with macros. I learned, after about 8 hours of work, that macros are not inheritable. The struggle is real. But that does raise a good question, and the best answer I’ve got is that I have packaged a game using macro libraries, and it works like it’s supposed to. So while macros may not be nativized, the still compile into something. What I’m wondering is the performance impact due to lack of nativization.

If you’re curious, there’s a video comparison of the difference in performance between 10k C++, blueprint and nativized actors.

If I remember correctly blueprint macros are actually just a compressed version of those nodes.

Using a macro is like using those nodes in that spot of your BP. So they can’t be nativized by themselves but should just be treated as nodes in the BP when nativization is run.