# Dagster 1.12: Monster Mash

> Dagster 1.12 makes data orchestration faster, simpler, and more reliable with a redesigned UI, Components GA, streamlined deployment workflows, and major orchestration upgrades.

Source: https://dagster.io/blog/dagster-1-12-monster-mash
Published: 2025-10-30

## **Highlights**

Dagster 1.12 continues our mission to make data orchestration faster, simpler, and more reliable from a redesigned UI to powerful new Components and deployment shortcuts.

- A **refreshed UI** with a cleaner layout and collapsible sidebar
- <strong>Components are now GA, </strong> with new integrations and state-backed capabilities
- **Simplified deployment**
- workflows with `dg scaffold` for Docker + GitHub Actions
- **FreshnessPolicies GA**, replacing the legacy freshness API
- Quality-of-life upgrades for backfills, partitions, and executor behavior
- A brand-new **Support Center** and reorganized docs with dozens of new examples

Let’s dig in.

## **A Refreshed, Streamlined UI**

We’ve redesigned Dagster’s UI to make it faster, cleaner, and easier to navigate. The top navigation has been reimagined as a **collapsible sidebar**, freeing up visual space and bringing your most-used workflows, like runs, assets, and deployments, front and center.

The result is a more cohesive and intuitive experience across **Dagster+ Hybrid** and **Serverless**, designed to help you find what you need at a glance and stay focused on building.

![](https://dagster.io/blog-assets/aea84f995ef9c752a0ac.gif)

## **Components GA**

After extensive testing and community feedback, the Components framework and the `dg` CLI are now Generally Available and fully supported across the Dagster platform.

This milestone cements Components as the **default foundation for new Dagster projects**, providing a unified, composable way to define and manage integrations, resources, and orchestration logic across your data stack.

### **Standardized Integrations**

We’ve standardized the interface for integration components, making them easier to customize and extend. Each component now exposes two consistent methods, `execute()` and `get_asset_spec()`, which can be subclassed or overridden for advanced customization.

This unified interface means integrations behave predictably across the platform, making it simpler to tailor components to your environment without reinventing the wheel.

Here’s an example of how you might extend a component with custom logic:

```javascript theme=classic
from collections.abc import Iterator
from dagster_sling import (
    SlingReplicationCollectionComponent,
    SlingReplicationSpecModel,
    SlingResource,
)
import dagster as dg

class CustomSlingReplicationComponent(SlingReplicationCollectionComponent):
    def execute(
        self,
        context: dg.AssetExecutionContext,
        sling: SlingResource,
        replication_spec_model: SlingReplicationSpecModel,
    ) -> Iterator:
        # Add custom logging before execution
        context.log.info("Custom")
        # Call the sling replicate with debug mode enabled
        return sling.replicate(context=context, debug=True)
```

### **More Components, More Power**

We’ve added a new batch of integration components to simplify setup with common analytics and data tools:

- [SigmaComponent](https://docs.dagster.io/integrations/libraries/sigma)
- [LookerComponent](https://docs.dagster.io/integrations/libraries/looker)
- [TableauComponent](https://docs.dagster.io/integrations/libraries/tableau)
- [OmniComponent](https://docs.dagster.io/integrations/libraries/omni)

These join the growing [collection of out-of-the-box Components](https://docs.dagster.io/integrations/libraries) built to make your pipelines interoperable by default, reducing setup friction and accelerating integration across your data ecosystem.

### **State-Backed Components**

A big step forward for reliability and maintainability, the new [StateBackedComponent](https://docs.dagster.io/guides/build/components/state-backed-components) base class enables components to persist and manage state separately from YAML / Python configuration. This is especially valuable for integrations that fetch or synchronize external data.

State can now be stored **locally**, in **versioned storage**, or **via code-server snapshots**. Many popular integrations like: 

- [AirbyteWorkspaceComponent](https://docs.dagster.io/integrations/libraries/airbyte/airbyte-component)
- [FivetranAccountComponent](https://docs.dagster.io/integrations/libraries/fivetran)
- [PowerBIWorkspaceComponent](https://docs.dagster.io/integrations/libraries/powerbi)
- [AirflowInstanceComponent](https://docs.dagster.io/integrations/libraries/airlift)
- [DbtProjectComponent](https://docs.dagster.io/integrations/libraries/dbt)

```javascript theme=classic
# defs.yaml
type: dagster_fivetran.FivetranAccountComponent
attributes:
  ...
  defs_state:
    management_type: LOCAL_FILESYSTEM
```

## **Simplified Deployment**

You shouldn’t have to wrestle with CI/CD just to get a Dagster project online. Two new `dg scaffold` commands make deployment practically plug-and-play:

- `dg scaffold build-artifacts` Generates Docker and configuration files to build and deploy your project to Dagster Cloud, complete with support for multiple container registries (ECR, Docker Hub, GHCR, ACR, GCR).
- `dg scaffold github-actions` Spins up a complete GitHub Actions workflow for CI/CD deployment to Dagster Cloud. It auto-detects Serverless vs Hybrid agents and walks you through setting up required secrets.

These commands make it easy to bootstrap production-ready pipelines and keep them running smoothly.

## **Core Orchestration Upgrades**

This update brings **FreshnessPolicies** to General Availability and adds new orchestration features designed for reliability and scalability.

Originally introduced in 1.10, the new [FreshnessPolicy](https://docs.dagster.io/guides/observe/asset-freshness-policies) API is now stable and replaces the old `LegacyFreshnessPolicy`.

- `FreshnessPolicy` is now exported directly from dagster.
- The `FreshnessDaemon` runs by default, no dagster.yaml switch needed.
- Old `build_*_freshness_checks` methods are marked “superceded,” but remain functional for backward compatibility.

Use `FreshnessPolicy` for all new use cases to get better visibility and control over asset staleness.

### **Configurable Backfills**

You can now provide **run config** when launching a backfill, letting you define consistent settings across all runs, perfect for parameterized replays or targeted batch updates.

### **Time-Based Partition Exclusions**

`TimeWindowPartitionsDefinition`

now supports an `exclusions` parameter. This lets you skip weekends, holidays, or maintenance windows, specified as cron strings or datetime objects,  for fine-grained control over scheduling.

```javascript theme=classic
import dagster as dg
from datetime import datetime

daily_partitions = dg.DailyPartitionsDefinition(
    start_date="2022-03-12",
    exclusions=["0 0 * * 0", "0 0 * * 6"]  # Exclude Sundays and Saturdays
)
```

### **Execution Dependency Options**

All Executors now accept a `step_dependency_config` with `require_upstream_step_success`.

Set it to `False` to allow downstream steps to start as soon as their required upstream outputs are ready, even if other outputs from that step are still running.

This is a huge win for multi-asset parallelism and complex dependency graphs.

## **Support & Docs Improvements**

We’ve launched a brand-new [Support Center](https://support.dagster.io/) with guides and troubleshooting content for both Dagster+ Hybrid and Serverless. You’ll find curated answers from our support team, now fully self-serve.

In the [docs](https://docs.dagster.io/), we’ve gone deep on reorganization and new content:

- **New guides:** troubleshooting hybrid deployments, diagnosing slow code with py-spy, and resolving sensor timeout issues.
- **Examples overhaul:** the [Examples](https://docs.dagster.io/examples) section has easier navigation including quick links to Dagster University, our internal Dagster platform, and customer Deep Dives. As well as new examples for [DSpy](https://docs.dagster.io/examples/full-pipelines/dspy), [PyTorch](https://docs.dagster.io/examples/full-pipelines/ml), and advanced mini-examples covering dynamic fanout, caching, parallelism, and code-sharing.

## **Acknowledgments**

This release was made possible by feedback from our users and contributors, your bug reports, feature requests, and insights shape Dagster every day.

- [pmartincalvo](https://github.com/pmartincalvo)
- [elipinska](https://github.com/elipinska)
- [piggybox](https://github.com/piggybox)
- [bollwyvl](https://github.com/bollwyvl)
- [aksestok](https://github.com/aksestok)
- [SoerenStahlmann](https://github.com/SoerenStahlmann)
- [2bxtech](https://github.com/2bxtech)
- [kkanter-asml](https://github.com/kkanter-asml)
- [MandyMeindersma](https://github.com/MandyMeindersma)
- [DominikHallab](https://github.com/DominikHallab)
- [zyd14](https://github.com/zyd14)
- [nathanskone](https://github.com/nathanskone)
- [edgarrmondragon](https://github.com/edgarrmondragon)
- [stevenayers](https://github.com/stevenayers)
- [RobBrownFreeAgent](https://github.com/RobBrownFreeAgent)
- [charlottevdscheun](https://github.com/charlottevdscheun)
- [aaronprice00](https://github.com/aaronprice00)
- [aleewen](https://github.com/aleewen)
- [dschafer](https://github.com/dschafer)
- [chazmo03](https://github.com/chazmo03)
- [dwisdom0](https://github.com/dwisdom0)
- [jmccartin](https://github.com/jmccartin)
- [CarlyAThomas](https://github.com/CarlyAThomas)
- [BoLiuV5](https://github.com/BoLiuV5)
- [ajohnson5](https://github.com/ajohnson5)
- [j1wilmot](https://github.com/j1wilmot)
- [yumazak](https://github.com/yumazak)
- [brunobbaraujo](https://github.com/brunobbaraujo)
- [CompRhys](https://github.com/CompRhys)
- [HynekBlaha](https://github.com/HynekBlaha)
- [kevJ711](https://github.com/kevJ711)
- [tintamarre](https://github.com/tintamarre)
- [nhuray](https://github.com/nhuray)
- [EFox2413](https://github.com/EFox2413)
- [oohwooh](https://github.com/oohwooh)
- [emmanuel-ferdman](https://github.com/emmanuel-ferdman)
