The new flow run page is a lot better! There are s...
# gratitude
j
The new flow run page is a lot better! There are several things I had given some feedback about too, that I can see changed, not that I’m taking credit for that. 😉
❤️ 6
🚀 2
k
I've read through all the feedback, including yours, so many times 😅. I'm super appreciative of all your opinions since you started using Prefect, so please don't stop sharing them!
upvote 2
🙏 1
j
Haha I was worried I was being a nuisance. Thank you for listening, and doing a great job!
I shared it with my team too and everyone is greatly appreciating the changes!
Some feedback from some debugging just now: We were trying to figure out why a flow run’s state changed to crashed, and then to completed, 8 hours later. On the flow run page, it would be helpful to a. see state transitions, and b. state details (e.g. the message and timestamp). For now, I wrote some quick Python to get the data:
Copy code
#+begin_src python :dir .. :python "uv run python" :results output
import asyncio
from uuid import UUID
from prefect.client.orchestration import get_client

async def main():
    client = get_client()
    flow_run_id = UUID("068ee452-a5a9-7017-8000-0a8be9e28f45")
    flow_run_states = await client.read_flow_run_states(flow_run_id)
    for flow_run_state in flow_run_states:
        print(flow_run_state, flow_run_state.timestamp, flow_run_state.data, flow_run_state.state_details)

asyncio.run(main())
#+end_src

#+RESULTS:
: Scheduled('Run from the Prefect UI with defaults') 2025-10-14 12:42:18.340196+00:00 None flow_run_id=UUID('068ee452-a5a9-7017-8000-0a8be9e28f45') task_run_id=None child_flow_run_id=None scheduled_time=datetime.datetime(2025, 10, 14, 12, 42, 18, 340247, tzinfo=TzInfo(UTC)) cache_key=None cache_expiration=None deferred=None untrackable_result=False pause_timeout=None pause_reschedule=False pause_key=None run_input_keyset=None refresh_cache=None retriable=None transition_id=None task_parameters_id=None traceparent=None deployment_concurrency_lease_id=None
: Pending() 2025-10-14 12:42:25.093328+00:00 None flow_run_id=UUID('068ee452-a5a9-7017-8000-0a8be9e28f45') task_run_id=None child_flow_run_id=None scheduled_time=datetime.datetime(2025, 10, 14, 12, 42, 18, 340247, tzinfo=TzInfo(UTC)) cache_key=None cache_expiration=None deferred=None untrackable_result=False pause_timeout=None pause_reschedule=False pause_key=None run_input_keyset=None refresh_cache=None retriable=None transition_id=UUID('59022fd7-9dd6-415c-9b60-164641110e49') task_parameters_id=None traceparent=None deployment_concurrency_lease_id=UUID('640c7152-84fe-49ac-9088-d786371fe196')
: Running() 2025-10-14 12:43:12.735854+00:00 None flow_run_id=UUID('068ee452-a5a9-7017-8000-0a8be9e28f45') task_run_id=None child_flow_run_id=None scheduled_time=None cache_key=None cache_expiration=None deferred=None untrackable_result=False pause_timeout=None pause_reschedule=False pause_key=None run_input_keyset=None refresh_cache=None retriable=None transition_id=UUID('ee675cd8-07a2-4f94-b504-0e657d219af2') task_parameters_id=None traceparent=None deployment_concurrency_lease_id=None
: Crashed('Flow run marked as crashed due to missing heartbeats.') 2025-10-14 14:43:39.840736+00:00 None flow_run_id=UUID('068ee452-a5a9-7017-8000-0a8be9e28f45') task_run_id=None child_flow_run_id=None scheduled_time=None cache_key=None cache_expiration=None deferred=None untrackable_result=False pause_timeout=None pause_reschedule=False pause_key=None run_input_keyset=None refresh_cache=None retriable=None transition_id=None task_parameters_id=None traceparent=None deployment_concurrency_lease_id=None
: Completed() 2025-10-14 20:00:22.771608+00:00 None flow_run_id=UUID('068ee452-a5a9-7017-8000-0a8be9e28f45') task_run_id=None child_flow_run_id=None scheduled_time=None cache_key=None cache_expiration=None deferred=None untrackable_result=False pause_timeout=None pause_reschedule=False pause_key=None run_input_keyset=None refresh_cache=None retriable=None transition_id=UUID('1186ba3f-e978-4e49-a46f-b192bdbae370') task_parameters_id=None traceparent=None deployment_concurrency_lease_id=None
k
you can see state transitions by opening the logs filter menu and checking
Show events
. Showing the full details of those events is an open issue for us to add to the page before taking it out of preview :)
🙏 1
j
Amazinggg, I hadn’t noticed the
Show events
. It’s ironic, considering I did report about them being a little spammy, haha. This separate toggle is a nice approach!
❤️ 1
Just coming in again to say that I’ve noticed a ton of other smaller things too, like the workspace/profile dropdown, that are all very nice!
I would give you a fiver though for auto-theme switching to match my system preference 😉
k
and our new unified settings menu 👀 @nicholas
j
Yes! I was showing a colleague yesterday to show them where things are, and it was very nice
k
I really wanna get the theme switching in!
🙏 1
j
Also the API keys link being top
I actually looked at the Prefect code to see if I could create a PR for it, but ran out of time, haha
The new settings page seems snappier too, from what I remember
I did do my part in https://github.com/PrefectHQ/prefect/pull/19240 though 😆
❤️ 1
k
I saw that come in and get approved this morning! It always starts with small contributions... then you blink and you're a product manager at Prefect lmao
upvote 1
j
hahah the classic Prefect PM pipeline