AsyncLoad Toolkit
AsyncLoad Toolkit is an Unreal Engine plugin that gives Blueprint full control over asynchronous and synchronous asset loading — the kind of control FStreamableManager offers in C++ but that vanilla Blueprint nodes do not expose.
Why AsyncLoad Toolkit?
Unreal's built-in Async Load Asset node covers the most basic case. The moment you need anything beyond a single soft reference, you hit a wall.
| Feature | Vanilla BP | AsyncLoad Toolkit |
|---|---|---|
| Load 1 soft reference | ✅ | ✅ |
| Load an array of assets | ❌ (pre-5.7) | ✅ all versions |
| Callable in a function / macro | ❌ | ✅ via delegate |
| 0–1 progress | ❌ | ✅ |
| Cancellation | ❌ | ✅ |
| Priority | ❌ | ✅ |
| Deduplication (already in-flight) | ❌ | ✅ |
| Keep-alive (anti-GC) | ❌ | ✅ ref-counted |
| Throttling / chunks (anti-OOM) | ❌ | ✅ |
| Handle storable as a variable | ❌ | ✅ |
The main differentiator
AsyncLoad Toolkit's library functions are non-latent: they return immediately and fire a delegate when done. This means they compile and run inside Blueprint function graphs, macros, and interfaces — not just Event Graphs. This is the feature vanilla async nodes can never offer.
Key concepts
- Function vs. Node — when to use the library function vs. the async node.
- Handle — a storable
UAsyncKitHandleobject with progress, cancel, and status. - Keep-alive — ref-counted hard references that prevent GC from evicting assets.
- Deduplication — identical in-flight requests are merged automatically.
- Chunking — load thousands of assets in batches to keep RAM usage flat.
Supported engine versions
| Plugin version | UE versions |
|---|---|
v1.0 | 5.2, 5.3, 5.4, 5.5, 5.6, 5.7 |
Architecture overview
Blueprint / C++
│
▼
UAsyncKitLibrary ← non-latent, usable anywhere
UAsyncKitNodes ← async action nodes, Event Graph only
│
▼
UAsyncKitSubsystem ← single source of truth (GameInstance lifetime)
├── dedup map
├── retain map
├── active handle list (anti-GC)
└── progress ticker
│
▼
FStreamableManager ← Unreal's native streaming backend