From caa6975ebcdbd127418754fd38014cc7ecb0d2a7 Mon Sep 17 00:00:00 2001 From: Eugene Olonov Date: Thu, 29 Oct 2026 10:53:30 -0700 Subject: [PATCH 1/7] Fix events of renderWebChat() with React 16 inside a shadow root React 16 listens to events on the document unless the container is a document or a document fragment. Inside a shadow root, the document gets events retargeted to the shadow host, so the bundled React DOM 16.8.6 ignored every click and keystroke. renderWebChat() now renders a hidden portal into the shadow root with a no-op handler for every React 16 event, so React 16 also listens on the shadow root. --- .../customElement/shadowRoot.interact.html | 99 +++++++++++++++++ .../shadowRoot.interact.html.snap-1.png | Bin 0 -> 11280 bytes .../shadowRoot.interact.html.snap-2.png | Bin 0 -> 11934 bytes .../shadowRoot.interact.react18.html | 97 +++++++++++++++++ ...hadowRoot.interact.react18.html.snap-1.png | Bin 0 -> 11280 bytes ...hadowRoot.interact.react18.html.snap-2.png | Bin 0 -> 11934 bytes ...dowRoot.interact.renderIntoShadowRoot.html | 96 ++++++++++++++++ ...eract.renderIntoShadowRoot.html.snap-1.png | Bin 0 -> 11373 bytes ...eract.renderIntoShadowRoot.html.snap-2.png | Bin 0 -> 12028 bytes .../src/private/react16EventListenerProps.ts | 103 ++++++++++++++++++ packages/bundle/src/renderWebChat.spec.tsx | 83 +++++++++++++- packages/bundle/src/renderWebChat.tsx | 44 +++++++- 12 files changed, 518 insertions(+), 4 deletions(-) create mode 100644 __tests__/html2/customElement/shadowRoot.interact.html create mode 100644 __tests__/html2/customElement/shadowRoot.interact.html.snap-1.png create mode 100644 __tests__/html2/customElement/shadowRoot.interact.html.snap-2.png create mode 100644 __tests__/html2/customElement/shadowRoot.interact.react18.html create mode 100644 __tests__/html2/customElement/shadowRoot.interact.react18.html.snap-1.png create mode 100644 __tests__/html2/customElement/shadowRoot.interact.react18.html.snap-2.png create mode 100644 __tests__/html2/customElement/shadowRoot.interact.renderIntoShadowRoot.html create mode 100644 __tests__/html2/customElement/shadowRoot.interact.renderIntoShadowRoot.html.snap-1.png create mode 100644 __tests__/html2/customElement/shadowRoot.interact.renderIntoShadowRoot.html.snap-2.png create mode 100644 packages/bundle/src/private/react16EventListenerProps.ts diff --git a/__tests__/html2/customElement/shadowRoot.interact.html b/__tests__/html2/customElement/shadowRoot.interact.html new file mode 100644 index 0000000000..e6ceae1168 --- /dev/null +++ b/__tests__/html2/customElement/shadowRoot.interact.html @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + diff --git a/__tests__/html2/customElement/shadowRoot.interact.html.snap-1.png b/__tests__/html2/customElement/shadowRoot.interact.html.snap-1.png new file mode 100644 index 0000000000000000000000000000000000000000..e95451b8da3db5003a9e8a8434dad31ffcca6c4e GIT binary patch literal 11280 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 GSN{hxc3p-5 literal 0 HcmV?d00001 diff --git a/__tests__/html2/customElement/shadowRoot.interact.html.snap-2.png b/__tests__/html2/customElement/shadowRoot.interact.html.snap-2.png new file mode 100644 index 0000000000000000000000000000000000000000..ce1ef4f3f03d1f9134b7962d3c8dc1462cf2113d GIT binary patch literal 11934 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 cpBhO8G1&CV + + + + + + + + + + + + + + + + + diff --git a/__tests__/html2/customElement/shadowRoot.interact.react18.html.snap-1.png b/__tests__/html2/customElement/shadowRoot.interact.react18.html.snap-1.png new file mode 100644 index 0000000000000000000000000000000000000000..e95451b8da3db5003a9e8a8434dad31ffcca6c4e GIT binary patch literal 11280 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 GSN{hxc3p-5 literal 0 HcmV?d00001 diff --git a/__tests__/html2/customElement/shadowRoot.interact.react18.html.snap-2.png b/__tests__/html2/customElement/shadowRoot.interact.react18.html.snap-2.png new file mode 100644 index 0000000000000000000000000000000000000000..ce1ef4f3f03d1f9134b7962d3c8dc1462cf2113d GIT binary patch literal 11934 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 cpBhO8G1&CV + + + + + + + + + +
+ + + + + diff --git a/__tests__/html2/customElement/shadowRoot.interact.renderIntoShadowRoot.html.snap-1.png b/__tests__/html2/customElement/shadowRoot.interact.renderIntoShadowRoot.html.snap-1.png new file mode 100644 index 0000000000000000000000000000000000000000..4fe55b0af97a9fa87877850df82c33ee55b4216b GIT binary patch literal 11373 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 Bj!OUl literal 0 HcmV?d00001 diff --git a/__tests__/html2/customElement/shadowRoot.interact.renderIntoShadowRoot.html.snap-2.png b/__tests__/html2/customElement/shadowRoot.interact.renderIntoShadowRoot.html.snap-2.png new file mode 100644 index 0000000000000000000000000000000000000000..fc74059d731ac6fe78305bfd774e72cc1e3a9a20 GIT binary patch literal 12028 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 literal 0 HcmV?d00001 diff --git a/packages/bundle/src/private/react16EventListenerProps.ts b/packages/bundle/src/private/react16EventListenerProps.ts new file mode 100644 index 0000000000..3e561bffd0 --- /dev/null +++ b/packages/bundle/src/private/react16EventListenerProps.ts @@ -0,0 +1,103 @@ +// Every event prop of React 16, from its event plugins. +const REACT_16_EVENT_PROP_NAMES = Object.freeze([ + 'onAbort', + 'onAnimationEnd', + 'onAnimationIteration', + 'onAnimationStart', + 'onAuxClick', + 'onBeforeInput', + 'onBlur', + 'onCanPlay', + 'onCanPlayThrough', + 'onCancel', + 'onChange', + 'onClick', + 'onClose', + 'onCompositionEnd', + 'onCompositionStart', + 'onCompositionUpdate', + 'onContextMenu', + 'onCopy', + 'onCut', + 'onDoubleClick', + 'onDrag', + 'onDragEnd', + 'onDragEnter', + 'onDragExit', + 'onDragLeave', + 'onDragOver', + 'onDragStart', + 'onDrop', + 'onDurationChange', + 'onEmptied', + 'onEncrypted', + 'onEnded', + 'onError', + 'onFocus', + 'onGotPointerCapture', + 'onInput', + 'onInvalid', + 'onKeyDown', + 'onKeyPress', + 'onKeyUp', + 'onLoad', + 'onLoadStart', + 'onLoadedData', + 'onLoadedMetadata', + 'onLostPointerCapture', + 'onMouseDown', + 'onMouseEnter', + 'onMouseLeave', + 'onMouseMove', + 'onMouseOut', + 'onMouseOver', + 'onMouseUp', + 'onPaste', + 'onPause', + 'onPlay', + 'onPlaying', + 'onPointerCancel', + 'onPointerDown', + 'onPointerEnter', + 'onPointerLeave', + 'onPointerMove', + 'onPointerOut', + 'onPointerOver', + 'onPointerUp', + 'onProgress', + 'onRateChange', + 'onReset', + 'onScroll', + 'onSeeked', + 'onSeeking', + 'onSelect', + 'onStalled', + 'onSubmit', + 'onSuspend', + 'onTimeUpdate', + 'onToggle', + 'onTouchCancel', + 'onTouchEnd', + 'onTouchMove', + 'onTouchStart', + 'onTransitionEnd', + 'onVolumeChange', + 'onWaiting', + 'onWheel' +] as const); + +function noop() { + // Only here for React 16 to listen to the event. +} + +/** + * A no-op handler for every event of React 16. + * + * React 16 listens to an event on the root of the container when it first renders a handler for it. + * Rendering these props makes React 16 listen to every event. + */ +const react16EventListenerProps: { readonly [name: string]: () => void } = Object.freeze( + Object.fromEntries(REACT_16_EVENT_PROP_NAMES.map(name => [name, noop])) +); + +export default react16EventListenerProps; diff --git a/packages/bundle/src/renderWebChat.spec.tsx b/packages/bundle/src/renderWebChat.spec.tsx index b569dfcada..2a8cefcb7d 100644 --- a/packages/bundle/src/renderWebChat.spec.tsx +++ b/packages/bundle/src/renderWebChat.spec.tsx @@ -3,6 +3,7 @@ import ReactDOM from 'react-dom'; +import react16EventListenerProps from './private/react16EventListenerProps'; import renderWebChat from './renderWebChat'; // `render` is set before each test, the React 19 test removes it. @@ -10,11 +11,15 @@ jest.mock('react-dom', () => ({ __esModule: true, default: {} })); const ReactWebChat = () => null; +let createPortal: jest.Mock; let render: jest.Mock; beforeEach(() => { + createPortal = jest.fn((children, container) => ({ children, container })); render = jest.fn(); - Object.assign(ReactDOM, { render }); + + // React DOM 16.8.6 has no `version`. + Object.assign(ReactDOM, { createPortal, render, version: undefined }); }); test('Element should be rendered by ReactDOM.render()', () => { @@ -69,3 +74,79 @@ test('Neither a container nor a root should throw', () => expect(() => renderWebChat(ReactWebChat, {}, {} as unknown as HTMLElement)).toThrow( 'renderWebChat() expects an HTMLElement or a root from ReactDOM.createRoot().' )); + +describe('Element in a shadow root', () => { + let element: HTMLElement; + let shadowRoot: ShadowRoot; + + beforeEach(() => { + element = document.createElement('div'); + shadowRoot = document.createElement('div').attachShadow({ mode: 'open' }); + + shadowRoot.append(element); + }); + + test('on React 16 should render a portal into the shadow root with every event handler', () => { + renderWebChat(ReactWebChat, {}, element); + + expect(createPortal).toHaveBeenCalledTimes(1); + expect(createPortal.mock.calls[0][0].props).toEqual({ hidden: true, ...react16EventListenerProps }); + expect(createPortal.mock.calls[0][1]).toBe(shadowRoot); + expect(render.mock.calls[0][0].props.children).toEqual([ + expect.objectContaining({ type: ReactWebChat }), + createPortal.mock.results[0].value + ]); + expect(render.mock.calls[0][1]).toBe(element); + }); + + test('on React 16.14 should render a portal into the shadow root', () => { + Object.assign(ReactDOM, { version: '16.14.0' }); + + renderWebChat(ReactWebChat, {}, element); + + expect(createPortal).toHaveBeenCalledTimes(1); + }); + + test('on React 17 or later should render without a portal', () => { + Object.assign(ReactDOM, { version: '17.0.2' }); + + renderWebChat(ReactWebChat, {}, element); + + expect(createPortal).not.toHaveBeenCalled(); + expect(render.mock.calls[0][0]).toEqual(expect.objectContaining({ type: ReactWebChat })); + }); + + test('rendered into the shadow root itself should render without a portal', () => { + renderWebChat(ReactWebChat, {}, shadowRoot); + + expect(createPortal).not.toHaveBeenCalled(); + expect(render.mock.calls[0][0]).toEqual(expect.objectContaining({ type: ReactWebChat })); + expect(render.mock.calls[0][1]).toBe(shadowRoot); + }); +}); + +test('Element outside of a shadow root on React 16 should render without a portal', () => { + const element = document.createElement('div'); + + document.body.append(element); + renderWebChat(ReactWebChat, {}, element); + element.remove(); + + expect(createPortal).not.toHaveBeenCalled(); + expect(render.mock.calls[0][0]).toEqual(expect.objectContaining({ type: ReactWebChat })); +}); + +test('React 16 event handlers should cover every event of React DOM 16.8.6', () => { + const actualReactDOM = jest.requireActual('react-dom'); + + // Private API of React DOM 16.8.6: `Events[4]` is the dispatch config of every event, by event name. + const [, , , , eventNameDispatchConfigs] = actualReactDOM.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.Events; + + // React DOM 16.8.6 has no `version`. + expect(actualReactDOM).not.toHaveProperty('version'); + expect(Object.keys(react16EventListenerProps).sort()).toEqual( + Object.values(eventNameDispatchConfigs) + .map(({ phasedRegistrationNames, registrationName }) => registrationName || phasedRegistrationNames.bubbled) + .sort() + ); +}); diff --git a/packages/bundle/src/renderWebChat.tsx b/packages/bundle/src/renderWebChat.tsx index 9f12077a9d..5411078471 100644 --- a/packages/bundle/src/renderWebChat.tsx +++ b/packages/bundle/src/renderWebChat.tsx @@ -1,7 +1,22 @@ import { reactNode } from '@msinternal/botframework-webchat-react-valibot'; -import React, { type ComponentType, type ReactNode } from 'react'; +import React, { Fragment, type ComponentType, type ReactNode } from 'react'; import ReactDOM from 'react-dom'; -import { args, custom, function_, is, object, picklist, pipe, tuple } from 'valibot'; +import { + args, + custom, + function_, + is, + literal, + object, + optional, + picklist, + pipe, + startsWith, + string, + tuple +} from 'valibot'; + +import react16EventListenerProps from './private/react16EventListenerProps'; /** A root from `createRoot()` of "react-dom/client". */ type RenderWebChatRoot = { render(children: ReactNode): void }; @@ -38,6 +53,14 @@ const legacyReactDOMSchema = object({ render: pipe(function_(), args(tuple([reac // `root.render(children)`, root from `createRoot()` of "react-dom/client". const reactRootSchema = object({ render: pipe(function_(), args(tuple([reactNode()]))) }); +// React DOM 16.13 added `version`, earlier versions do not have it. +const react16DOMSchema = object({ createPortal: function_(), version: optional(pipe(string(), startsWith('16.'))) }); + +// A shadow root, by `nodeType` and `host` to work across realms. +const shadowRootSchema = custom(value => + is(object({ host: object({ nodeType: literal(ELEMENT_NODE) }), nodeType: literal(DOCUMENT_FRAGMENT_NODE) }), value) +); + export default function renderWebChat( ReactWebChat: ComponentType, props: any, @@ -53,8 +76,23 @@ export default function renderWebChat( ); } + const rootNode = elementOrRoot.getRootNode?.(); + // React 16 to 18, and Preact. Also the IIFE build, which bundles React DOM 16.8.6 unless `window.ReactDOM` is set. - ReactDOM.render(children, elementOrRoot); + ReactDOM.render( + // React 16 listens to events on the document, unless the container is a document or a shadow root. + // In a shadow root, the document gets events retargeted to the shadow host, React 16 ignores every click and keystroke. + // A portal into the shadow root makes React 16 listen there too. React 17 listens on the container: remove with React 16. + is(react16DOMSchema, ReactDOM) && rootNode !== elementOrRoot && is(shadowRootSchema, rootNode) ? ( + + {children} + {ReactDOM.createPortal( + ) : ( + children + ), + elementOrRoot + ); } else if (is(reactRootSchema, elementOrRoot)) { // The host created the root: render with it on any React version, it is the host's to unmount. elementOrRoot.render(children); From e5b0d1d1777563558e6edb549cf05028baffba50 Mon Sep 17 00:00:00 2001 From: Eugene Olonov Date: Thu, 29 Oct 2026 10:57:42 -0700 Subject: [PATCH 2/7] Put suggested actions carousel styles into styleOptions.stylesRoot The carousel of suggested actions put its react-film styles into the document head, so suggested actions inside a shadow root lost their carousel layout and showed a list bullet. --- .../shadowRoot.interact.html.snap-1.png | Bin 11280 -> 11200 bytes ...hadowRoot.interact.react18.html.snap-1.png | Bin 11280 -> 11200 bytes ...eract.renderIntoShadowRoot.html.snap-1.png | Bin 11373 -> 11297 bytes .../src/SendBox/SuggestedActions.tsx | 4 +++- 4 files changed, 3 insertions(+), 1 deletion(-) diff --git a/__tests__/html2/customElement/shadowRoot.interact.html.snap-1.png b/__tests__/html2/customElement/shadowRoot.interact.html.snap-1.png index e95451b8da3db5003a9e8a8434dad31ffcca6c4e..2d653de1e2aaeb3bd6c20451bc3366ad3f08add6 100644 GIT binary patch literal 11200 zcmeHtXHb({+isN2W(xu;B7&4HC?Hj(hbAf@AiYGo3J4^02uK$YQL0Fj-a7=PNC!ay z1?eSpLJcI4(0h_^`OZ0WetdJj+3(Exb>{sQ=E?A6t@YgZ)$Zq=j+QDtEgLNa0-;xX z^iU51Ib#QboPG7zS#U++C2|u2xd2gnsATXmZGDF3r2%sCU@PwZy|b?`+-Gct6%YB| zdAnOl%l(|nUpPh~5izRz(2M%Jq0vR8uE7(7d&=P+?+26`-pu;G%T9V-eW1!9EBofX z3*W^HEtx$Clo&binZ;`*GLTHsfr8a zHjgyq<3)DJufG@|FaGoOe~#rpGllWs{vY zIt{4*5p%?(EqdyLJ76;d6*@5QuRrkf^BeMaBF;8X)jC&%MqQJFlkzo^psYjH_QPKs zr+i|5rAldEW0!!(A7FT5h zs{`2~PVzip33D}wq%jXNBq%6oqRQ6m_x;HD!ps2p_@`$&Iy&`k%LcQ2H*VxLlXusK zuZi1b?e!!IPgPj9T6IO|H@8S~va^@LT!|S9{yxjy2~>ZcmwvhV)Y>{vcJ)b3IPSs$==Mh@tb zcRU92Yu1-2pE>8doB)%HVc>x7M#~beN;*7g@jEi9w!7nk`Kql*5|843K9HpZ{b>1e zo|^e0^wnspS&Lu&5Z{Ksj!O}(wD)#iV#41gEb+YRg8dH48+zrrpkZ}%eyL+tiM7GGv@gBb7OAY-sNpZy3FLziK)r`|bVOJyy~Lc6xZK<|dQ%fgnyz=p{*3ENcdhgI zj{BmMeP7GxGAr(#h2*O2@K0H0QSy^{)d>Zb)t5%}LB- z3)faS%7aqR`5&bF&WjnspOxIqCfJA4GJ6OY*!E|DZguCG$HvU#*);$v-CY)-c_?%BL&_Bh=C|W0KIBNr!U!C_ZVa62gBQfJbem&%`xaJBm*4EV26f~%puH_G=`r(tZ z!Y`d>%JT1t_AP(*I_ATpBX5egxb>S^wf=(-=Ja!2L8eLo<2^h){QR0i9_zzjzj@^>r_iC~*(nwtV z6~I(5&@s%HO;GxU(e2BtgSmh<^dH+<&$amfhWUE;!Z>zzWIaZ^41ufP7<+}Y8uHEd=SE^L+vrmBk_DM^!Zws`pPH8fo#No4d_yBfhC zCn+G%t=8hS5O5I6Ng^~7tFy)mg1?pD+TDHq`ZdBkJ4FJaqN0)^Q6CS5zRW<#yZNHlBCQNq8ztDTEy&^){R?eI9wEKUu8sUeHhPR z5(X>)pkV3+gb;@9jtCa~C5QeD`Mvk>Kg^#1?$FFtiISU|u5-+J)`JK5OFas;`(=>Bh6U}I=o z?8lE+IXF1DxQLkj#ea#al!eCY5WbnY=&0~;T3TB5156 zTr~E#gp=v9rS|7{27`;hf^+1#;{JCQ@XzeH%{~hk&>53o98HO_-a9Kthli1D65YO= zv8tS|loTgW+ZKT&Bu(+rdR2dkQF)3WOavSA*^4+k+w6-Ed-2Aan1HwWPF3 zty42lTVOx^KS1%2NF<5XW|M~xABOuW(VjbZu3!GZtOh<>pqaXIdS;(EH}~n;w>>8ofgTHI5p8jpsPx&x z$x}{uw6?vp?P?|Bh9qm8k8h!-Cjob{Ub=LNg$2vXD&uDT^l4V3#&Dsw^FUTm1}MFW z0MapstmiLt)ss^op1d=*4;N#k;3NDUi9pK{12&XnIOW9+CqU^I`1;I&l2jmlBtT(P zEd`uV@}3s_tX^vXNwoD;&$;CV_v9#Or~nG-fB+vYg`wdlT{}5Gag6NJ7>H*wJwva$ z$rp$Er)_5sQ0g(SUP02u1YxK$nF!gUP?H)s^DVva&81ZLn71QDTMqZomiR+1s7H}3 zxs8UaX}eo6kc781G-%yyr|Xy7`Bgg?fLF+K6j1HUR8+Jd$^+nBVbKhglWS6o<4vh9 z6}@fMd7k+QMo8^WJ0Z5V0^JdQuDN^uTNsz$rqV$+yNuiFF3Kt5KK317#=zU>HY>l9 zC-c)~y>MU0zQaND-jX~Vw~D#NTBwzdV+94Pen6OEriX6JB5`@&EW#E5{xhqYH+Zgt*t{_fXw*}|FOZA3-0CpO)yL0O4y3U-0AlSvtAvciv*`Gu3T0z`q>p z&s3zelJ`V8{)9>co6zcaHuul| zer*KKp;&cixd)x291%oC6L7p%m?8E__2-A1hSIBF@zeEHDZ$-u0c;^uFbX9cV{bbR ztAO^?QY~XpOdmpOjqM}ZVDIzCvnsV^%ed#7OHI_esw&lb;Owhiy0gXPp+N=f9~Vew zw9QNL=l07w$l+=u5q0u}K*t)zX^k|4S~ zLAu}vwi+{i8S+zVA|f8R;oovM#lU&C=?E|p0g3`*`ekCm#lgWrlYuo|W+gy=@{IO$ z(A#o5XF1MigaPH6Gp&1vIBV#+`bcL=v?KcH__!}wOw~A7CCkWD3YET9meoFMK5)*= zJ8vw~7bb`wMVA>bnkjXq7AQI$KhBV=2fEp72APy7+QLOS>(-os9z)5f}L0R`cr(umgF?^eMvw99I#8BuA%~+ps~Q zNBYk_Mg!_cz(mR884D|UMz77@l3Fy7qg zJg0!gRiH{9($f)@M*oJPiZ6@=6|VF&AIz3=+G%xpXhZ8QM-;%BjhD<0!`A0@DzncxmJ zaxgOC9P|as%(&c0^O+n1=ktjz`Ps8)w~U5&XHPb-%6gW$GdC<`p=`k>F@@bIKh8Yc?oB7n&%MX{)tP|JPjX=8_ z@>7pKJoZK^ccwqCuig=G@!&;^6g&CgiVG)e5ZIO+&j-xmP`b%V)J<;|2DC`jMk@c~ znw{TT=+)yNDHxq%%R(&IVBZOH$za* zTXu&u8txbGV;hMrr4kiiO5wRBY(vKx7m>DODD%=k9e-PmdR0-V)3o%#b@MS@VSOM^ z_nwc)4;p?f^~c?yw|AI(n2_R=QGYRnXr@YrhJ~?+m^~5x7%9OUWJ=Zc47l`=YFp2*j=}$I z5}<)a<4C8cO_cFVPJ+jlnK*RTnYB|B|NmnrregGXfLldNAzG@bYcFvHAn0B(hw}el zM-Hf4(pN;xqyd!(S0m6Uo1Vlz2~(iwfY?Bt>Z?J>BdE0pLA|L`fj|la*|~AGH$z@l zQgZB!3*x7w-9Q$?3<(Uu(GC{o7s)Ed3xzg3PQJ?q@`fXj+yF*s1c`zDa6$Q#&(BH6 zdw1^K0VvF+7;u_l4P+BNJv~y&4Wua955jnF-s}bJ1e&A46dZe0rmU9}5R|}b08X74 z%vG(~I>*HOP+7U&UczDg6NsT20_VMf@Yvegf|1|ZL(rOud(r`?TU|hxt&VFwer#aP z&(PpSY;l@tXz@Q;0T#U~rJ|w&{vL?;1L7RzSF+fHH|Om^+!Dra_|XFX~HcZ121OzhS6@oYoY*VJ8LGvuJ7N! zzbi!ZH7d@ASrzCE@t%+3_Co+ux)TJ^z)Xo78FkmuDJUqE=*0hJVq`qeu+p7?KRw!M z7-j!$>0~|Ei-4mMxF~F=k{cxpaVqi!B$JMfVr5HY~_bwS)nKUNCU zCTZLZB^VX!*#NWO{T7IgevpJl{nodD0*9K<=1c*7VlVn@~Dt)7zuO{o14BvN$SC ziY~D3jRlyxQ0*VJYHHNh!UF$noM(xRLECLE7!idu?$oUfux6?jYCS;?G+*=IUnq@} zM0>kGBT%H8zgAVHFqm(*e~+?#zMwCM&!ukMD{J+uoCM`KEyS#v#283k{<>zd_s!xj zQS9QPgRIYfy0PpRE_tctHJ{m1lJ8NFfU=vmY2eaG=pp7__f1S^-L2?m|3Q|-b!qaR z74kBBM%(&?pQ`8t3scfnOklmxq|efNxH%uUg~RlIvkeoB!>`O(4OFX(e1X6k)D3D> zD^q2=!+DB0*`A`Q-OqdD_u1Mq`BWwqc7DU8^hawF(F-#Dx0JHWh`>emL@CTW*J~=j z=E`SP_4EYrb}sANB>!v7Xt&nRn^&9_127LGsW2*aw}QVZruL5%;?W|p2S@K>4QWL9 zkA~7{R4b;Kk+Z(($+4<2Y2p6WYx!$xjd1FSKd^@$gPgxtrT<6RhzRTHB4tGJ*rKu4 z*Wi}vZFF8uSa*wD#T*tdC+Ju25f~AE^zHuH>N3JwNR)b{d8Y$)-5r#w`-o_&_5$;8 z44vz_B+hM;xm)Pcc3`o&45=`Jm$K7aVU@TMn4?^LY;(V_vlFkb{@Cw%xahh`lW>E5 zs1D87J*0eau1*H~wf#)3J9S3`#xsfCTt%kK?c~Kf2@y;CawQt&#NDzI%#&tpUa-~l zHWgbM$?Tg$i$Vr6UI^!Nf&J^A7dX}VQCcTOPp4%RQ^rMeYYs_-Z|ME{5%j`dFOb z0`(NNIp1SR4%mrDsw$X#YV1qB*x+-w#91?Q>Fh#&V-Gd;;po-N*>tEKDM|sQS}Tmv z2xr_Y@R}g!Nx;tVQQT~wg!d{8d^)U;I5$_Wumq`VL3J72{5t1#B&a#}v0;zoEgRN( z6Z#Wv$8F|-BeRoFCFnpjjcV+RK+mfJ;Qt2@NbRFJvG~67kq0W(8H*n_y-{0Ds)0F;F%&gfpkt) z{8$fu^rXX_Q<0p}9-3=f{bYVt_{nA+73Kx9i^I!rr&kI@ujybcvbE4bd~}7KechV+ zL5$Vv0Qsf{CvFt43Q9GujZ@XkY#LwDItyartgNgbKYoA(@$&KtC{457h&%UTi}98J z?jR{3V2gC3y%`zFI=r#FHm$8F?}_%r-nV^Wk<^_qHQao%ZdNaHgK|3{ zjyKeK&SLxY=v8}YAb#3A;O7S#eFyKcvKJbOBLRz1jFmPT9;#PFTiiP%Ur^CRpFbZt zQTO>YO(rTgXM4GuS-)h2td$->OWPoxbka)k)!NhTNlc>4Ima}~rC^4cu_+I0plx<%jneStK04y8515IU0$V zthEDPtJ}nOv;U7N zWmMw15tSr~Oa0_vya6Bm0`zL3{|Wh%m-G12Psi!e&M15n5>c$+U(j^A-Kw4dm4=Tr zcf}M=6W`FI;fUB+W_h02*yU1#iDIe%{Me9HmuIoA6&_I$<%bFSIk~+$C_gka>M(K1 z2-UQ>piF7;=fnPRz0>iaFTV&r`DJ5>#p3D)Hc9%$W3-HW3hs$NpX7kDJZ-{lgH+bkWs2Ov;ra^ zYAx3aOQbq`7LG>E)H+)xT=zfTJx5QUt{6xLlS~j|e+FI_NP?6vXXL_G?2lCN(CUSFf7pe9!hJ7{5Gp z$@V`9&ugrueVZX~YgqJY3N5wOtqKl3J8XMJzC4Z+N*7eZs~#_%rbu}QHqRyZi!!PNBW8aB!;?pU`HZL_j*T|@qZSy}V0FPE_JMIZH({fjY* zWX-A0Lmd$ljh^XDm)z8e_qw7LiyK@IHreK&Urm3Hef<5=<)&Eq zBK3zsLjX5G4x(_n`As?EilGa?lENV-OoWxdaCrAmdZ=@;;k@&%Kzn zrIGuN;4NjZ!7&iN0^GgAL?S{sAuW9Un# zlS2x?^gi?pR>%>XV=)*pn3Hjs-MxELdw9W8lR-IU+W^bCyz%jM=#H-!|8&bc+lKf* z4f*Zma6~Smzm(~h!^?tc3jS-q6n%Cr^&&Inl2vO)^|gWc+BOk18Zr5l6~wUDNVLe? z4}+%}bR|5@44i!+5lVZ(=5=e}bQssZYi+@EKHvSh-aI#~0#U^5#FQrQDal`)D^r6{ z45>H#gipV$!DHY7;JR(3iIFa?=LwUT(1A!QR$NmJ%4(-aJ-kg)O=B!M!X|y zh4-4I!O*lVw(ruxG}HVIn)exmW}DDhC&OyXdTQm!IHVi4Wh8K8$i|6$+7$@$*{^+Z z*ff(8$0?DiW?6@$?MVOtgHt(de50-$6!`T6g1n)=uon-X){-mFz2u_e@Pqvst^xmS zgdg5TqkEiK^1ZXuX|}1}aq0`0_%v+~f(bi>ODkq6RdxL4#utDeQK zkWB9vWe0WS4*a(2$v&NS+Fuq`1ty~8#_Vp-8<+IRaO5VE~G= z%!3lJNm->@@R~1(T03mtLd2EP(kHG-1#*4)=O*{L0_qT*kt-a~hYyuQi&&3OnczSwC{^e-cJ=yD0AVx?7t{$Jc9%ey8z)JER zDDDjdM;0o`>H=XUU;+83DF{H#+Rqqnult zPtv_O{kJ;$J)*o3?z+`AWuM` z{O#Mf(UV`}T~cy-M@y?jTm7|D&oY!W1IMJL*b%R$k?)^0^gbrG^#SnHl^a>VPXEr?b_Fp#n}MgS0dd$t+jO|Gw6M>fyF0adh`7qQ~J`2LLA+}qJ{CE zh9GN&v^b57OV<0ouPOHEiq^KD&=eaxA1+p7Ef!1P{j{}d$q~#|nM&=p;MN-F)*oGb zx?((u){{o6{5N5&w^3h3~@m!??(jmM!|Tj5d`E<5hg?i!nr) zcg2Smy?pb&4QmRSd(LlIsY(tzq`VL@)6lES^0UoRIHa}IjWAtrRzF0^yWhE~tngKn z@Zyx4tHu5DA=BZoKbC(kh~e*>WVy2tG4h9NJwiK4)4vWioFKnGmOyUjF8udbTq#@- m2!+z1F&75j!~OGLLL1T%ME=vm#1Rj!K-84A9-{6)4gN27q7sY% literal 11280 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 GSN{hxc3p-5 diff --git a/__tests__/html2/customElement/shadowRoot.interact.react18.html.snap-1.png b/__tests__/html2/customElement/shadowRoot.interact.react18.html.snap-1.png index e95451b8da3db5003a9e8a8434dad31ffcca6c4e..2d653de1e2aaeb3bd6c20451bc3366ad3f08add6 100644 GIT binary patch literal 11200 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 literal 11280 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 GSN{hxc3p-5 diff --git a/__tests__/html2/customElement/shadowRoot.interact.renderIntoShadowRoot.html.snap-1.png b/__tests__/html2/customElement/shadowRoot.interact.renderIntoShadowRoot.html.snap-1.png index 4fe55b0af97a9fa87877850df82c33ee55b4216b..cc78eb605b8c665e9f10dd67c82f655cd173bdf0 100644 GIT binary patch literal 11297 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 literal 11373 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 Bj!OUl diff --git a/packages/component/src/SendBox/SuggestedActions.tsx b/packages/component/src/SendBox/SuggestedActions.tsx index 9b1e5032b5..e986886972 100644 --- a/packages/component/src/SendBox/SuggestedActions.tsx +++ b/packages/component/src/SendBox/SuggestedActions.tsx @@ -36,7 +36,8 @@ const SuggestedActionCarouselContainer = ({ children, className, label }) => { { suggestedActionsCarouselFlipperBoxWidth, suggestedActionsCarouselFlipperCursor, - suggestedActionsCarouselFlipperSize + suggestedActionsCarouselFlipperSize, + stylesRoot } ] = useStyleOptions(); const [{ suggestedActions: suggestedActionsStyleSet }] = useStyleSet(); @@ -99,6 +100,7 @@ const SuggestedActionCarouselContainer = ({ children, className, label }) => { showDots={false} showScrollBar={false} styleSet={filmStyleSet} + stylesRoot={stylesRoot} > {children} From 5b5815d477261dd60d8b2a85a560b9a482be0f5b Mon Sep 17 00:00:00 2001 From: Eugene Olonov Date: Thu, 29 Oct 2026 11:56:02 -0700 Subject: [PATCH 3/7] Skip React 16 touch and wheel listeners in shadow roots, which block scrolling --- .../bundle/src/private/react16EventListenerProps.ts | 13 ++++++------- packages/bundle/src/renderWebChat.spec.tsx | 3 ++- packages/component/src/SendBox/SuggestedActions.tsx | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/bundle/src/private/react16EventListenerProps.ts b/packages/bundle/src/private/react16EventListenerProps.ts index 3e561bffd0..244fac81b4 100644 --- a/packages/bundle/src/private/react16EventListenerProps.ts +++ b/packages/bundle/src/private/react16EventListenerProps.ts @@ -1,4 +1,4 @@ -// Every event prop of React 16, from its event plugins. +// Every event prop of React 16, from its event plugins, except the ones that block scrolling (see below). const REACT_16_EVENT_PROP_NAMES = Object.freeze([ 'onAbort', 'onAnimationEnd', @@ -78,12 +78,11 @@ const REACT_16_EVENT_PROP_NAMES = Object.freeze([ 'onToggle', 'onTouchCancel', 'onTouchEnd', - 'onTouchMove', - 'onTouchStart', + // Without `onTouchMove`, `onTouchStart` and `onWheel`: React 16 listens to them as blocking (not passive), which can delay + // scrolling. Web Chat does not use them. 'onTransitionEnd', 'onVolumeChange', - 'onWaiting', - 'onWheel' + 'onWaiting' ] as const); function noop() { @@ -91,10 +90,10 @@ function noop() { } /** - * A no-op handler for every event of React 16. + * A no-op handler for every event of React 16 that Web Chat may use. * * React 16 listens to an event on the root of the container when it first renders a handler for it. - * Rendering these props makes React 16 listen to every event. + * Rendering these props makes React 16 listen to these events. */ const react16EventListenerProps: { readonly [name: string]: () => void } = Object.freeze( Object.fromEntries(REACT_16_EVENT_PROP_NAMES.map(name => [name, noop])) diff --git a/packages/bundle/src/renderWebChat.spec.tsx b/packages/bundle/src/renderWebChat.spec.tsx index 2a8cefcb7d..34b921fd44 100644 --- a/packages/bundle/src/renderWebChat.spec.tsx +++ b/packages/bundle/src/renderWebChat.spec.tsx @@ -136,7 +136,7 @@ test('Element outside of a shadow root on React 16 should render without a porta expect(render.mock.calls[0][0]).toEqual(expect.objectContaining({ type: ReactWebChat })); }); -test('React 16 event handlers should cover every event of React DOM 16.8.6', () => { +test('React 16 event handlers should cover every event of React DOM 16.8.6 except the ones that block scrolling', () => { const actualReactDOM = jest.requireActual('react-dom'); // Private API of React DOM 16.8.6: `Events[4]` is the dispatch config of every event, by event name. @@ -147,6 +147,7 @@ test('React 16 event handlers should cover every event of React DOM 16.8.6', () expect(Object.keys(react16EventListenerProps).sort()).toEqual( Object.values(eventNameDispatchConfigs) .map(({ phasedRegistrationNames, registrationName }) => registrationName || phasedRegistrationNames.bubbled) + .filter(name => !['onTouchMove', 'onTouchStart', 'onWheel'].includes(name)) .sort() ); }); diff --git a/packages/component/src/SendBox/SuggestedActions.tsx b/packages/component/src/SendBox/SuggestedActions.tsx index e986886972..43e660b86e 100644 --- a/packages/component/src/SendBox/SuggestedActions.tsx +++ b/packages/component/src/SendBox/SuggestedActions.tsx @@ -34,10 +34,10 @@ const ROOT_STYLE = { const SuggestedActionCarouselContainer = ({ children, className, label }) => { const [ { + stylesRoot, suggestedActionsCarouselFlipperBoxWidth, suggestedActionsCarouselFlipperCursor, - suggestedActionsCarouselFlipperSize, - stylesRoot + suggestedActionsCarouselFlipperSize } ] = useStyleOptions(); const [{ suggestedActions: suggestedActionsStyleSet }] = useStyleSet(); From c7fa2765c2bfd939474ce9e561ea94e34ee62bcb Mon Sep 17 00:00:00 2001 From: Eugene Olonov Date: Thu, 29 Oct 2026 12:10:15 -0700 Subject: [PATCH 4/7] Add the changelog fragment --- .changelog/5982-fix-react-16-shadow-dom.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/5982-fix-react-16-shadow-dom.md diff --git a/.changelog/5982-fix-react-16-shadow-dom.md b/.changelog/5982-fix-react-16-shadow-dom.md new file mode 100644 index 0000000000..f7fe3c2ef3 --- /dev/null +++ b/.changelog/5982-fix-react-16-shadow-dom.md @@ -0,0 +1,3 @@ +### Fixed + +- Fixed `renderWebChat()` ignoring clicks and typing inside a shadow root on React 16, related to [#5315](https://github.com/microsoft/BotFramework-WebChat/issues/5315), in PR [#5982](https://github.com/microsoft/BotFramework-WebChat/pull/5982), by [@OEvgeny](https://github.com/OEvgeny) From 353888863532b763c31ba33bcfdaa1cbca0a1956 Mon Sep 17 00:00:00 2001 From: Eugene Olonov Date: Thu, 29 Oct 2026 23:44:14 -0700 Subject: [PATCH 5/7] Throw in renderWebChat() on React 16 for an element inside a shadow root, instead of the portal --- .changelog/5982-fix-react-16-shadow-dom.md | 2 +- __tests__/html2/customElement/shadowRoot.html | 5 +- .../customElement/shadowRoot.interact.html | 99 ----------------- .../shadowRoot.interact.html.snap-1.png | Bin 11200 -> 0 bytes .../shadowRoot.interact.html.snap-2.png | Bin 11934 -> 0 bytes .../shadowRoot.react16.throw.html | 47 ++++++++ .../shadowRoot.react16.throw.html.snap-1.png | Bin 0 -> 4464 bytes .../src/private/react16EventListenerProps.ts | 102 ------------------ packages/bundle/src/renderWebChat.spec.tsx | 61 +++-------- packages/bundle/src/renderWebChat.tsx | 30 +++--- 10 files changed, 80 insertions(+), 266 deletions(-) delete mode 100644 __tests__/html2/customElement/shadowRoot.interact.html delete mode 100644 __tests__/html2/customElement/shadowRoot.interact.html.snap-1.png delete mode 100644 __tests__/html2/customElement/shadowRoot.interact.html.snap-2.png create mode 100644 __tests__/html2/customElement/shadowRoot.react16.throw.html create mode 100644 __tests__/html2/customElement/shadowRoot.react16.throw.html.snap-1.png delete mode 100644 packages/bundle/src/private/react16EventListenerProps.ts diff --git a/.changelog/5982-fix-react-16-shadow-dom.md b/.changelog/5982-fix-react-16-shadow-dom.md index f7fe3c2ef3..b27f20471e 100644 --- a/.changelog/5982-fix-react-16-shadow-dom.md +++ b/.changelog/5982-fix-react-16-shadow-dom.md @@ -1,3 +1,3 @@ ### Fixed -- Fixed `renderWebChat()` ignoring clicks and typing inside a shadow root on React 16, related to [#5315](https://github.com/microsoft/BotFramework-WebChat/issues/5315), in PR [#5982](https://github.com/microsoft/BotFramework-WebChat/pull/5982), by [@OEvgeny](https://github.com/OEvgeny) +- Fixed `renderWebChat()` on React 16 silently ignoring input inside a shadow root, it now throws with the workarounds, related to [#5315](https://github.com/microsoft/BotFramework-WebChat/issues/5315), in PR [#5982](https://github.com/microsoft/BotFramework-WebChat/pull/5982), by [@OEvgeny](https://github.com/OEvgeny) diff --git a/__tests__/html2/customElement/shadowRoot.html b/__tests__/html2/customElement/shadowRoot.html index 7686c64923..d3602da651 100644 --- a/__tests__/html2/customElement/shadowRoot.html +++ b/__tests__/html2/customElement/shadowRoot.html @@ -3,8 +3,9 @@ - - + + + diff --git a/__tests__/html2/customElement/shadowRoot.interact.html b/__tests__/html2/customElement/shadowRoot.interact.html deleted file mode 100644 index e6ceae1168..0000000000 --- a/__tests__/html2/customElement/shadowRoot.interact.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/__tests__/html2/customElement/shadowRoot.interact.html.snap-1.png b/__tests__/html2/customElement/shadowRoot.interact.html.snap-1.png deleted file mode 100644 index 2d653de1e2aaeb3bd6c20451bc3366ad3f08add6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11200 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 diff --git a/__tests__/html2/customElement/shadowRoot.interact.html.snap-2.png b/__tests__/html2/customElement/shadowRoot.interact.html.snap-2.png deleted file mode 100644 index ce1ef4f3f03d1f9134b7962d3c8dc1462cf2113d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11934 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 cpBhO8G1&CV + + + React 16: renderWebChat() throws for an element inside a shadow root + + + + + + + +
+ +
+ + + diff --git a/__tests__/html2/customElement/shadowRoot.react16.throw.html.snap-1.png b/__tests__/html2/customElement/shadowRoot.react16.throw.html.snap-1.png new file mode 100644 index 0000000000000000000000000000000000000000..041fcd25008f4b64afdaa84c2d68a5f265700be5 GIT binary patch literal 4464 zcmeI0X*gSX8^(hfidRkRQez3z>9pSI!e|>?g&JFpZImL2XcZAlbciJgQ!S&lj4Enx zMQss5EF~ni)@Yj=N|IU<8cT}^RY4;19^c>Vn)ma2_1iiBbFOp#=Q;O%|DNl~_|@4? zNkKya1Oh49U$MRl0!bl3AnBAt(!h#&9A+H^`UYfgZRs9Yx;o?8;2uaD+OU*r_P1IE zC)|e$*a2DCfEyXMDh`zhL2Q+BNi#!W!x%nbf{r<6YsP!BS zZ?eskyz4=7vgA!2ZQ8$ z-?MGFe=c_V)=-*e#LkdTa;soGrfhf2K|eg16*U6&BrTVqsUc@O1f+Gubo5&%Ii1AF zDAAybiy1fbf<{w}mlf{0=%Jf4tjXVUqP{Ko@5h!7g?i!-_?$@{k4v%d0t4(RR=#W)bvx=^>*~hB9Vk41&moRw5?(^z9vP*@zr|&JBlhvKHAV(LojX`1uyX#|h z$(wR0MNHlkOrh1_(W5~n;W7R4y4|109C#KF?2Nq#4VjVSKfGrJM(x6h%F| zxcs6r^4R>in+uVolepg3xm50>`siZF*eiXS+0DQH+#Io>#d`rdD34z(!qQ2!eW9&p z`1t;hjXi=%(-s5`M*o zj#etT;fY7K_DNDUZTPg~bQcrCZLJvA^&ae2J&(etQWSoBb*>|N>f=I zaeLm?4ty;ydy!riGZ``h-45$&T!IJof!X1{>n3Mb||!6cojht3#Jz7G{g_5RZcn9lCBjk z(oJ^_hP2*xb@-IXHh?`|kK7vnlUglKHsK>^p3GR0Mp~=I;~2e_Fu;eTXRRE!w*?Fh zYq>XOo3DSd#fJ~Ns%2<~kJi;rkeO#nO);pbz}AA(i}Vsthi`c!9AwG&5H#bbdA=^% z`L-cDj>{Em?q#LMSjZU6@Em(+J4=^h1`L?=hv%x_19A&tX%y3F~&iX_3u&l$yv z6%dE|QR`4=SGNZ)=DSsst|LA?z?)DKK*Fv|(z29a9mMuK0;- zo^5)kne)icA4Y*Zi~b~6gpwy?AoDb9IGxB$1PTZ7u#()Bl&_<`#EeZ;_20NvP(vbt zLz+<5HhU)3aMe8LA6py7uzn{13d~&pT_uk@!on~~#=R!t@;r07@GR_nz>7?q`^O+V zL-iVfEkDVpHb|Mu%k^^9O=SK{+Zfi_ZxA`#3)sEJ@QpDyQ;@7obUR_2$pU1<0E#2q zBnxY-xM2oVj!%>9!(-k(J+jOsAy!;^r9(3@e5z<|!7O@beaXWB*^`z1>Yj;>L5!R9PkU^Ea2r>oA`@{o(_KpFh&Qq3gXedAcs_SWZ%? zs3^D`){1lm-YZQQRPf=(iFh3@CJPU-Xnj~q)dN?PXY2incG+6-0CmE&t7X9`C`B$J`Jrvm4x@gKDyG@Q`lLP7YjnDEE=^O=slZ` z<7O2iaJ#JLfY1kHUJ>+8N7b5m^77x)?|bEgfZ>4p!7RWnYlljIbBXVJA57;h79VO- zz#Ppk))@b;lF9?v)YX2_Gfcu9s@ibxkR{QXnnsO=$MpSt3*o5et?eCv6f`c4Ke_>U zfjD?}Bskvv)beXO?G*fE{WVq)7|4HOJ!ISyk+cOEx5zNu`{|ST#4KafXse%9I8(9Kd24NkQcgH<;$L!q?B+)O t55tFMi4+JVkpwt@l?BXAWDklY16r4wj7kM-@PHMNy^XVV void } = Object.freeze( - Object.fromEntries(REACT_16_EVENT_PROP_NAMES.map(name => [name, noop])) -); - -export default react16EventListenerProps; diff --git a/packages/bundle/src/renderWebChat.spec.tsx b/packages/bundle/src/renderWebChat.spec.tsx index 34b921fd44..cac3e5975b 100644 --- a/packages/bundle/src/renderWebChat.spec.tsx +++ b/packages/bundle/src/renderWebChat.spec.tsx @@ -3,7 +3,6 @@ import ReactDOM from 'react-dom'; -import react16EventListenerProps from './private/react16EventListenerProps'; import renderWebChat from './renderWebChat'; // `render` is set before each test, the React 19 test removes it. @@ -11,15 +10,13 @@ jest.mock('react-dom', () => ({ __esModule: true, default: {} })); const ReactWebChat = () => null; -let createPortal: jest.Mock; let render: jest.Mock; beforeEach(() => { - createPortal = jest.fn((children, container) => ({ children, container })); render = jest.fn(); // React DOM 16.8.6 has no `version`. - Object.assign(ReactDOM, { createPortal, render, version: undefined }); + Object.assign(ReactDOM, { createPortal: jest.fn(), render, version: undefined }); }); test('Element should be rendered by ReactDOM.render()', () => { @@ -86,68 +83,44 @@ describe('Element in a shadow root', () => { shadowRoot.append(element); }); - test('on React 16 should render a portal into the shadow root with every event handler', () => { - renderWebChat(ReactWebChat, {}, element); - - expect(createPortal).toHaveBeenCalledTimes(1); - expect(createPortal.mock.calls[0][0].props).toEqual({ hidden: true, ...react16EventListenerProps }); - expect(createPortal.mock.calls[0][1]).toBe(shadowRoot); - expect(render.mock.calls[0][0].props.children).toEqual([ - expect.objectContaining({ type: ReactWebChat }), - createPortal.mock.results[0].value - ]); - expect(render.mock.calls[0][1]).toBe(element); + test('on React 16 should throw an error suggesting the shadow root or React 17', () => { + expect(() => renderWebChat(ReactWebChat, {}, element)).toThrow( + 'renderWebChat() on React 16 does not support an element inside a shadow root, React 16 would ignore clicks and typing. Pass the shadow root itself instead of the element, or use React 17 or later (with webchat.js, set window.React and window.ReactDOM before loading it).' + ); + expect(render).not.toHaveBeenCalled(); }); - test('on React 16.14 should render a portal into the shadow root', () => { + test('on React 16.14 should throw', () => { Object.assign(ReactDOM, { version: '16.14.0' }); - renderWebChat(ReactWebChat, {}, element); - - expect(createPortal).toHaveBeenCalledTimes(1); + expect(() => renderWebChat(ReactWebChat, {}, element)).toThrow('on React 16 does not support'); + expect(render).not.toHaveBeenCalled(); }); - test('on React 17 or later should render without a portal', () => { + test('on React 17 or later should be rendered by ReactDOM.render()', () => { Object.assign(ReactDOM, { version: '17.0.2' }); renderWebChat(ReactWebChat, {}, element); - expect(createPortal).not.toHaveBeenCalled(); - expect(render.mock.calls[0][0]).toEqual(expect.objectContaining({ type: ReactWebChat })); + expect(render).toHaveBeenCalledTimes(1); + expect(render.mock.calls[0][1]).toBe(element); }); - test('rendered into the shadow root itself should render without a portal', () => { + test('passed as the shadow root itself on React 16 should be rendered by ReactDOM.render()', () => { renderWebChat(ReactWebChat, {}, shadowRoot); - expect(createPortal).not.toHaveBeenCalled(); - expect(render.mock.calls[0][0]).toEqual(expect.objectContaining({ type: ReactWebChat })); + expect(render).toHaveBeenCalledTimes(1); expect(render.mock.calls[0][1]).toBe(shadowRoot); }); }); -test('Element outside of a shadow root on React 16 should render without a portal', () => { +test('Element outside of a shadow root on React 16 should be rendered by ReactDOM.render()', () => { const element = document.createElement('div'); document.body.append(element); renderWebChat(ReactWebChat, {}, element); element.remove(); - expect(createPortal).not.toHaveBeenCalled(); - expect(render.mock.calls[0][0]).toEqual(expect.objectContaining({ type: ReactWebChat })); -}); - -test('React 16 event handlers should cover every event of React DOM 16.8.6 except the ones that block scrolling', () => { - const actualReactDOM = jest.requireActual('react-dom'); - - // Private API of React DOM 16.8.6: `Events[4]` is the dispatch config of every event, by event name. - const [, , , , eventNameDispatchConfigs] = actualReactDOM.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.Events; - - // React DOM 16.8.6 has no `version`. - expect(actualReactDOM).not.toHaveProperty('version'); - expect(Object.keys(react16EventListenerProps).sort()).toEqual( - Object.values(eventNameDispatchConfigs) - .map(({ phasedRegistrationNames, registrationName }) => registrationName || phasedRegistrationNames.bubbled) - .filter(name => !['onTouchMove', 'onTouchStart', 'onWheel'].includes(name)) - .sort() - ); + expect(render).toHaveBeenCalledTimes(1); + expect(render.mock.calls[0][1]).toBe(element); }); diff --git a/packages/bundle/src/renderWebChat.tsx b/packages/bundle/src/renderWebChat.tsx index 5411078471..4c741c2f2f 100644 --- a/packages/bundle/src/renderWebChat.tsx +++ b/packages/bundle/src/renderWebChat.tsx @@ -1,5 +1,5 @@ import { reactNode } from '@msinternal/botframework-webchat-react-valibot'; -import React, { Fragment, type ComponentType, type ReactNode } from 'react'; +import React, { type ComponentType, type ReactNode } from 'react'; import ReactDOM from 'react-dom'; import { args, @@ -16,8 +16,6 @@ import { tuple } from 'valibot'; -import react16EventListenerProps from './private/react16EventListenerProps'; - /** A root from `createRoot()` of "react-dom/client". */ type RenderWebChatRoot = { render(children: ReactNode): void }; @@ -31,7 +29,7 @@ type RenderWebChat = { * @param props Props of ``. * @param elementOrRoot Element to render Web Chat into with `ReactDOM.render()`, or a root from `createRoot()` of "react-dom/client" to render Web Chat with. * React 19 or later removed `ReactDOM.render()`: pass `createRoot(element)` instead of the element. - * @throws When an element is passed on React 19 or later, or when `elementOrRoot` is neither an element nor a root. + * @throws When an element is passed on React 19 or later, an element inside a shadow root on React 16, or when `elementOrRoot` is neither an element nor a root. */ (props: any, elementOrRoot: RenderWebChatContainer | RenderWebChatRoot): void; }; @@ -78,21 +76,17 @@ export default function renderWebChat( const rootNode = elementOrRoot.getRootNode?.(); + // React 16 listens to events on the document, unless the container is a document or a shadow root. + // In a shadow root, the document gets events retargeted to the shadow host, React 16 would ignore every click and keystroke. + // React 17 listens on the container: remove with React 16. + if (is(react16DOMSchema, ReactDOM) && rootNode !== elementOrRoot && is(shadowRootSchema, rootNode)) { + throw new Error( + 'botframework-webchat: renderWebChat() on React 16 does not support an element inside a shadow root, React 16 would ignore clicks and typing. Pass the shadow root itself instead of the element, or use React 17 or later (with webchat.js, set window.React and window.ReactDOM before loading it).' + ); + } + // React 16 to 18, and Preact. Also the IIFE build, which bundles React DOM 16.8.6 unless `window.ReactDOM` is set. - ReactDOM.render( - // React 16 listens to events on the document, unless the container is a document or a shadow root. - // In a shadow root, the document gets events retargeted to the shadow host, React 16 ignores every click and keystroke. - // A portal into the shadow root makes React 16 listen there too. React 17 listens on the container: remove with React 16. - is(react16DOMSchema, ReactDOM) && rootNode !== elementOrRoot && is(shadowRootSchema, rootNode) ? ( - - {children} - {ReactDOM.createPortal( - ) : ( - children - ), - elementOrRoot - ); + ReactDOM.render(children, elementOrRoot); } else if (is(reactRootSchema, elementOrRoot)) { // The host created the root: render with it on any React version, it is the host's to unmount. elementOrRoot.render(children); From 6c4afd0cd96442985ef0a8ed964e84d4a4970025 Mon Sep 17 00:00:00 2001 From: Eugene Olonov Date: Thu, 29 Oct 2026 23:44:27 -0700 Subject: [PATCH 6/7] Add the THEN line to customElement/shadowRoot.html --- __tests__/html2/customElement/shadowRoot.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/__tests__/html2/customElement/shadowRoot.html b/__tests__/html2/customElement/shadowRoot.html index d3602da651..31e336ef43 100644 --- a/__tests__/html2/customElement/shadowRoot.html +++ b/__tests__/html2/customElement/shadowRoot.html @@ -60,6 +60,8 @@ await pageConditions.uiConnected(); await pageConditions.scrollToBottomCompleted(); + + // THEN: Web Chat in the shadow root shows the transcript, styled through `stylesRoot`. await host.snapshot('local'); for (const style of document.querySelector('webchat-element').shadowRoot.querySelectorAll('style')) { From 30de4e436d45b84a46f8e329bff659a4ce742e73 Mon Sep 17 00:00:00 2001 From: Eugene Olonov Date: Thu, 29 Oct 2026 23:53:20 -0700 Subject: [PATCH 7/7] Move the changelog entry to Changed --- .changelog/5982-fix-react-16-shadow-dom.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changelog/5982-fix-react-16-shadow-dom.md b/.changelog/5982-fix-react-16-shadow-dom.md index b27f20471e..1672fb8251 100644 --- a/.changelog/5982-fix-react-16-shadow-dom.md +++ b/.changelog/5982-fix-react-16-shadow-dom.md @@ -1,3 +1,3 @@ -### Fixed +### Changed -- Fixed `renderWebChat()` on React 16 silently ignoring input inside a shadow root, it now throws with the workarounds, related to [#5315](https://github.com/microsoft/BotFramework-WebChat/issues/5315), in PR [#5982](https://github.com/microsoft/BotFramework-WebChat/pull/5982), by [@OEvgeny](https://github.com/OEvgeny) +- Made `renderWebChat()` on React 16 throw for an element inside a shadow root, where clicks and typing were ignored, related to [#5315](https://github.com/microsoft/BotFramework-WebChat/issues/5315), in PR [#5982](https://github.com/microsoft/BotFramework-WebChat/pull/5982), by [@OEvgeny](https://github.com/OEvgeny)