What changed in Prefect from 2 to 3
5 releases numbered after 2.20.26 up to and including 3.8.5, stable releases only. 2.20.26 and 3.8.5 are the newest stable releases of 2 and 3 we track; this page follows them as new ones ship.
75 changes across 5 releases
- Suggest existing deployment tags in the V2 deployments filter
- Add parameter overrides to the deployment schedule dialog
- Add id fields and matching filters to automation count and filter models
- Add time selection to the interval schedule anchor date
- Add a configurable base directory for included files
- Add an index on flow_run.deployment_id
- Open a parameters dialog when a quick run needs required parameters
- Show elapsed time for running flow runs in the V2 UI flow run header
- Add removable chips for multi-select enum array fields
- Send a Prefect User-Agent on WebSocket handshakes
- Virtualize the timezone select option list
- Show tooltips for flow run state tabs in the V2 UI
- Use current settings for resource label validation
- Use indexed flow run cleanup with separate orphan reconciliation
- Reduce event persister INSERT compilation CPU
- Stop fragmenting task run recorder bulk upserts
- Engage the auto-uv run launcher for process workers
- Block submission when a required array parameter is emptied in the V2 UI
- Support new Microsoft Teams and Power Automate webhook URLs
- Keep run-context related resources within the maximum an event permits
- Keep enum selection in the Quick Run dialog from navigating away
- Keep deployment concurrency lease across flow retry transitions
- Fix scheduled flow run polling
- Remove the unbounded flow run count from the dashboard empty-state check
- Avoid importing pandas when prefect.cache_policies is imported
- Keep the flow run tooltip on the hovered run while moving into it
- Use the const value when a literal branch is selected in a schema form
- Fix dashboard flow run query ordering
- Avoid overwriting a final flow run state with Crashed after a post-completion SIGTERM
- Fix the automation SDK filter model
- Apply jitter around the backed-off interval in critical_service_loop
- Fix spacing between items in the create flow run form
- Prevent runners from overwriting handled flow-run outcomes
- Fix ProcessWorker auto-uv after pull steps
- Honor a prefetch_seconds of 0 in BaseWorker
- Use total_seconds in the worker polling healthcheck
- Bind-mount the sdist so it stops shipping in the published image
- Bind-mount the sdist in client/Dockerfile so it stops shipping in the client image
- Fix the lateness label on flow run cards in the V2 UI
- Fix readable run durations in the V2 UI
- Carry rounded-up seconds into larger units in the V2 UI
- Fix invisible run graph nodes by passing skipUpdateTransform=false
- Fix inconsistent deployment status display on the flow detail page in the V2 UI
- Do not overwrite in-flight schema form edits with stale parent values
- Preserve a statement cache size of 0
- Reject option-like Git branch values
- Stop leaking watcher-thread timeout enforcers
- Send basic auth header on the self-hosted events WebSocket handshake
- Confirm suspension events against the flow run instead of state-by-id
- Select a valid anyOf branch for record values in V2 UI schema forms
- Select the matching enum branch for anyOf string values in V2 UI schema forms
- Persist explicit null values from the schema form null branch
- Fix nested deployment parameter rendering in the V2 UI
- Render sanitized inline HTML in markdown content in the V2 UI
- Stop applying inline code styling inside fenced code blocks in the V2 UI
- Show all timezones in the timezone select
- Propagate array item edits and link deployments from the flow page
- Preserve an empty array when clearing list parameter selections
- Open the date picker calendar on the selected date's month
- Normalize settings paths for cross-OS context transport
- Raise ValueError for negative timeouts in PrefectFutureList.result, as_completed, and wait
- Fix a tooltip hiding behind a chart row
- Release concurrency leases granted to callers that were cancelled mid-acquire
- Keep setuptools in conda Docker images
- Make ConcurrencyContext exit cleanup best-effort
- Keep worker startup alive when the Prefect API is unreachable
- Make PrefectFutureList.result timeout message reachable
- Render ANSI color escape codes in flow run logs in the V2 UI
- Confirm the exact suspension transition reported by a suspension event
- Allow any float precision on schema number inputs in the V2 UI
- Reject unknown fields for FlowRunFilter and its nested criteria
- Relinquish evicted flow runs to infrastructure retry
- Fix saved block parameters in deployments
- Preserve subprocesses after output stream errors
- Clear stale expiration entries when a repossessed lease is missing
Original release notes, newest first
The list above is our reading of these notes; the originals from Prefect are here, one fold per release.
3.8.53.8.5 - A little jitter never hurt anybody
Enhancements ➕➕
- Suggest existing deployment tags in the V2 deployments filter by @devin-ai-integration[bot] in #22939
- Use current settings for resource label validation by @chuqCTC in #22959
- Add parameter overrides to the deployment schedule dialog by @devin-ai-integration[bot] in #22805
- Use indexed flow run cleanup with separate orphan reconciliation by @devin-ai-integration[bot] in #22875
- Add
idfields and matching filters to automation count and filter models by @znicholasbrown in #22944 - Reduce event persister
INSERTcompilation CPU by @chuqCTC in #22961
Bug Fixes 🐞
- Support new Microsoft Teams and Power Automate webhook URLs by @Roshan931 in #22908
- Keep run-context related resources within the maximum an event permits by @devin-ai-integration[bot] in #22835
- Keep enum selection in the Quick Run dialog from navigating away by @vyagubov in #22953
- Keep deployment concurrency lease across flow retry transitions by @devin-ai-integration[bot] in #22886
- Fix scheduled flow run polling by @devin-ai-integration[bot] in #22970
- Remove the unbounded flow run count from the dashboard empty-state check by @devin-ai-integration[bot] in #22920
- Avoid importing
pandaswhenprefect.cache_policiesis imported by @devin-ai-integration[bot] in #22999 - Keep the flow run tooltip on the hovered run while moving into it by @devin-ai-integration[bot] in #23012
- Use the
constvalue when a literal branch is selected in a schema form by @devin-ai-integration[bot] in #22911 - Fix dashboard flow run query ordering by @devin-ai-integration[bot] in #22917
- Avoid overwriting a final flow run state with
Crashedafter a post-completionSIGTERMby @devin-ai-integration[bot] in #23026 - Fix the automation SDK filter model by @znicholasbrown in #22945
- Apply jitter around the backed-off interval in
critical_service_loopby @ethanstoner in #22980 - Fix spacing between items in the create flow run form by @uinstinct in #23000
- Center the plus icon in the automation deployment combobox by @uinstinct in #23014
- Fix border rounding in the date selector by @uinstinct in #22735
- Remove placeholder fields from the create automation page by @uinstinct in #23027
Integrations & Dependencies 🤝
- Bump
snowflake-connector-pythonfrom 4.4.0 to 4.7.1 by @dependabot[bot] in #22996 - Bump
browserslistfrom 4.25.1 to 4.28.8 in the V2 UI by @dependabot[bot] in #23010 - Bump
fast-urifrom 3.1.5 to 3.1.7 in the V2 UI by @dependabot[bot] in #23021 - Bump
@xmldom/xmldomfrom 0.8.13 to 0.8.15 in the V2 UI by @dependabot[bot] in #23022 - Bump
@humanfs/nodefrom 0.16.6 to 0.16.8 in the V2 UI by @dependabot[bot] in #23020 - Bump
qsfrom 6.15.2 to 6.16.0 in the legacy UI by @dependabot[bot] in #23023
Development & Tidiness 🧹
- Add a deployments-list regression test for the Quick Run enum dropdown by @devin-ai-integration[bot] in #22955
- Fix the CI Pyright check that silently analyzed no files by @devin-ai-integration[bot] in #22827
- Make
prefect_test_harnesssettings visible in isolated asyncio test cases by @devin-ai-integration[bot] in #22962 - Reverify work pool state after navigation in the empty-state test by @devin-ai-integration[bot] in #22933
- Make the test
storage_document_idfixture and block data encryption deterministic by @devin-ai-integration[bot] in #22966 - Fix two flaky unit tests on
mainby @devin-ai-integration[bot] in #22977 - Fix four Pyright errors that failed static analysis on
mainby @devin-ai-integration[bot] in #22963
Documentation 📓
- Add Prefect Cloud scope of support documentation by @devin-ai-integration[bot] in #22923
- Fix the Python client example in the tag-based concurrency limits guide by @uinstinct in #22770
- Document how to disable logging by @znicholasbrown in #23017
- Clarify that process worker project detection runs after pull steps by @github-actions[bot] in #22940
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.8.4...3.8.5
3.8.43.8.4 - Seconds of the world, unite!
Enhancements ➕➕
- Add time selection to the interval schedule anchor date by @devin-ai-integration[bot] in #22872
- Add a configurable base directory for included files by @desertaxle in #22855
- Add an index on
flow_run.deployment_idby @devin-ai-integration[bot] in #22890 - Open a parameters dialog when a quick run needs required parameters by @devin-ai-integration[bot] in #22903
Bug Fixes 🐞
- Prevent runners from overwriting handled flow-run outcomes by @desertaxle in #22821
- Fix
ProcessWorkerauto-uv after pull steps by @desertaxle in #22857 - Honor a
prefetch_secondsof 0 inBaseWorkerby @ckarnell in #22836 - Use
total_secondsin the worker polling healthcheck by @tushardev-365 in #22900 - Bind-mount the sdist so it stops shipping in the published image by @sujeito-operator in #22832
- Bind-mount the sdist in
client/Dockerfileso it stops shipping in the client image by @devin-ai-integration[bot] in #22833 - Fix the lateness label on flow run cards in the V2 UI by @devin-ai-integration[bot] in #22896
- Fix readable run durations in the V2 UI by @devin-ai-integration[bot] in #22922
- Carry rounded-up seconds into larger units in the V2 UI by @nolantonio in #22915
- Fix invisible run graph nodes by passing
skipUpdateTransform=falseby @vyagubov in #22849 - Fix inconsistent deployment status display on the flow detail page in the V2 UI by @vyagubov in #22901
- Do not overwrite in-flight schema form edits with stale parent values by @devin-ai-integration[bot] in #22905
Integrations & Dependencies 🤝
- Follow CodeQL v4 releases by @prefect-renovate[bot] in #22924
Development & Tidiness 🧹
- Add repository code review guidance by @desertaxle in #22906
- Use
pytest-splitfor Python 3.12/Postgres tests by @desertaxle in #22869 - Add opt-in Logfire test profiling by @desertaxle in #22852
- Pass the release ref through env in the prerelease tag check by @WAHIB-EL-KHADIRI in #22882
- Make tests independent of ambient OpenTelemetry context and non-setting
PREFECT_env vars by @devin-ai-integration[bot] in #22867 - Deflake concurrency lease tests by waiting for the API-visible slot release by @devin-ai-integration[bot] in #22884
- Scope the deployment name assertion to the breadcrumb in the flaky runs tab test by @devin-ai-integration[bot] in #22878
- Scope details assertions to the sidebar in the flaky deployment detail e2e tests by @devin-ai-integration[bot] in #22880
- Scope block cleanup to a single test in the flaky blocks e2e test by @devin-ai-integration[bot] in #22892
- Scope metadata assertions to the sidebar in the flaky work pool detail e2e test by @devin-ai-integration[bot] in #22899
Documentation 📓
- Update the Google Tag Manager ID in
docs.jsonby @zzstoatzz in #22891 - Add new Prefect Managed outbound IPs by @mitchnielsen in #22934
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.8.3...3.8.4
3.8.33.8.3 - Insert batching pun here
Enhancements ➕➕
- Stop fragmenting task run recorder bulk upserts by @chuqCTC in #22808
- Engage the auto-
uv runlauncher for process workers by @devin-ai-integration[bot] in #22723 - Show elapsed time for running flow runs in the V2 UI flow run header by @vyagubov in #22811
- Block submission when a required array parameter is emptied in the V2 UI by @devin-ai-integration[bot] in #22750
Bug Fixes 🐞
- Preserve a statement cache size of 0 by @ckarnell in #22767
- Reject option-like Git branch values by @desertaxle in #22819
- Stop leaking watcher-thread timeout enforcers by @devin-ai-integration[bot] in #22817
- Send basic auth header on the self-hosted events WebSocket handshake by @devin-ai-integration[bot] in #22813
- Confirm suspension events against the flow run instead of state-by-id by @joshuastagner in #22820
- Select a valid
anyOfbranch for record values in V2 UI schema forms by @devin-ai-integration[bot] in #22806 - Select the matching enum branch for
anyOfstring values in V2 UI schema forms by @devin-ai-integration[bot] in #22754 - Persist explicit null values from the schema form null branch by @devin-ai-integration[bot] in #22774
- Fix nested deployment parameter rendering in the V2 UI by @Abhinav0905 in #22760
- Render sanitized inline HTML in markdown content in the V2 UI by @devin-ai-integration[bot] in #22763
- Stop applying inline code styling inside fenced code blocks in the V2 UI by @devin-ai-integration[bot] in #22771
Development & Tidiness 🧹
- Tidy up the task run recorder bulk upsert path by @devin-ai-integration[bot] in #22814
- Make
FileSystemLockManagerhold-timeout tests time-independent by @devin-ai-integration[bot] in #22716
Documentation 📓
- Close an unterminated code block in a
flowsdocstring by @cbrown1234 in #22802 - Update the order of the guide by @anthonyylee in #22687
- Fix the
.deploy()example in the versioning how-to guide by @uinstinct in #22810
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.8.2...3.8.3
3.8.23.8.2 - Array we there yet?
Enhancements ➕➕
- Add removable chips for multi-select enum array fields by @vyagubov in #22738
- Send a Prefect
User-Agenton WebSocket handshakes by @devin-ai-integration[bot] in #22706 - Virtualize the timezone select option list by @devin-ai-integration[bot] in #22740
Bug Fixes 🐞
- Show all timezones in the timezone select by @devin-ai-integration[bot] in #22686
- Propagate array item edits and link deployments from the flow page by @devin-ai-integration[bot] in #22726
- Preserve an empty array when clearing list parameter selections by @vyagubov in #22737
- Open the date picker calendar on the selected date's month by @devin-ai-integration[bot] in #22699
- Normalize settings paths for cross-OS context transport by @devin-ai-integration[bot] in #22700
- Raise
ValueErrorfor negative timeouts inPrefectFutureList.result,as_completed, andwaitby @kingsley-123 in #22692 - Fix a tooltip hiding behind a chart row by @uinstinct in #22707
- Release concurrency leases granted to callers that were cancelled mid-acquire by @devin-ai-integration[bot] in #22621
- Keep
setuptoolsin conda Docker images by @devin-ai-integration[bot] in #22743
Development & Tidiness 🧹
- Migrate to Renovate and retire Dependabot by @jamiezieziula in #22719
Documentation 📓
- Document how
followsestablishes event ordering for automation triggers by @chrisguidry in #22710 - Correct event trigger examples to match actual matching semantics by @bunchesofdonald in #22690
- Fix incorrect examples in the global concurrency limits docs by @uinstinct in #22724
- Fix text not visible in an image by @uinstinct in #22661
- Fix docstring
Argsentries that name a parameter the function does not take by @darkdi in #22733 - List 3.7 and 3.8 release notes and link the Prefect Cloud changelog by @devin-ai-integration[bot] in #22702
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.8.1...3.8.2
3.8.13.8.1 - To relinquish, perchance to retry
Enhancements ➕➕
- Show tooltips for flow run state tabs in the V2 UI by @uinstinct in #22617
Bug Fixes 🐞
- Make
ConcurrencyContextexit cleanup best-effort by @devin-ai-integration[bot] in #22619 - Keep worker startup alive when the Prefect API is unreachable by @devin-ai-integration[bot] in #22640
- Make
PrefectFutureList.resulttimeout message reachable by @devin-ai-integration[bot] in #22634 - Render ANSI color escape codes in flow run logs in the V2 UI by @devin-ai-integration[bot] in #22653
- Confirm the exact suspension transition reported by a suspension event by @devin-ai-integration[bot] in #22649
- Allow any float precision on schema number inputs in the V2 UI by @AJ-ing in #22643
- Reject unknown fields for
FlowRunFilterand its nested criteria by @devin-ai-integration[bot] in #22659 - Relinquish evicted flow runs to infrastructure retry by @chuqCTC in #22622
- Fix saved block parameters in deployments by @desertaxle in #22568
- Preserve subprocesses after output stream errors by @desertaxle in #22573
- Clear stale expiration entries when a repossessed lease is missing by @devin-ai-integration[bot] in #22657
Development & Tidiness 🧹
- Fix codespell error on unit test
TEST_BLOCK_CODE_BAD_SYNTAXon Windows by @g-ringeisen in #22642 - Drop unused global
mintlify-scrapeinstall from static analysis by @devin-ai-integration[bot] in #22677
Documentation 📓
- Add missing line break after imports in documentation examples by @uinstinct in #22627
- Document
SubmittingandInfrastructurePendingstates by @devin-ai-integration[bot] in #22660 - Fix flows documentation link to the getting started page by @uinstinct in #22648
Full Changelog: https://github.com/PrefectHQ/prefect/compare/3.8.0...3.8.1