1+ /* eslint-disable global-require,@typescript-eslint/no-require-imports */ 
12import  type  {  ReactElement  }  from  'react' ; 
2- import  *  as  ReactDOM  from  'react-dom' ; 
33import  type  {  RenderReturnType  }  from  './_types.ts' ; 
44import  {  supportsRootApi  }  from  './reactApis.ts' ; 
55
@@ -8,26 +8,33 @@ type HydrateOrRenderType = (domNode: Element, reactElement: ReactElement) => Ren
88// TODO: once React dependency is updated to >= 18, we can remove this and just 
99// import ReactDOM from 'react-dom/client'; 
1010let  reactDomClient : typeof  import ( 'react-dom/client' ) ; 
11+ // Can't just import react-dom because that breaks ESM under React 19 
12+ let  reactDom : typeof  import ( 'react-dom' ) ; 
1113if  ( supportsRootApi )  { 
1214  // This will never throw an exception, but it's the way to tell Webpack the dependency is optional 
1315  // https://github.com/webpack/webpack/issues/339#issuecomment-47739112 
1416  // Unfortunately, it only converts the error to a warning. 
1517  try  { 
16-     // eslint-disable-next-line global-require,@typescript-eslint/no-require-imports 
1718    reactDomClient  =  require ( 'react-dom/client' )  as  typeof  import ( 'react-dom/client' ) ; 
1819  }  catch  ( _e )  { 
1920    // We should never get here, but if we do, we'll just use the default ReactDOM 
2021    // and live with the warning. 
21-     reactDomClient  =  ReactDOM  as  unknown  as  typeof  import ( 'react-dom/client' ) ; 
22+     reactDomClient  =  require ( 'react-dom' )  as  unknown  as  typeof  import ( 'react-dom/client' ) ; 
23+   } 
24+ }  else  { 
25+   try  { 
26+     reactDom  =  require ( 'react-dom' )  as  typeof  import ( 'react-dom' ) ; 
27+   }  catch  ( _e )  { 
28+     // Also should never happen 
2229  } 
2330} 
2431
25- /* eslint-disable react/no-deprecated, @typescript-eslint/no-deprecated,@typescript-eslint/no-non-null-assertion -- 
32+ /* eslint-disable @typescript-eslint/no-deprecated,@typescript-eslint/no-non-null-assertion -- 
2633 * while we need to support React 16 
2734 */ 
2835const  reactHydrate : HydrateOrRenderType  =  supportsRootApi 
2936  ? reactDomClient ! . hydrateRoot 
30-   : ( domNode ,  reactElement )  =>  ReactDOM . hydrate ( reactElement ,  domNode ) ; 
37+   : ( domNode ,  reactElement )  =>  reactDom ! . hydrate ( reactElement ,  domNode ) ; 
3138
3239function  reactRender ( domNode : Element ,  reactElement : ReactElement ) : RenderReturnType  { 
3340  if  ( supportsRootApi )  { 
@@ -36,10 +43,9 @@ function reactRender(domNode: Element, reactElement: ReactElement): RenderReturn
3643    return  root ; 
3744  } 
3845
39-   // eslint-disable-next-line react/no-render-return-value 
40-   return  ReactDOM . render ( reactElement ,  domNode ) ; 
46+   return  reactDom ! . render ( reactElement ,  domNode ) ; 
4147} 
42- /* eslint-enable react/no-deprecated, @typescript-eslint/no-deprecated,@typescript-eslint/no-non-null-assertion */ 
48+ /* eslint-enable @typescript-eslint/no-deprecated,@typescript-eslint/no-non-null-assertion */ 
4349
4450export  default  function  reactHydrateOrRender ( 
4551  domNode : Element , 
0 commit comments