diff --git a/packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js b/packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js index 1149e442f98ea..6131123d90aa4 100644 --- a/packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js +++ b/packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js @@ -2285,6 +2285,7 @@ function preloadPropsFromPreloadOptions( imageSrcSet: options.imageSrcSet, imageSizes: options.imageSizes, referrerPolicy: options.referrerPolicy, + media: options.media, }; } diff --git a/packages/react-dom-bindings/src/server/ReactFizzConfigDOM.js b/packages/react-dom-bindings/src/server/ReactFizzConfigDOM.js index ec7d829428731..ec10e438aec11 100644 --- a/packages/react-dom-bindings/src/server/ReactFizzConfigDOM.js +++ b/packages/react-dom-bindings/src/server/ReactFizzConfigDOM.js @@ -5565,6 +5565,7 @@ function preloadPropsFromPreloadOptions( imageSrcSet: options.imageSrcSet, imageSizes: options.imageSizes, referrerPolicy: options.referrerPolicy, + media: options.media, }; } diff --git a/packages/react-dom/src/__tests__/ReactDOMFloat-test.js b/packages/react-dom/src/__tests__/ReactDOMFloat-test.js index 2ee581f850689..853d487547f08 100644 --- a/packages/react-dom/src/__tests__/ReactDOMFloat-test.js +++ b/packages/react-dom/src/__tests__/ReactDOMFloat-test.js @@ -3771,6 +3771,91 @@ body { ); }); + it('should handle media on image preload', async () => { + function App({isClient}) { + ReactDOM.preload('/server', { + as: 'image', + imageSrcSet: '/server', + imageSizes: '100vw', + media: 'print and (min-width: 768px)', + }); + + if (isClient) { + ReactDOM.preload('/client', { + as: 'image', + imageSrcSet: '/client', + imageSizes: '100vw', + media: 'screen and (max-width: 480px)', + }); + } + + return ( + +
hello + + ); + } + + await act(() => { + renderToPipeableStream(