---
title: "QuartzUIActions: declaration reference"
description: "Quartz UI 0.57.0-dev: QuartzUIActions: declaration reference. Source-reviewed guidance, usage and limitations."
status: approved
visibility: public
sourceRevision: fe5b709ec900e282b50e58b819a25041945005f9
reviewedAt: 2026-09-24
---

# QuartzUIActions: declaration reference

> **0.57.0-dev · beta source documentation.** Native, Blueprint, Editor and rendering examples are source-reviewed, not executed in Unreal during this scan. See [validation and limits](https://betterbuilt.games/docs/quartz-ui/evidence).

Pinned source (source: `Source/QuartzUIRuntime/Public/QuartzUIActions.h`) · [integration recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuiactions) · [practical guide](https://betterbuilt.games/docs/quartz-ui/gameplay)

## FQuartzUINamedActionHandler

**Public delegate.** Blueprint callback for one explicitly registered web-to-Unreal action.

**Prerequisites / integration:** Configured exact-player shell, QuartzUIRuntime dependency, one frontend client. Use the [QuartzUIActions recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuiactions) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** Register menu.continue, then SetActions with a localized FQuartzUIBoundAction. Handler registration belongs to gameplay owner; catalog is copied state.

**Avoid:** Treating a displayed catalog entry as handler authorization. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUIActions.h#L8`)

## FQuartzUIActionReceived

**Public delegate.** Observable action signal shared by the logical view and convenience shell hosts.

**Prerequisites / integration:** Configured exact-player shell, QuartzUIRuntime dependency, one frontend client. Use the [QuartzUIActions recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuiactions) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** Register menu.continue, then SetActions with a localized FQuartzUIBoundAction. Handler registration belongs to gameplay owner; catalog is copied state.

**Avoid:** Treating a displayed catalog entry as handler authorization. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUIActions.h#L11`)

## FQuartzUINativeNamedActionHandler

**Public delegate.** C++ callback equivalent of FQuartzUINamedActionHandler.

**Prerequisites / integration:** Configured exact-player shell, QuartzUIRuntime dependency, one frontend client. Use the [QuartzUIActions recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuiactions) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** Register menu.continue, then SetActions with a localized FQuartzUIBoundAction. Handler registration belongs to gameplay owner; catalog is copied state.

**Avoid:** Treating a displayed catalog entry as handler authorization. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUIActions.h#L14`)

## FQuartzUIBoundAction

**Public type.** Contextual logical action presented by one web view.

**Prerequisites / integration:** Configured exact-player shell, QuartzUIRuntime dependency, one frontend client. Use the [QuartzUIActions recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuiactions) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** Register menu.continue, then SetActions with a localized FQuartzUIBoundAction. Handler registration belongs to gameplay owner; catalog is copied state.

**Avoid:** Treating a displayed catalog entry as handler authorization. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUIActions.h#L18`)

## FQuartzUIActionPolicy

**Internal type.** Validation and deterministic protocol-v1 serialization for action catalogs.

**Prerequisites / integration:** Configured exact-player shell, QuartzUIRuntime dependency, one frontend client. Use the [QuartzUIActions recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuiactions) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** Register menu.continue, then SetActions with a localized FQuartzUIBoundAction. Handler registration belongs to gameplay owner; catalog is copied state.

**Avoid:** Treating a displayed catalog entry as handler authorization. This named helper is runtime-owned; inspect/use it through the owner above rather than constructing it in gameplay.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUIActions.h#L56`)

## Complete header

Source snapshot, not an additional example. Unreal annotations distinguish exposed Blueprint nodes from native-only/private methods.

```cpp
#pragma once

#include "CoreMinimal.h"

#include "QuartzUIActions.generated.h"

/** Blueprint callback for one explicitly registered web-to-Unreal action. */
DECLARE_DYNAMIC_DELEGATE_OneParam(FQuartzUINamedActionHandler, FName, ActionName);

/** Observable action signal shared by the logical view and convenience shell hosts. */
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FQuartzUIActionReceived, FName, ActionName);

/** C++ callback equivalent of FQuartzUINamedActionHandler. */
DECLARE_DELEGATE_OneParam(FQuartzUINativeNamedActionHandler, FName);

/** Contextual logical action presented by one web view. */
USTRUCT(BlueprintType, meta = (QuartzUITypeName = "QuartzUIBoundAction"))
struct QUARTZUIRUNTIME_API FQuartzUIBoundAction
{
	GENERATED_BODY()

	/** Open, backend-neutral name such as ui.back or inventory.drop. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|Actions", meta = (QuartzUIName = "action"))
	FName ActionName;

	/** Localize in Unreal; JavaScript receives the resolved display string. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|Actions", meta = (QuartzUIName = "label"))
	FText DisplayName;

	/** Lower values appear first. Equal values retain registration order. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|Actions", meta = (ClampMin = "-10000", ClampMax = "10000", QuartzUIName = "priority"))
	int32 DisplayPriority = 0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|Actions", meta = (QuartzUIName = "enabled"))
	bool bEnabled = true;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|Actions", meta = (QuartzUIName = "display"))
	bool bDisplayInActionBar = true;

	/** Zero is an ordinary action; positive values describe a hold action. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|Actions", meta = (ClampMin = "0.0", ClampMax = "60.0", QuartzUIName = "holdSeconds"))
	float HoldDurationSeconds = 0.0f;

	bool operator==(const FQuartzUIBoundAction& Other) const
	{
		return ActionName == Other.ActionName
			&& DisplayName.EqualTo(Other.DisplayName)
			&& DisplayPriority == Other.DisplayPriority
			&& bEnabled == Other.bEnabled
			&& bDisplayInActionBar == Other.bDisplayInActionBar
			&& HoldDurationSeconds == Other.HoldDurationSeconds;
	}
};

/** Validation and deterministic protocol-v1 serialization for action catalogs. */
class QUARTZUIRUNTIME_API FQuartzUIActionPolicy final
{
public:
	static constexpr int32 MaxBoundActions = 64;
	static constexpr int32 MaxRegisteredActions = 64;
	static bool IsValidBoundAction(const FQuartzUIBoundAction& Action);
	static bool IsValidNamedAction(FName ActionName);
	/** Strictly decodes the exact {"action":"..."} reserved endpoint payload. */
	static bool TryParseNamedActionRequest(const FString& PayloadJson, FName& OutActionName);
	static bool TrySerializeBoundActions(
		const TArray<FQuartzUIBoundAction>& Actions,
		FString& OutPayloadJson);
};
```

Canonical HTML: https://betterbuilt.games/docs/quartz-ui/reference-quartzuiactions
