Considerations when using Simulations

Last updated: March 30, 2026

Official Documentation: https://docs.upbound.io/manuals/cli/howtos/simulations

Simulations are an alpha feature and are not meant to be more than a demo product. They are useful for understanding how configuration changes propagate through compositions and XRs, but have limitations due to providers not running and the non-deterministic nature of reconciliation.

What simulations are (currently capable of):

  • A dry-run mechanism that runs in a simulated control plane created by cloning the current state

  • Runs compositions and functions with the current inputs to show how changes propagate through the system

  • Produces a diff based on the state at the time the simulation is stopped

  • Provides a way to understand how an upgrade to a composition or XR will propagate and what the net result of those changes will be

What simulations are not (currently capable of):

  • Not equivalent to a Terraform dry run and cannot produce the same quality of output due to the non-deterministic nature of Crossplane reconciliation

  • Providers do not run in the simulated control plane

    • No interaction with external systems

    • No provider-populated status fields

  • Cannot compose resources that rely on the status of managed resources

  • Simulation completion is based on a fixed amount of time, not when reconciliation has reached a stable result

    • The diff reflects only what was produced at the time the simulation is stopped

    • Results may not reach a conclusive or stable state