Skip to content

Conversation

@robintown
Copy link
Member

Since the upgrade to React 19, widget initialization (most notably affecting group calls) has been broken in development mode. This is because React now executes all callback refs twice, and the callback ref that receives the widget's iframe was not prepared to deal with that. I've fixed this by creating and attaching the iframe to the DOM in the callback ref, which allows us to properly couple its lifetime to that of the StopGapWidget. I've also added some insurance against strict mode-style races in StopGapWidget (doesn't hurt).

Since the upgrade to React 19, widget initialization (most notably affecting group calls) has been broken in development mode. This is because React now executes all callback refs twice, and the callback ref that receives the widget's iframe was not prepared to deal with that. I've fixed this by creating and attaching the iframe to the DOM in the callback ref, which allows us to properly couple its lifetime to that of the StopGapWidget. I've also added some insurance against strict mode-style races in StopGapWidget (doesn't hurt).
@robintown robintown enabled auto-merge August 6, 2025 12:03
@robintown robintown added this pull request to the merge queue Aug 6, 2025
Merged via the queue into element-hq:develop with commit 15f1291 Aug 6, 2025
31 checks passed
@robintown robintown deleted the call-dev-react branch August 6, 2025 12:34
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Sep 6, 2025
Changes in [1.11.110](https://github.com/element-hq/element-web/releases/tag/v1.11.110) (2025-08-27)
====================================================================================================

* Hide recovery key when re-entering it while creating or changing it ([#30499](element-hq/element-web#30499)). Contributed by @andybalaam.
* Add `?no_universal_links=true` to OIDC url so EX doesn't try to handle it ([#29439](element-hq/element-web#29439)). Contributed by @t3chguy.
* Show a blue lock for unencrypted rooms and hide the grey shield for encrypted rooms ([#30440](element-hq/element-web#30440)). Contributed by @langleyd.
* Add support for Module API 1.4 ([#30185](element-hq/element-web#30185)). Contributed by @t3chguy.
* MVVM - Introduce some helpers for snapshot management ([#30398](element-hq/element-web#30398)). Contributed by @MidhunSureshR.

* A11y: move focus to right panel when opened ([#30553](element-hq/element-web#30553)). Contributed by @florianduros.
* Fix e2e warning icon should be white ([#30539](element-hq/element-web#30539)). Contributed by @florianduros.
* Remove NoOneHere disabled reason. ([#30524](element-hq/element-web#30524)). Contributed by @toger5.
* Fix downloading files with authenticated media API ([#30520](element-hq/element-web#30520)). Contributed by @t3chguy.
* Fix call permissions check confusion around element call ([#30521](element-hq/element-web#30521)). Contributed by @t3chguy.
* Fix line wrap around emoji verification ([#30523](element-hq/element-web#30523)). Contributed by @t3chguy.
* Don't highlight redacted events ([#30519](element-hq/element-web#30519)). Contributed by @t3chguy.
* Fix matrix.to links not being handled in the app ([#30522](element-hq/element-web#30522)). Contributed by @t3chguy.
* Fix issue of new room list taking up the full width ([#30459](element-hq/element-web#30459)). Contributed by @langleyd.
* Fix widget persistence in React development mode ([#30509](element-hq/element-web#30509)). Contributed by @robintown.
* Fix widget initialization in React development mode ([#30463](element-hq/element-web#30463)). Contributed by @robintown.

Changes in [1.11.109](https://github.com/element-hq/element-web/releases/tag/v1.11.109) (2025-08-11)
====================================================================================================
This release supports the upcoming v12 ("hydra") Matrix room version and is necessary to view and participate in these rooms.

* [Backport staging] Allow /upgraderoom command without developer mode enabled ([#30529](element-hq/element-web#30529)). Contributed by @RiotRobot.
* [Backport staging] Support for creator/owner power level ([#30526](element-hq/element-web#30526)). Contributed by @RiotRobot.
* New room list: change icon and label of menu item for to start a DM ([#30470](element-hq/element-web#30470)). Contributed by @florianduros.
* Implement the member list with virtuoso ([#29869](element-hq/element-web#29869)). Contributed by @langleyd.
* Add labs option for history sharing on invite ([#30313](element-hq/element-web#30313)). Contributed by @richvdh.
* Bump wysiwyg to 2.39.0 adding support for pasting rich text content in the Rich Text Edtior ([#30421](element-hq/element-web#30421)). Contributed by @langleyd.
* Support `EventShieldReason.MISMATCHED_SENDER` ([#30403](element-hq/element-web#30403)). Contributed by @richvdh.
* Change unencrypted and public pills to blue ([#30399](element-hq/element-web#30399)). Contributed by @florianduros.
* Change color of public room icon ([#30390](element-hq/element-web#30390)). Contributed by @florianduros.
* Script for updating storybook screenshots ([#30340](element-hq/element-web#30340)). Contributed by @dbkr.
* Add toggle to hide empty state in devtools ([#30352](element-hq/element-web#30352)). Contributed by @toger5.

* [Backport staging] Use userId to filter users in non-federated rooms when showing the InviteDialog ([#30537](element-hq/element-web#30537)). Contributed by @RiotRobot.
* [Backport staging] Catch error when encountering invalid m.room.pinned\_events event ([#30536](element-hq/element-web#30536)). Contributed by @RiotRobot.
* Update for compatibility with v12 rooms ([#30452](element-hq/element-web#30452)). Contributed by @dbkr.
* New room list: fix tooltip on presence ([#30474](element-hq/element-web#30474)). Contributed by @florianduros.
* New room list: add tooltip for presence and room status ([#30472](element-hq/element-web#30472)). Contributed by @florianduros.
* Fix: Clicking on an item in the member list causes it to scroll to the top rather than show the profile view ([#30455](element-hq/element-web#30455)). Contributed by @langleyd.
* Put the 'decrypting' tooltip back ([#30446](element-hq/element-web#30446)). Contributed by @dbkr.
* Use server name explicitly for via. ([#30362](element-hq/element-web#30362)). Contributed by @Half-Shot.
* fix: replace hardcoded string in poll history dialog ([#30402](element-hq/element-web#30402)). Contributed by @florianduros.
* fix: replace hardcoded string on qr code back button ([#30401](element-hq/element-web#30401)). Contributed by @florianduros.
* Fix color of icon button with outline ([#30361](element-hq/element-web#30361)). Contributed by @florianduros.

Changes in [1.11.108](https://github.com/element-hq/element-web/releases/tag/v1.11.108) (2025-07-30)
====================================================================================================

* [Backport staging] Fix downloaded attachments not being decrypted ([#30434](element-hq/element-web#30434)). Contributed by @RiotRobot.

Changes in [1.11.107](https://github.com/element-hq/element-web/releases/tag/v1.11.107) (2025-07-29)
====================================================================================================

* Message preview should show tooltip with the full message on hover ([#30265](element-hq/element-web#30265)). Contributed by @MidhunSureshR.
* Support rendering notification badges on platforms that do their own icon overlays ([#30315](element-hq/element-web#30315)). Contributed by @Half-Shot.
* Add SubscriptionViewModel base class ([#30297](element-hq/element-web#30297)). Contributed by @dbkr.
* Enhancement: Save image on CTRL+S ([#30330](element-hq/element-web#30330)). Contributed by @ioalexander.
* Add quote functionality to MessageContextMenu (#29893) ([#30323](element-hq/element-web#30323)). Contributed by @AlirezaMrtz.
* Initial structure for shared component views ([#30216](element-hq/element-web#30216)). Contributed by @dbkr.

* [Backport staging] Fix e2e shield being invisible in white mode for encrypted room ([#30411](element-hq/element-web#30411)). Contributed by @RiotRobot.
* Force ED titlebar color for new room list ([#30332](element-hq/element-web#30332)). Contributed by @florianduros.
* Add a background color to left panel for macos titlebar in element desktop ([#30328](element-hq/element-web#30328)). Contributed by @florianduros.
* Fix: Prevent page refresh on Enter key in right panel member search ([#30312](element-hq/element-web#30312)). Contributed by @AlirezaMrtz.
Dileep9999 pushed a commit to hemanth-nag/element-web that referenced this pull request Oct 8, 2025
Since the upgrade to React 19, widget initialization (most notably affecting group calls) has been broken in development mode. This is because React now executes all callback refs twice, and the callback ref that receives the widget's iframe was not prepared to deal with that. I've fixed this by creating and attaching the iframe to the DOM in the callback ref, which allows us to properly couple its lifetime to that of the StopGapWidget. I've also added some insurance against strict mode-style races in StopGapWidget (doesn't hurt).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants