Unreal Engine 5.7 — Breaking Changes¶
Last verified: 2026-03-25
This document tracks breaking API changes and behavioral differences between Unreal Engine 5.3 (likely in model training) and Unreal Engine 5.7 (current version). Organized by risk level.
HIGH RISK — Will Break Existing Code¶
Substrate Material System (Production-Ready in 5.7)¶
Versions: UE 5.5+ (experimental), 5.7 (production-ready)
Substrate replaces the legacy material system with a modular, physically accurate framework.
// ❌ OLD: Legacy material nodes (still work but deprecated)
// Standard material graph with Base Color, Metallic, Roughness, etc.
// ✅ NEW: Substrate material layers
// Use Substrate nodes: Substrate Slab, Substrate Blend, etc.
// Modular material authoring with true physical accuracy
Migration: Enable Substrate in Project Settings > Engine > Substrate and rebuild materials using Substrate nodes.
PCG (Procedural Content Generation) API Overhaul¶
Versions: UE 5.7 (production-ready)
PCG framework reached production-ready status with major API changes.
// ❌ OLD: Experimental PCG API (pre-5.7)
// Old node types, unstable API
// ✅ NEW: Production PCG API (5.7+)
// Use FPCGContext, IPCGElement, new node types
// Stable API, production-ready workflow
Migration: Follow PCG migration guide in 5.7 docs. Expect significant refactoring for experimental PCG code.
Megalights Rendering System¶
Versions: UE 5.5+
New lighting system supports millions of dynamic lights.
// ❌ OLD: Limited dynamic lights (clustered forward shading)
// Max ~100-200 dynamic lights before performance degrades
// ✅ NEW: Megalights (5.5+)
// Millions of dynamic lights with minimal performance cost
// Enable: Project Settings > Engine > Rendering > Megalights
Migration: No code changes needed, but lighting behavior may differ. Test scenes after enabling.
Build System — BuildSettingsVersion V6 (UE 5.7)¶
Versions: UE 5.7+
New build settings defaults that trigger warnings if not adopted:
// In YourProject.Target.cs and YourProjectEditor.Target.cs:
DefaultBuildSettings = BuildSettingsVersion.V6;
// V6 defaults (breaking if not set):
// - WindowsPlatform.bStrictInlineConformance = true (MSVC removes unreferenced COMDAT)
// - UndefinedIdentifierWarningLevel = Error (was Off)
// - C++20 standard (was C++17)
// - bValidateFormatStrings = true (compile-time UE_LOG format validation)
Migration: Set DefaultBuildSettings = BuildSettingsVersion.V6; in both Target.cs files.
C++ API Deprecations (UE 5.5+)¶
// ❌ TSoftObjectPtr constructor from incompatible pointer (compile error in 5.7)
// ❌ FObjectPtrProperty / FClassPtrProperty → use FObjectProperty / FClassProperty
// ❌ FProperty::ElementSize → use GetElementSize()
// ❌ TIsTriviallyDestructible → use std::is_trivially_destructible_v
// ❌ UClass::ClassDefaultObject → use GetDefault<>() / GetMutableDefault<>()
// ❌ PER_MODULE_BOILERPLATE → removed (UBT handles automatically)
// ❌ FString::Appendf → now requires static constexpr format strings
// ❌ FindObject bExactClass param → use EFindObjectFlags enum
// ❌ StructUtils plugin → deprecated since 5.5 (moved into engine)
GAS — NonInstanced Abilities Deprecated (UE 5.5+)¶
Critical for projects using Gameplay Ability System.
NonInstanced gameplay abilities are deprecated. All abilities should be instanced.
GAS — Replicated Loose Tags Removed (UE 5.7)¶
// ❌ REMOVED in 5.7:
// AddReplicatedLooseGameplayTags()
// RemoveReplicatedLooseGameplayTags()
CommonUI — PushWidget Auto-Activates (UE 5.5+)¶
Will break UI code silently.
// ❌ OLD: Manual activation after push
Widget = WidgetStack->PushWidget(MyWidgetClass);
Widget->ActivateWidget(); // NOW BREAKS — double activation
// ✅ NEW: PushWidget auto-activates
Widget = WidgetStack->PushWidget(MyWidgetClass);
// Widget is already activated
Also: SetInputMode is illegal with CommonUI — use GetDesiredInputConfig instead.
Lumen SWRT Detail Traces Deprecated (UE 5.7)¶
Focus shifted to HWRT (hardware ray tracing). SWRT detail traces deprecated.
Linux: SDL2 → SDL3 (UE 5.7)¶
Linux platform transitions from SDL2 to SDL3.
Android 15+ Memory Pages (UE 5.6+)¶
Android 15+ mandates 16 KB memory page sizes (up from 4 KB).
Blueprint Variable Inheritance Bug (UE 5.6)¶
Inherited variable values can be lost when migrating Blueprints from 5.5 to 5.6. Verify inherited defaults after migration.
MEDIUM RISK — Behavioral Changes¶
Enhanced Input System (Now Default)¶
Versions: UE 5.1+ (recommended), 5.7 (default)
Enhanced Input is now the default input system.
// ❌ OLD: Legacy input bindings (deprecated)
InputComponent->BindAction("Jump", IE_Pressed, this, &ACharacter::Jump);
// ✅ NEW: Enhanced Input
SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) {
UEnhancedInputComponent* EIC = Cast<UEnhancedInputComponent>(PlayerInputComponent);
EIC->BindAction(JumpAction, ETriggerEvent::Started, this, &ACharacter::Jump);
}
Migration: Replace legacy input bindings with Enhanced Input actions.
Nanite Default Enabled¶
Versions: UE 5.0+ (optional), 5.7 (encouraged)
Nanite virtualized geometry is now the recommended workflow for static meshes.
// Enable Nanite on static mesh:
// Static Mesh Editor > Details > Nanite Settings > Enable Nanite Support
Migration: Convert high-poly meshes to Nanite. Test performance on target platforms.
LOW RISK — Deprecations (Still Functional)¶
Legacy Material System¶
Status: Deprecated but supported Replacement: Substrate Material System
Legacy materials still work, but Substrate is recommended for new projects.
Old World Partition (UE4 Style)¶
Status: Deprecated Replacement: World Partition (UE5+)
Use UE5's World Partition system for large worlds.
Platform-Specific Breaking Changes¶
Windows¶
- UE 5.7: DirectX 12 is now default (was DX11 in older versions)
- Update shaders for DX12 compatibility
macOS¶
- UE 5.5+: Metal 3 required (minimum macOS 13)
Mobile¶
- UE 5.7: Minimum Android API level raised to 26 (Android 8.0)
- Minimum iOS deployment target raised to iOS 14
NEW SYSTEMS — Post Training Data¶
Iris Replication System (Beta, UE 5.7)¶
Opt-in replication system for large interactive worlds and high player counts.
- Requires plugin enable + SetupIrisSupport(Target) in Build.cs
- Structs are atomic by default (different from legacy non-atomic behavior)
- Replaces Replication Graph (now considered legacy)
- Filter types: Owner, Connection, Group
Mover Plugin (Experimental, UE 5.7)¶
Movement system with rollback networking — eventual successor to Character Movement Component. Note: We use GMCv2 instead of CMC/Mover for this project.
In-Editor AI Assistant (UE 5.7)¶
Slide-out panel for questions, C++ code generation, step-by-step guidance.
Nanite Foliage (Experimental, UE 5.7)¶
Nanite Voxels for millions of leaf/needle details; Nanite Assemblies; Nanite Skinning for wind.
Procedural Vegetation Editor (PVE, UE 5.7)¶
PCG-based node graph for growing/shaping/customizing Nanite-ready foliage in-editor.
Migration Checklist¶
When upgrading from UE 5.3 to UE 5.7:
- [ ] Review Substrate materials (convert if ready for new system)
- [ ] Audit PCG usage (update to production API if using experimental)
- [ ] Test Megalights performance (enable and benchmark)
- [ ] Migrate legacy input to Enhanced Input
- [ ] Convert high-poly meshes to Nanite
- [ ] Update shaders for DX12 (Windows) or Metal 3 (macOS)
- [ ] Verify minimum platform versions (Android 8.0, iOS 14)
- [ ] Test Lumen and Nanite performance on target hardware
Sources: - https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-engine-5-7-release-notes - https://dev.epicgames.com/documentation/en-us/unreal-engine/upgrading-projects-to-newer-versions-of-unreal-engine