menu_bookDocumentation

Component Execution Order: Lifecycle Flow and GameObjectSystem Ordering

calendar_today May 20, 2026 schedule ~1 min read person PatrickJr verified 50

s&box component execution order determines when lifecycle methods are called. You should not rely on the order in which the same callback gets invoked for different GameObjects — it is not predictable. Use a GameObjectSystem for controlled ordering.

Execution Flow

The scene processes components in this order each frame:

  1. OnLoad (async) — during scene loading, loading screen stays open
  2. OnAwake — once after deserialization, if parent is enabled
  3. OnStart — first time component is enabled, before first OnFixedUpdate
  4. OnEnabled — each time component becomes enabled
  5. OnFixedUpdate — every fixed timestep (physics tick)
  6. OnUpdate — every frame
  7. OnPreRender — every frame before rendering (not on dedicated servers)
  8. OnDisabled — when component becomes disabled
  9. OnDestroy — when component is destroyed
For a component to be considered enabled, its GameObject and all ancestor GameObjects must also be enabled. If you need deterministic ordering between different component types, implement a GameObjectSystem with explicit execution order control.
Was this helpful?