Skip to content

[schedule] Cut network and render churn in schedule pages#2146

Open
frankrousseau wants to merge 23 commits into
cgwire:mainfrom
frankrousseau:perf/schedule-consumers
Open

[schedule] Cut network and render churn in schedule pages#2146
frankrousseau wants to merge 23 commits into
cgwire:mainfrom
frankrousseau:perf/schedule-consumers

Conversation

@frankrousseau

Copy link
Copy Markdown
Contributor

Problem

  • Each bar drag on the team schedule refetched every person's task dates, and re-expanding a row refetched its tasks (2 requests each time)
  • On the task type page every task:update socket event rebuilt the whole schedule, refetched all time spents when timesheets are shown, and re-committed the same task extra data
  • Entity pages rebuilt their mini schedule (and re-rendered the widget) on any task mutation in the store, even unrelated ones
  • The person page filtered and sorted the same task lists three times

Solution

  • Recompute the dragged person's root bar locally and cache person tasks per row, invalidated on assign, unassign, drop and date change
  • Debounce the socket-driven rebuild (400 ms) and cache the time spents fetch per date range, like the days off
  • Commit task extra data only when the reference changed and skip the scheduleItems replacement when the visible signature is unchanged
  • Build the merged person task list from the two cached sorted lists

Note: stacked on #2144, only the 7 perf commits are new here.

frankrousseau and others added 23 commits July 17, 2026 11:08
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ists

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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