UniTask: Allocation-free async/await for Unity
Zero-allocation async/await using structs and custom method builders.
Learn more about UniTask
UniTask is a high-performance asynchronous programming library for Unity that provides allocation-free async/await functionality through value-type task structures. It replaces the standard .NET Task-based model with custom struct-based implementations and specialized async method builders that avoid heap allocations during asynchronous operations. The library integrates directly with Unity's player loop system to schedule continuation callbacks without requiring additional thread synchronization or context switching overhead. It provides awaitable wrappers for Unity-specific operations such as frame delays, coroutine integration, and lifecycle events, enabling async patterns within Unity's single-threaded execution model. The zero-allocation design significantly reduces garbage collection pressure in performance-critical game scenarios where frequent asynchronous operations would otherwise cause memory churn.
Struct-based implementation
UniTask uses value types (structs) instead of reference types for task objects, combined with custom AsyncMethodBuilder to eliminate heap allocations during async/await operations. This reduces garbage collection pressure compared to standard Task-based approaches.
PlayerLoop integration
Operations execute within Unity's PlayerLoop system rather than on background threads, ensuring compatibility with single-threaded platforms like WebGL and wasm. This design allows frame-based timing and synchronization with Unity's lifecycle events.
Awaitable Unity APIs
The library wraps Unity's AsyncOperations, coroutines, and UI events as awaitable objects, allowing them to be used directly with async/await syntax. It also provides PlayerLoop-based alternatives to coroutine operations like WaitForSeconds and yield return null.
using Cysharp.Threading.Tasks;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.SceneManagement;
public class BasicUniTaskExample : MonoBehaviour
{
async UniTask<string> LoadAssetsAsync()
{
// Await Unity's AsyncObject operations
var asset = await Resources.LoadAsync<TextAsset>("config");
// Await web requests
var webRequest = UnityWebRequest.Get("https://api.example.com/data");
var response = await webRequest.SendWebRequest();
string jsonData = response.downloadHandler.text;
// Load scenes asynchronously
await SceneManager.LoadSceneAsync("GameScene");
return jsonData;
}
}See how people are using UniTask
Top in Developer Tools
Related Repositories
Discover similar tools and frameworks used by developers
Doom Emacs
Modular framework with lazy loading and vim keybindings.
Git
Snapshot-based version control with distributed repository architecture.
n
A command-line utility for installing, switching between, and managing multiple Node.js versions on Unix-like systems.
tqdm
Instrument Python iterables with minimal-overhead progress tracking.
Grbl
Real-time motion control firmware for Arduino-based CNCs.
Related Reading
Guides and comparisons from the Greptile content library
Best CodeRabbit Alternatives for Smarter AI Code Reviews in 2026
7 powerful CodeRabbit alternatives ranked by real dev teams. Feature comparison, pricing analysis, and honest reviews to find your perfect AI code reviewer.
10 Powerful Code Quality Tools That Catch Bugs Before Deployment
We tested 10 code quality tools that catch bugs before production. Detailed comparison with real-world examples, pricing, and ROI analysis for dev teams.
Best AI Code Review Tools for GitHub
Top-rated AI code review tools for GitHub teams in 2025. Compare features, pricing, and accuracy to find the perfect fit for faster PR reviews and bulletproof code quality.
Greptile Ranks #1 on Martian's AI Code Review Benchmark
Greptile ranks #1 on Martian's independent online AI code review benchmark, leading all evaluated tools in F1 score and precision with near-leading recall.