What happens
When the GitHub plugin's issue-list widget loads, the list flickers/thrashes a couple of times before it finally settles. It's visually disruptive and makes the board feel janky.
Likely cause
Multiple async state transitions on mount — the widget likely passes through several render states (loading skeleton → empty → data arrives → re-render) without a stable in-between, or the data fetch fires more than once (e.g., a React strict-mode double-render + a useEffect re-trigger + a parent re-render all kicking off fetches).
Common culprits in a React widget:
- No stable key / no bail-out on the fetch effect → refires on every parent render.
- "Empty" state renders briefly between "loading" and "data arrived" because the loading flag flips before the data is populated.
- Multiple data sources (e.g., issues list + labels) resolving at different times, each triggering a layout shift.
What should happen
One clean transition: loading skeleton → populated list. No intermediate flicker states.
Notes
Observed in the console util-bar widget (the read-only issue board). The plugin iframe may add its own mount/unmount cycle that triggers extra fetches.
What happens
When the GitHub plugin's issue-list widget loads, the list flickers/thrashes a couple of times before it finally settles. It's visually disruptive and makes the board feel janky.
Likely cause
Multiple async state transitions on mount — the widget likely passes through several render states (loading skeleton → empty → data arrives → re-render) without a stable in-between, or the data fetch fires more than once (e.g., a React strict-mode double-render + a useEffect re-trigger + a parent re-render all kicking off fetches).
Common culprits in a React widget:
What should happen
One clean transition: loading skeleton → populated list. No intermediate flicker states.
Notes
Observed in the console util-bar widget (the read-only issue board). The plugin iframe may add its own mount/unmount cycle that triggers extra fetches.