Skip to content

⚡ Bolt: Memoize execution filtering and counts in WorkflowRunsView#28

Draft
Psyborgs-git wants to merge 1 commit intomainfrom
bolt/perf-workflow-runs-usememo-8211553389188011161
Draft

⚡ Bolt: Memoize execution filtering and counts in WorkflowRunsView#28
Psyborgs-git wants to merge 1 commit intomainfrom
bolt/perf-workflow-runs-usememo-8211553389188011161

Conversation

@Psyborgs-git
Copy link
Owner

💡 What: Wrapped the filtered execution list and the runningCount, completedCount, and failedCount variable declarations in WorkflowRunsView inside useMemo hooks. Also consolidated the status counts into a single O(N) for loop iteration.

🎯 Why: The WorkflowRunsView component continuously auto-polls for execution updates (every 5 seconds) when there are active runs, triggering frequent state updates and re-renders. Previously, during every render, it calculated the filtered list and then iterated through the executions array three separate times to determine the status counts. This O(4N) array processing blocks the main thread on every render frame, scaling linearly with the size of the history and causing ui lag for dense executions lists.

📊 Impact: Reduces O(4N) filtering operations to O(2N) and completely skips these array operations on extraneous re-renders where the executions array hasn't functionally changed. Reduces overall main thread blocking during continuous polling and React reconciliations.

🔬 Measurement: Profile the WorkflowRunsView with React DevTools during an active workflow execution and observe the component's render duration to ensure the derived state filters are skipped when executions or filterStatus have not changed.


PR created automatically by Jules for task 8211553389188011161 started by @Psyborgs-git

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
@google-labs-jules
Copy link
Contributor

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant