Skip to content

fix(tabList): Prevent useEffectEvent error during resize in Firefox - #124249

Draft
sentry[bot] wants to merge 1 commit into
masterfrom
seer/fix/tablist-useeffectevent-render-error
Draft

fix(tabList): Prevent useEffectEvent error during resize in Firefox#124249
sentry[bot] wants to merge 1 commit into
masterfrom
seer/fix/tablist-useeffectevent-render-error

Conversation

@sentry

@sentry sentry Bot commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

This PR fixes an error "A function wrapped in useEffectEvent can't be called during rendering." occurring in static/app/components/core/tabs/tabList.tsx.

Root Cause:
The recompute function was wrapped in useEffectEvent, which React 19 forbids from being called during rendering. While a requestAnimationFrame deferral was in place, in Firefox, rAF callbacks can still fire synchronously during the layout phase, which React considers part of rendering. useEffectEvent is not designed for arbitrary async callbacks like those from ResizeObserver.

Solution:
The useEffectEvent wrapper around recompute has been replaced with a ref-based stable callback pattern. The latest recompute implementation is stored in a useRef (updated via useLayoutEffect), and a stable useCallback wrapper is exposed. This allows recompute to be safely invoked from ResizeObserver's rAF callback without triggering React's rendering-phase restrictions, while maintaining the same

Legal Boilerplate

Look, I get it. The entity doing business as "Sentry" was incorporated in the State of Delaware in 2015 as Functional Software, Inc. and is gonna need some rights from me in order to utilize my contributions in this here PR. So here's the deal: I retain all rights, title and interest in and to my contributions, and by keeping this boilerplate intact I confirm that Sentry can use, modify, copy, and redistribute my contributions, under Sentry's choice of terms.

Fixes JAVASCRIPT-3BMJ

@sentry <feedback>: Autofix iterates on these changes
@sentry stop iterating: Autofix stops iterating on this run

This PR was automatically generated by Sentry. You can adjust this setting at any time.

@github-actions github-actions Bot added the Scope: Frontend Automatically applied to PRs that change frontend components label Sep 13, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Story previews

Preview the stories changed in this PR on the Vercel deployment:

Preview deployment: https://sentry-m3fkt0ive.sentry.dev

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

Labels

Scope: Frontend Automatically applied to PRs that change frontend components

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants