# \[UE 5.8\] SGameplayTagChip is not exported (SLATE\_DECLARE\_WIDGET without GAMEPLAYTAGSEDITOR\_API) - SNew from another module fails to link with clang

**URL:** <https://forums.unrealengine.com/t/ue-5-8-sgameplaytagchip-is-not-exported-slate-declare-widget-without-gameplaytagseditor-api-snew-from-another-module-fails-to-link-with-clang/2851727>\
**Category:** Issues and Bug Reporting (Unreal Engine)\
**Tags:** unreal-engine\
**Created:** [November 6, 2026, 8:41pm UTC](https://forums.unrealengine.com/t/ue-5-8-sgameplaytagchip-is-not-exported-slate-declare-widget-without-gameplaytagseditor-api-snew-from-another-module-fails-to-link-with-clang/2851727 "2026-11-06T20:41:42Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![DecoyOctorok](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@DecoyOctorok](https://forums.unrealengine.com/u/DecoyOctorok)\
**Post date:** [November 6, 2026, 8:41pm UTC](https://forums.unrealengine.com/t/ue-5-8-sgameplaytagchip-is-not-exported-slate-declare-widget-without-gameplaytagseditor-api-snew-from-another-module-fails-to-link-with-clang/2851727/1 "2026-11-06T20:41:42Z")

</div>

### Summary

SGameplayTagChip.h declares the widget with SLATE\_DECLARE\_WIDGET(SGameplayTagChip, SCompoundWidget), which expands with NO\_API, so GameplayTagsEditor does not export SGameplayTagChip::PrivateRegisterAttributes. The chip’s constructor and Construct are GAMEPLAYTAGSEDITOR\_API, and its sibling widgets in the same module use SLATE\_DECLARE\_WIDGET\_API(…, GAMEPLAYTAGSEDITOR\_API). Any other module that constructs the chip (SNew(SGameplayTagChip)) fails to link with clang (Linux). MSVC links the same code. The fix is one line in the header.

### What Type of Bug are you experiencing?

Editor

### Steps to Reproduce

1. In a UE 5.8.3 project, add an editor module (or a plugin’s editor module) that depends on GameplayTagsEditor, Slate and SlateCore.
2. In that module, `#include "SGameplayTagChip.h"` and construct the widget, for example: `SNew(SGameplayTagChip).Text(FText::FromString(TEXT("A.B")))`
3. Build the editor target on Linux (clang, modular editor build).

Real-world case: the Flow Graph plugin 2.4 ([GitHub - MothCocoon/FlowGraph: Design-agnostic node system for scripting game’s flow in Unreal Engine · GitHub](http://github.com/MothCocoon/FlowGraph)) does exactly this in FlowEditor’s FlowIdentityCustomization.cpp, and its editor module fails to link on Linux. That is the case we measured.

### Expected Result

The module links. The chip’s constructor and Construct are already exported (GAMEPLAYTAGSEDITOR\_API); only the widget declaration macro lacks the export.

### Observed Result

The link fails (clang 20.1.8, UE 5.8.3, Linux; paths abridged):

```auto
ld.lld: error: undefined symbol: SGameplayTagChip::PrivateRegisterAttributes(FSlateAttributeDescriptor::FInitializer&)
>>> referenced by SGameplayTagChip.h:19 (../Plugins/Editor/GameplayTagsEditor/Source/GameplayTagsEditor/Public/SGameplayTagChip.h:19)
>>> .../FlowEditor/Module.FlowEditor.1.cpp.o:(SGameplayTagChip::GetPrivateWidgetClass())

```

The same source built with MSVC 14.44 (Win64) compiles and links.

### Affects Versions

5.8

### Platform(s)

Linux

### Additional Notes

Affects 5.8.3; the header line is unchanged on ue5-main as of 2026-11-01. Platform: Linux. Windows (MSVC) links; Mac (clang) was not checked.

Cause: SLATE\_DECLARE\_WIDGET(WidgetType, ParentType) is SLATE\_DECLARE\_WIDGET\_API(WidgetType, ParentType, NO\_API) (SlateControlledConstruction.h). The macro’s inline GetPrivateWidgetClass() takes &WidgetType::PrivateRegisterAttributes, and PrivateRegisterAttributes is declared “static ModuleApiDefine void PrivateRegisterAttributes(FSlateAttributeInitializer&);”. With NO\_API it is not exported from GameplayTagsEditor, so a module that constructs the chip with clang needs a symbol the module does not provide. Inside the engine only GameplayTagsEditor constructs the chip (SGameplayTagCombo, SGameplayTagContainerCombo), so the engine itself never hits this.

Its siblings in the same module are declared with the export: SGameplayTagCombo, SGameplayTagContainerCombo and SGameplayTagQueryEntryBox all use SLATE\_DECLARE\_WIDGET\_API(…, GAMEPLAYTAGSEDITOR\_API).

Fix, Engine/Plugins/Editor/GameplayTagsEditor/Source/GameplayTagsEditor/Public/SGameplayTagChip.h line 19:

```auto
-	SLATE_DECLARE_WIDGET(SGameplayTagChip, SCompoundWidget)
+	SLATE_DECLARE_WIDGET_API(SGameplayTagChip, SCompoundWidget, GAMEPLAYTAGSEDITOR_API)

```

With that change, the same Linux build links (tested on 5.8.3).

Video / callstack: none (a link error; the linker output is in Observed Result).
