cysharp/unitask

Provides an efficient allocation free async/await integration for Unity.

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 32 minutes ago
Added to GitGenius on September 5th, 2026
Created on May 19th, 2019
Open Issues & Pull Requests: 20 (+0)
GitHub issues: Enabled
Number of forks: 1,012
Total Stargazers: 11,178 (+1)
Total Subscribers: 128 (+0)

Repository Insights (GitGenius)

Most active contributors

Sign in to see contributor activity.

Related repositories by overlapping contributors

No overlapping-contributor repos identified yet.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 13
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 269 days
Stale 30+ days: 10
Stale 90+ days: 8

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • stale (44)

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

UniTask is an async/await integration library for Unity that achieves zero-allocation performance through struct-based task types and custom method builders.

Unity's standard coroutine system and Task API incur memory allocations that accumulate during gameplay, degrading performance over time. UniTask solves this by implementing UniTask<T> as a struct paired with a custom AsyncMethodBuilder, eliminating heap allocations entirely. The library makes Unity's AsyncOperations, Coroutines, and PlayerLoop events directly awaitable, allowing developers to replace traditional coroutine patterns with modern async/await syntax while maintaining the single-threaded execution model that WebGL and other constrained platforms require.

Developers should adopt UniTask when working on performance-sensitive Unity projects where garbage collection pressure matters, particularly mobile games or projects targeting WebGL. The tool suits any codebase already using async/await patterns or willing to migrate from coroutines. The library provides asynchronous LINQ operations, Channel support, and AsyncReactiveProperty for reactive programming patterns. Unlike the standard Task API, UniTask runs entirely on Unity's PlayerLoop without spawning threads, making it safe for all platforms including WebGL and WebAssembly. A TaskTracker window helps identify memory leaks during development.

The project maintains active development with regular updates addressing edge cases and expanding compatibility. The codebase demonstrates careful attention to performance optimization, with detailed documentation of allocation behavior and pooling configuration options. The maintainers provide extensive examples covering cancellation, timeout handling, progress reporting, and integration with uGUI events, reflecting a commitment to practical usability alongside raw performance metrics.