Released on October 31, 2025
With the removal of Python 3.9 support, Prefect now requires Python 3.10 or later. This means you can finally say goodbye to from __future__ import annotations in your workflow code—native type annotations are now standard! This release also removes several long-deprecated features, including Runner functionality and system Blocks. Check the Breaking Changes section below for details.
Enhancements ➕➕
- Add
on_runninghook support for tasks by @zzstoatzz in #19277 - Allow using Field descriptions directly in Flow parameters (#13912) by @jmesterh in #19281
- Add
PREFECT_SERVER_UI_SHOW_PROMOTIONAL_CONTENTsetting by @zzstoatzz in #19299
Breaking Changes
- Remove Python 3.9 support by @desertaxle in #19273
- Remove deprecated
Runnerfunctionality and system Blocks by @desertaxle in #19307
Bug Fixes 🐞
- Fix forward reference resolution in
ValidatedFunctionby @desertaxle in #19289 - Fix
datetimeparameter serialization inrun_deploymentby @zzstoatzz in #19278 - Fix time zone normalization bug in interval schedules by @zzstoatzz in #19301
- Fix multiprocessing deadlock after using
prefect_test_harnesson Linux by @zzstoatzz in #19116
Development & Tidiness 🧹
- Update
typerminimum to0.16.0forclick>=8.2compatibility by @zzstoatzz in #19269 - Remove weird language by @zzstoatzz in #19271
- Update
justrecipes to use 3.10 for lowest python by @zzstoatzz in #19297 - Fix duration in
generate_deprecation_messageby @desertaxle in #19314 - Fix
RRuleScheduletest flakiness from DST-dependent date by @zzstoatzz in #19305 - Add debug log for fork handler registration failure by @zzstoatzz in #19311
Documentation 📓
- Add global concurrency limits concept doc and refactor how-to guide by @desertaxle in #19231
Full Changelog: 3.4.25...3.5.0