Unity Workflow LibraryUWLAbout

Topic 5 · DOTS

The DOTS stack: Entities, Burst, Jobs and the packages around them

What each DOTS package does, which versions to pin, and how to prove the stack is really running.

DOTS (Data-Oriented Technology Stack) is not one package. It is a set of packages that work together, and a project can adopt some of them without the rest: the C# Job System and Burst work in an ordinary MonoBehaviour project, while Entities needs both. Read this page before ECS core mechanics, which holds the detailed rules.

Packages and versions

Versions are the latest tags in the Unity package registry (packages.unity.com), read 15 Oct 2026. Pin the version your Editor's Package Manager offers as verified for your Unity release; a newer registry tag is not automatically compatible.

Package What it is for Latest tag (date) Official docs
Entities (com.unity.entities) The ECS runtime: entities, components, systems, worlds, baking and SubScenes 1.5.0 (30 Sep 2026) Entities manual
Burst (com.unity.burst) Compiles a subset of C# (HPC#) jobs and static methods to optimised native code 1.8.31 (8 Oct 2026) Burst manual
C# Job System (built into the engine) Schedules work on worker threads with safety checks on shared data ships with the Editor Job system
Collections (com.unity.collections) Native containers (NativeList, NativeHashMap and others) usable from jobs and Burst 2.7.1 (30 Sep 2026) Collections manual
Mathematics (com.unity.mathematics) Vector and matrix types and math functions that Burst can vectorise 1.3.3 (2 Oct 2025) Mathematics manual
Entities Graphics (com.unity.entities.graphics) Renders entities with URP or HDRP 1.5.0 (30 Sep 2026) Entities Graphics manual
Unity Physics (com.unity.physics) Stateless, deterministic-friendly physics for entities 1.5.0 (30 Sep 2026) Unity Physics manual
Netcode for Entities (com.unity.netcode) Server-authoritative networking with client prediction for ECS 7.1.0 (3 Oct 2026) Covered in the Networking topic

Rules

  • DOTS-ADOPT-BY-LAYER — pick the smallest layer that solves the measured problem. A hot loop over plain arrays needs Jobs and Burst only. A simulation with thousands of similar things that are created, queried and destroyed needs Entities. Adopting Entities for a handful of unique objects adds baking, SubScenes and a second programming model for no gain. Check: the project's system blueprint names which layer is used and the measured count or cost that justified it (System design before code).
  • DOTS-PACKAGES-MOVE-TOGETHER — Entities, Entities Graphics, Unity Physics and Netcode for Entities are upgraded as one set. Their versions are released together (the 1.5.0 set above shares one date); mixing majors produces compile errors inside package code, not in yours. Check: Packages/manifest.json lists all installed DOTS packages at versions from the same release, and the project compiles with zero errors in a clean Library (Compilation & assembly membership).
  • BURST-IS-PROVEN-NOT-ASSUMED — a [BurstCompile] attribute is not evidence the code runs as Burst. When Burst cannot compile a job it reports an error and the job runs as ordinary managed code, and Burst compilation can be switched off from the Editor's Jobs menu. Check: the Burst Inspector lists the job or method as compiled, and a Profiler capture shows the job marker with the Burst label.
  • JOBS-COMPLETE-WHERE-READ — every scheduled job's handle is completed or chained before its output is read on the main thread. The safety system throws in the Editor when this is wrong, but only on the path that ran. Check: the Editor with safety checks enabled runs the feature end to end with no InvalidOperationException from the job safety system.
  • ONE-PARADIGM-SEAM — MonoBehaviour code and ECS code meet at one documented seam. Presentation, UI and services stay in GameObjects; simulation stays in systems. The seam rules live on ECS core mechanics.

Verify the stack

  1. Open the Package Manager and record the installed version of every package in the table above that the project uses.
  2. Enter Play mode and open Window > Entities > Systems; confirm your systems appear in the expected world and update.
  3. Open the Burst Inspector and confirm each hot job compiles.
  4. Capture one Profiler frame of the heavy scene and record the job timings; this is the baseline later changes are measured against (Performance & memory).

Where the detail lives