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

# QuartzUIProjectMigration: 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/QuartzUIEditor/Public/QuartzUIProjectMigration.h`) · [integration recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuiprojectmigration) · [practical guide](https://betterbuilt.games/docs/quartz-ui/tools-shipping)

## FQuartzUIProjectMigrationChange

**Editor type.** One explicit mutation made, or proposed by dry-run, during project migration.

**Prerequisites / integration:** Installed source plugin; Editor tools additionally require a compiled compatible host Editor target. Use the [QuartzUIProjectMigration recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuiprojectmigration) in the host module `QuartzUIEditor`.

**Minimal example / lifecycle:** QuartzUIMigrate -Source=prebuilt -DryRun before real migration. Records own changes; rollback retains created output.

**Avoid:** Using deletion as conflict resolution or assuming rollback deletes assets. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIEditor/Public/QuartzUIProjectMigration.h#L6`)

## FQuartzUIProjectMigrationOptions

**Editor type.** Shared options for the Editor action, commandlet, CI, and automation.

**Prerequisites / integration:** Installed source plugin; Editor tools additionally require a compiled compatible host Editor target. Use the [QuartzUIProjectMigration recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuiprojectmigration) in the host module `QuartzUIEditor`.

**Minimal example / lifecycle:** QuartzUIMigrate -Source=prebuilt -DryRun before real migration. Records own changes; rollback retains created output.

**Avoid:** Using deletion as conflict resolution or assuming rollback deletes assets. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIEditor/Public/QuartzUIProjectMigration.h#L15`)

## FQuartzUIProjectMigrationResult

**Editor type.** Stable machine-readable result for one apply, idempotence, dry-run, or rollback attempt.

**Prerequisites / integration:** Installed source plugin; Editor tools additionally require a compiled compatible host Editor target. Use the [QuartzUIProjectMigration recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuiprojectmigration) in the host module `QuartzUIEditor`.

**Minimal example / lifecycle:** QuartzUIMigrate -Source=prebuilt -DryRun before real migration. Records own changes; rollback retains created output.

**Avoid:** Using deletion as conflict resolution or assuming rollback deletes assets. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIEditor/Public/QuartzUIProjectMigration.h#L42`)

## FQuartzUIProjectMigrationService

**Editor type.** Deterministic, no-overwrite migration from a validated prebuilt browser app to the project-owned app model. Apply and rollback keep project content recoverable and never write below the installed plugin.

**Prerequisites / integration:** Installed source plugin; Editor tools additionally require a compiled compatible host Editor target. Use the [QuartzUIProjectMigration recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuiprojectmigration) in the host module `QuartzUIEditor`.

**Minimal example / lifecycle:** QuartzUIMigrate -Source=prebuilt -DryRun before real migration. Records own changes; rollback retains created output.

**Avoid:** Using deletion as conflict resolution or assuming rollback deletes assets. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIEditor/Public/QuartzUIProjectMigration.h#L67`)

## 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"

/** One explicit mutation made, or proposed by dry-run, during project migration. */
struct QUARTZUIEDITOR_API FQuartzUIProjectMigrationChange
{
	FString Kind;
	FString Path;
	FString PreviousValue;
	FString NewValue;
};

/** Shared options for the Editor action, commandlet, CI, and automation. */
struct QUARTZUIEDITOR_API FQuartzUIProjectMigrationOptions
{
	FName AppId = TEXT("reference");
	FString EntryPage = TEXT("index.html");
	FString AssetPackagePath = TEXT("/Game/QuartzUIConfig/DA_QuartzUIReference");

	/** Compiled static source. Empty selects the installed plugin's legacy fixture. */
	FString SourceRoot;

	/** Absolute project-directory override used by isolated tests. */
	FString ProjectDirectory;

	/** Empty values resolve below Saved/QuartzUI/Migrations. */
	FString RecordPath;
	FString ReportPath;

	/** Copies only index.html and assets/** from the legacy plugin fixture. */
	bool bLegacyFixtureLayout = false;

	/** Restores the recorded previous default-app selection without deleting project output. */
	bool bRollback = false;

	/** Validates and reports the full plan without changing files, assets, or config. */
	bool bDryRun = false;
};

/** Stable machine-readable result for one apply, idempotence, dry-run, or rollback attempt. */
struct QUARTZUIEDITOR_API FQuartzUIProjectMigrationResult
{
	bool bSucceeded = false;
	bool bChanged = false;
	bool bIdempotent = false;
	bool bRollback = false;
	FString Code;
	FString Message;
	FName AppId;
	FString SourceRoot;
	FString DestinationRoot;
	FString AssetObjectPath;
	FString RecordPath;
	FString ReportPath;
	FString BuildIdentity;
	FString ManifestSha256;
	TArray<FQuartzUIProjectMigrationChange> Changes;
	FString Json;
};

/**
 * Deterministic, no-overwrite migration from a validated prebuilt browser app
 * to the project-owned app model. Apply and rollback keep project content
 * recoverable and never write below the installed plugin.
 */
class QUARTZUIEDITOR_API FQuartzUIProjectMigrationService final
{
public:
	static constexpr int32 SchemaVersion = 1;

	static bool Run(
		const FQuartzUIProjectMigrationOptions& Options,
		FQuartzUIProjectMigrationResult& OutResult);
};
```

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