Skip to content

refactor: replace useEffectEvent with useStableCallback in various hooks and components#40824

Draft
tassoevan wants to merge 22 commits into
developfrom
refactor/prepare-types-for-react-19-22
Draft

refactor: replace useEffectEvent with useStableCallback in various hooks and components#40824
tassoevan wants to merge 22 commits into
developfrom
refactor/prepare-types-for-react-19-22

Conversation

@tassoevan
Copy link
Copy Markdown
Member

⚠️ This is part 22/23 of #40796. PR for refactor/prepare-types-for-react-19-21 must be merged first.


Proposed changes (including videos or screenshots)

As a first step towards upgrading to React 19, it handles types from @types/react looking forward the next major.

Issue(s)

Task: ARCH-2170

Steps to test or reproduce

Further comments

No runtime change is expected from it.

tassoevan added 22 commits June 3, 2026 23:15
… from AppAvatar, MessageAvatar, and RoomAvatar components
…ations in components

- Updated multiple components to remove explicit return type annotations of ReactElement, allowing TypeScript to infer the return type.
- Adjusted BlockProps to use ReactElement<any> for better type compatibility.
- Cleaned up imports by removing unused ReactElement imports across various files.
…onal components

- Removed explicit return type annotations of ReactElement from multiple functional components across the codebase.
- Updated components in Markup, PreviewMarkup, HeadingBlock, OrderedListBlock, ParagraphBlock, QuoteBlock, SpoilerBlock, TaskListBlock, UnorderedListBlock, CodeBlock, CodeElement, PreviewCodeBlock, PreviewCodeElement, ColorElement, PreviewColorElement, BoldSpan, ImageElement, InlineElements, ItalicSpan, LinkSpan, PlainSpan, PreviewInlineElements, SpoilerSpan, StrikeSpan, BigEmojiBlock, BigEmojiElement, Emoji, EmojiElement, EmojiRenderer, PreviewBigEmojiBlock, PreviewEmojiElement, KatexBlock, KatexElement, KatexErrorBoundary, PreviewKatexBlock, PreviewKatexElement, ChannelMentionElement, PreviewChannelMentionElement, PreviewUserMentionElement, UserMentionElement.
- Updated multiple components to remove explicit ReactElement return type annotations, simplifying the code and improving readability.
- Components affected include ThreadMetrics, ThreadMetricsFollow, ThreadMetricsParticipants, UrlPreviews, MessageAction, AttachmentsItem, DefaultAttachment, QuoteAttachment, ActionAttachmentButton, AttachmentAuthorAvatar, CollapsibleContent, Reaction, OEmbedCollapsible, OEmbedHtmlPreview, OEmbedImagePreview, OEmbedLinkPreview, OEmbedPreviewContent, OEmbedResolver, UrlAudioPreview, UrlImagePreview, UrlPreview, UrlPreviewResolver, UrlVideoPreview, MessageRoles, AllMentionNotification, MessageNotification, UnreadMessagesNotification, MessageToolbar, DatePicker, FormatSelector, Preview, TimePicker, TimezoneSelector, RoomMessage, SystemMessage, ThreadMessage, ThreadMessagePreview, RoomMessageContent, ThreadMessageContent, and ThreadMessagePreviewBody.
…nal components

- Removed ReactElement type annotations from various functional components across the application for cleaner code.
- Updated components such as ReactionListModal, ReactionUserTag, Reactions, ReadReceiptRow, ReadReceiptsModal, ReportMessageModal, ChatProvider, RoomProvider, and others to improve consistency and readability.
- Removed ReactElement type annotations from various components to simplify type definitions.
- Updated components such as AutoCompleteDepartmentAgent, AutoCompleteOutboundProvider, RecipientSelect, and others to use implicit return types.
- Improved code readability and maintainability by streamlining type imports and component definitions.
- Updated multiple components to remove explicit ReactElement return type annotations, simplifying the code.
- Adjusted function signatures in various files to use implicit return types instead.
- Improved consistency across the codebase by standardizing function definitions.
… components

- Changed event types from FormEvent to ChangeEvent in MatrixFederationManageServerModal, MatrixFederationSearchModalContent, TwoFactorEmail, TwoFactorTOTP, AddCustomSound, EditSound, NewImportPage, PermissionsTableFilter, BooleanSettingInput, FontSettingInput, GenericSettingInput, IntSettingInput, PasswordSettingInput, RelativeUrlSettingInput, StringSettingInput, TimespanSettingInput, SettingsGroupPage, LDAPGroupPage, UsersTableFilters, DateRangePicker, CallHistoryPageFilters, Omnichannel analytics DateRangePicker, CannedResponseList, DepartmentTags, RemoveContactModal, QuickActionOptions, MessageBox, RoomMembers, ThreadList, MultiSelectCustomList, and useMediaSession.
…oks and components

- Updated multiple hooks and components to use useStableCallback instead of useEffectEvent for better stability and performance.
- This change affects notification handling, modal management, team management, and various UI interactions across the application.
- Adjusted related imports and ensured consistent usage of the new callback method.
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Jun 4, 2026

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 1dff7d6b-4aab-4d7d-8877-45b1b83ab460

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@dionisio-bot
Copy link
Copy Markdown
Contributor

dionisio-bot Bot commented Jun 4, 2026

Looks like this PR is not ready to merge, because of the following issues:

  • This PR is missing the 'stat: QA assured' label
  • This PR is missing the required milestone or project

Please fix the issues and try again

If you have any trouble, please check the PR guidelines

@codecov
Copy link
Copy Markdown

codecov Bot commented Jun 4, 2026

Codecov Report

❌ Patch coverage is 92.07921% with 16 lines in your changes missing coverage. Please review.
✅ Project coverage is 69.82%. Comparing base (85fc0dd) to head (2abfcb7).

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##           develop   #40824      +/-   ##
===========================================
- Coverage    69.90%   69.82%   -0.08%     
===========================================
  Files         3337     3331       -6     
  Lines       123489   123010     -479     
  Branches     22013    22122     +109     
===========================================
- Hits         86322    85890     -432     
+ Misses       33813    33762      -51     
- Partials      3354     3358       +4     
Flag Coverage Δ
unit 70.63% <92.07%> (-0.05%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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