Runtime upgrades

Fabric Runtime bumps Spark, Delta, Python, and Java together. Treat it like a dependency upgrade, not a surprise.

What a Runtime is

A Fabric Runtime is a pinned set of Spark, Delta Lake, Java, Scala, Python, and pre-installed library versions. Microsoft releases a new one roughly yearly and supports the previous one for a deprecation window.

RuntimeSparkDeltaPythonStatus (as of 2026)
1.13.32.23.10Retired
1.23.42.43.10Deprecated
1.33.53.x3.11GA / default

Always confirm current versions in the Fabric docs — this table drifts.

Why it bites

  • Behavior changes in Spark minor versions: ANSI SQL defaults, timestamp parsing, INT96 handling, implicit cast rules.
  • Delta protocol upgrades: new writer features (deletion vectors, liquid clustering) can raise the table's minWriterVersion so older Runtimes can no longer write it.
  • Library versions: pandas 1.x → 2.x, numpy 1.x → 2.x break silently.

Upgrade procedure

Pin, don't float

Set the Runtime explicitly on every Environment. Never rely on "default" — the default changes under you.

Clone the Environment

Create prod-runtime-1.3 alongside prod-runtime-1.2. Environments are CI/CD items — do this in a feature branch.

Run the regression set

Point your integration notebooks and pipeline test runs at the new Environment. Assert row counts, schema hashes, and CU per run against recorded baselines.

Check Delta protocol

spark.sql("DESCRIBE DETAIL my_table").select("minReaderVersion", "minWriterVersion").show()

If a new writer feature bumped the version, confirm every engine that writes the table is on a compatible Runtime before promoting.

Flip Environments via deployment pipeline

Change the Environment binding as a normal deployment, not a manual edit in prod. See Deployment pipelines.

Keep the old Environment for one cycle

Roll back = re-point the binding. Delete the old Environment only after a full business cycle (usually a month-end close) has run clean.

Common breakages and fixes

ANSI mode. Newer Spark defaults spark.sql.ansi.enabled toward true. Overflow and invalid casts that used to return NULL now raise. Either fix the data/queries (preferred) or explicitly set it false on the Environment while you migrate.

  • Timestamp parsing — set spark.sql.legacy.timeParserPolicy to CORRECTED and fix format strings rather than reverting to LEGACY.
  • pandas 2.xdf.append removed (use pd.concat), iteritems removed.
  • spark.read.csv schema inference — stricter; provide explicit schemas.

Stay ahead of Fabric changes

Fabric runtime changes, API updates, and deprecations. No spam, unsubscribe anytime.

On this page