Sync Fast Path
If every asset in a load request is already in memory, AsyncLoad Toolkit fires the On Loaded callback in the same frame — without waiting for the next tick and without going through the streaming queue.
Why it matters
Without a fast path, async loads always have at least a 1-frame delay, even for assets that are fully loaded. This causes a visible pop-in or an unnecessary wait when loading screens are driven by async callbacks.
With the fast path enabled, a "load" of already-cached assets feels instant.
How it works
Before issuing a streaming request, the subsystem resolves each path with FSoftObjectPath::ResolveObject(). If every path resolves to a non-null object, the load is considered complete:
- An immediately-completed handle is created.
On Loaded/On Completedfires before the load function returns.- No streaming request is ever issued.
Because On Loaded can fire before Load Asset returns, code placed after the Load Asset node in Blueprint runs after the callback. This is the correct and expected behavior, but be aware of it when debugging.
Enabling / disabling
The fast path is enabled by default via FAsyncKitLoadParams::bAllowSyncFastPath.
To force an async load even for already-in-memory assets (rare, but useful for testing):
Params.bAllowSyncFastPath = false
You can also change the project-wide default in Project Settings → AsyncLoad Toolkit → Default Sync Fast Path.