Unity 2026.6 LTS Build Hangs at 90 Percent - Progress Bar Stuck Fix
Problem: In Unity 2026.6 LTS, the build progress bar gets stuck around 90 percent and never finishes. The editor may show "Building Player..." or a step like "Compiling scripts with IL2CPP" or "Processing assets" with no movement for many minutes. You may also see the build hang at "90%" in the status bar with no error message. Common searches include "Unity build stuck at 90%", "Unity 2026 build hangs", and "IL2CPP build never completes."
Root cause: A build that hangs near the end is usually stuck in one of these phases: IL2CPP compilation (converting managed code to C++; large projects or heavy reflection can take a long time or deadlock), shader compilation or variant stripping (many shaders or long compile times), asset processing or stripping (large asset pipelines or stripping steps that hit disk or CPU limits), antivirus or file locking (scanning or locking build output), or insufficient memory or disk so the process is thrashing or waiting. Identifying which phase is active (e.g. via Task Manager or build log) lets you apply the right fix.
This guide gives you step-by-step solutions so you can get the build past 90% and complete successfully.
Quick fix checklist
- Confirm where it is stuck β Check Task Manager (or Activity Monitor) for high CPU/memory by Unity or il2cpp; check the build log for the last line to see the phase.
- IL2CPP β If using IL2CPP, try a Development Build once to see if it completes; reduce Target Architectures to one; increase IL2CPP Code Generation timeout or run from command line with more memory.
- Shader / stripping β Reduce Shader Variant Stripping level or disable Strip Engine Code temporarily to test; exclude problematic shaders from stripping.
- Resources β Free disk space, close other apps, add antivirus exclusions for the project and build output folder, and ensure at least 8 GB free RAM for large builds.
- Mono fallback β For quick verification, switch to Mono scripting backend and build; if it completes, the hang is likely IL2CPP-related.
Solution 1: Identify the stuck phase (build log and Task Manager)
Symptom: You do not know whether the hang is IL2CPP, shaders, or something else.
Step 1: Reproduce the hang and leave the build running. Open Task Manager (Windows) or Activity Monitor (macOS). Check if Unity, il2cpp, or Unity.exe are using high CPU or memory. IL2CPP often shows high CPU for a long time; shader compilation may show bursts.
Step 2: Find the build log. In Unity, go to Edit > Preferences > External Tools (or Unity > Settings on Mac) and note the External Script Editor. Build logs are often under your user temp folder. Alternatively, use Build from the command line so the log goes to a file:
- Windows:
Unity.exe -quit -batchmode -projectPath "C:\YourProject" -buildTarget Win64 -executeMethod YourBuildScript.Build -logFile build.log - Check the last 50β100 lines of the log for the current step (e.g. "Compiling Assembly-CSharp with IL2CPP", "Processing shaders", "Stripping").
Step 3: If the last log line mentions IL2CPP or il2cpp, focus on Solution 2. If it mentions shader or stripping, focus on Solution 3. If the process is using almost no CPU and a lot of memory, consider resource limits (Solution 4).
Verification: You now know the likely phase. Apply the solution that matches that phase and rebuild.
Solution 2: IL2CPP build hang (reduce load or give more time)
Symptom: The build log or Task Manager shows IL2CPP/il2cpp activity and the bar stays around 90%.
Step 1: Try Development Build once. In File > Build Settings, enable Development Build and build. Development builds sometimes skip or shorten some optimizations and can complete when a Release build hangs. If it finishes, the hang is likely in an IL2CPP or stripping step that is heavier in Release.
Step 2: Reduce Target Architectures. In Edit > Project Settings > Player > [Your Platform] > Other Settings, under Target Architectures, enable only one architecture (e.g. only ARM64 for Android). Building one architecture halves IL2CPP work and can avoid timeouts or deadlocks.
Step 3: Increase memory for the build process. On Windows, close other apps and run Unity from a fresh restart. On macOS, ensure enough free RAM. For headless or command-line builds, you can sometimes allocate more memory via environment variables or by running on a machine with more RAM.
Step 4: Check for code stripping issues. In Project Settings > Player > Other Settings, set Managed Stripping Level to Low or Minimal and rebuild. Aggressive stripping can cause IL2CPP to analyze a lot of code and occasionally hang; relaxing it can let the build complete so you can then narrow down which assemblies to strip manually.
Step 5: If you use Burst or DOTS, ensure you are on a compatible Burst version and that no Burst jobs are causing infinite loops or excessive compilation. Temporarily disabling Burst (or DOTS) can confirm whether the hang is in that pipeline.
Verification: Build again. If the progress bar passes 90% and completes, the fix is likely one of the above. You can then re-enable a second architecture or increase stripping gradually while monitoring.
Solution 3: Shader compilation or variant stripping
Symptom: The log shows shader compilation or "Stripping" and the bar is stuck near 90%.
Step 1: Reduce Shader Variant Stripping. In Edit > Project Settings > Graphics, find Shader Stripping (or in URP/HDRP asset). Set stripping to Minimal or Strip Unused Variants only, and disable Strip Engine Code for a test build. If the build completes, re-enable stripping step by step to find the problematic level.
Step 2: Exclude problematic shaders. If you have custom or third-party shaders that generate many variants, consider moving them to a Preloaded Shaders list or marking them so they are not stripped aggressively. Shaders that reference many keywords can cause long compile or strip times.
Step 3: Pre-shader compilation (if available in your Unity version). Some versions allow you to compile shaders ahead of time (e.g. via Edit > Project Settings > Graphics > Preloaded Shaders or build pipeline). Pre-compiling can move work out of the "90%" phase so the build does not appear stuck there.
Verification: Rebuild. If the build completes, shader/stripping was the cause. Re-enable stripping levels one at a time to keep build size down without hanging.
Solution 4: Resource limits (disk, RAM, antivirus)
Symptom: The build process uses little CPU but a lot of memory, or the disk is very active and the bar does not move.
Step 1: Free disk space. IL2CPP and build caches need several GB. Ensure at least 10β20 GB free on the drive that holds the project and the build output (e.g. Library, Temp, and the build folder). Clear Library/Il2cppBuildCache if you are willing to do a clean IL2CPP rebuild.
Step 2: Exclude project and build folders from antivirus real-time scanning. Add exclusions for:
- Your Unity project root
- The build output folder (e.g.
Builds,Build) - Unityβs Library and Temp folders
Scanning thousands of small files during the build can make the progress bar appear stuck.
Step 3: Close other heavy applications to free RAM. Unity 2026.6 builds can use 8 GB or more; if the system is low on memory, the build may swap and appear hung.
Step 4: Disable Windows Defender Real-Time Protection (or equivalent) temporarily for the build folder only if you have verified the project is safe. Re-enable it after the build.
Verification: Run the build again. If it completes, resource limits or antivirus were contributing. Keep exclusions in place for future builds.
Solution 5: Clean build (clear caches and rebuild)
Symptom: You are not sure whether the hang is due to a bad cache or corrupted intermediate files.
Step 1: Close Unity. Delete (or rename) the Library folder inside your project. Do not delete the project itself, only Library. This forces a full reimport and rebuild.
Step 2: Optionally delete Temp and obj (if present) in the project root. Clear Library/Il2cppBuildCache if you use IL2CPP.
Step 3: Reopen the project in Unity 2026.6 LTS. Let it reimport (this can take a while). Then run File > Build Settings > Build again.
Verification: If the build completes after a clean reimport, the hang was likely due to corrupted or inconsistent cache. If it still hangs at 90%, use the log and Task Manager (Solution 1) to target IL2CPP or shader/stripping next.
Alternative fixes
- Mono instead of IL2CPP: For Windows/Mac/Linux standalone or quick iteration, switch to Mono scripting backend in Player Settings. If the build finishes with Mono but hangs with IL2CPP, focus on IL2CPP (Solution 2) and resource limits (Solution 4).
- Smaller build: Remove unused scenes from Build Settings and strip unused assets so the build does less work near the end.
- Command-line build with log: Run the build from the command line with -logFile and -batchmode so you get a full log and can see the exact line where it stops.
- Different machine: If possible, run the same build on a machine with more RAM and CPU; if it completes there, the hang is resource-related on the original machine.
Prevention tips
- Keep Target Architectures to the minimum you need (e.g. one for development).
- Use Managed Stripping Level that balances size and build time; avoid High until you have confirmed the project does not hang.
- Add antivirus exclusions for the project and build output folders and leave them in place.
- Maintain at least 10β20 GB free disk space and 8 GB+ free RAM for large builds.
- After major Unity or package upgrades, do a clean build (delete Library, reimport) once to avoid stale caches.
Related problems and links
- If the build fails with an error instead of hanging, see Unity Build Fails with Missing Assembly References Error and Unity Build Fails with Scripting Backend Error.
- For Cloud Build or CI builds that hang, check timeout and memory on the build agent: Unity Cloud Build Fails - Continuous Integration Fix.
- For IL2CPP compilation errors (e.g. "Method not found"), see Unity Build Fails with IL2CPP Error Method Not Found if you have that article, or the official Unity docs on IL2CPP.
Bookmark this fix for quick reference when a build gets stuck near the end. If you are still stuck after trying these steps, capture the last 100 lines of the build log and the Task Manager view during the hang and use them to narrow down the phase (IL2CPP vs shader vs disk). Share this article with your dev team if it helped you get past the 90% hang.