Explanation of Change
Extracts the avatar rendering and delegate-avatar substitution logic into a child component (OptionRowAvatar). The four delegate-related derivations (delegateAccountID, skipDelegate, icons, delegateTooltipAccountID) and the usePersonalDetails read move out of the parent row. useCurrentUserPersonalDetails stays in the parent (still consumed for status timezone). The null-render short-circuit when !optionItem.icons?.length || !firstIcon is preserved inside the child. React.memo(OptionRowLHN) is preserved.
Measured impact
ManualNavigateToInboxTab: 626ms → 596ms (~4.8%)
PR: #89087
Issue Owner
Current Issue Owner: @BartekObudzinski
Explanation of Change
Extracts the avatar rendering and delegate-avatar substitution logic into a child component (OptionRowAvatar). The four delegate-related derivations (delegateAccountID, skipDelegate, icons, delegateTooltipAccountID) and the usePersonalDetails read move out of the parent row. useCurrentUserPersonalDetails stays in the parent (still consumed for status timezone). The null-render short-circuit when !optionItem.icons?.length || !firstIcon is preserved inside the child. React.memo(OptionRowLHN) is preserved.
Measured impact
ManualNavigateToInboxTab: 626ms → 596ms (~4.8%)
PR: #89087
Issue Owner
Current Issue Owner: @BartekObudzinski