1.16
Type
External
Status
Published
Created
Mar 3, 2026
Updated
May 19, 2026
Updated by
Dosu Bot
Source
View

Release highlights: 1.16#

dlt Education now in docs#

Our free education courses are now part of the official documentation and can be launched directly in Google Colab.

Try them here!


Smarter timestamp handling#

This release brings a major cleanup and unification of how dlt handles timestamps and timezones. Both tz-aware and naive timestamps are now processed consistently across normalizers and destinations. dlt now also preserves the exact timestamp type when using incremental cursors, preventing subtle mismatches during reloads.

It also fixes several tricky edge cases — such as nanosecond precision in MSSQL — and ensures that all time types behave as documented (always naive, in UTC). Destinations now explicitly declare which timestamp formats they support, so dlt adjusts automatically.

Example:

@dlt.resource(
   name='my_table',
   columns={
      "my_column": {
          "data_type": "timestamp",
          "timezone": True}}
)
def my_resource():
    ...

# Output:
# naive timestamp → UTC tz-aware
# "2024-05-01 12:00:00" → "2024-05-01 12:00:00+00:00"

# tz-aware timestamp with timezone=False → UTC converted, then naive
# "2024-05-01 12:00:00+02:00" → "2024-05-01 10:00:00"

The result: predictable, precise timestamp behavior across all sources, transformations, and destinations.

Read more →


Visualization updates#

  • New beta dashboard

    The Streamlit app is now replaced by the dlt Dashboard. Run dlt dashboard to explore your pipelines with an improved interface and real-time insights. Learn more here.

    dashboard-overview.png

  • Export schema graphs with dlt.Schema.to_dot(). More about schema export here.

    477615341-202f1937-8697-4bc9-acf1-e7b6ac7e9970.png


Shout-out to new contributors#

Big thanks to our newest contributors:


Full release notes

View the complete list of changes →