From b162fc74e3f3db4d93b3f71bbd88244d5d263272 Mon Sep 17 00:00:00 2001 From: Maximilian Krause Date: Thu, 3 Sep 2026 20:25:35 +0200 Subject: [PATCH 1/2] fix(image): preserve source headers with crossOrigin and referrerPolicy --- .../Libraries/Image/ImageSourceUtils.js | 4 +++- .../Libraries/Image/__tests__/Image-itest.js | 15 ++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/packages/react-native/Libraries/Image/ImageSourceUtils.js b/packages/react-native/Libraries/Image/ImageSourceUtils.js index 7e5ea6436d5a..882d767b0d87 100644 --- a/packages/react-native/Libraries/Image/ImageSourceUtils.js +++ b/packages/react-native/Libraries/Image/ImageSourceUtils.js @@ -12,6 +12,7 @@ import type {ResolvedAssetSource} from './AssetSourceResolver'; import type {ImageProps} from './ImageProps'; +import type {ImageURISource} from './ImageSource'; import resolveAssetSource from './resolveAssetSource'; @@ -87,7 +88,8 @@ export function getImageSourcesFromImageProps(imageProps: ImageProps): } else if (src != null) { sources = [{uri: src, headers: headers, width, height}]; } else if (source != null && source.uri && Object.keys(headers).length > 0) { - sources = [{...source, headers}]; + const sourceHeaders = (source as ImageURISource).headers; + sources = [{...source, headers: {...sourceHeaders, ...headers}}]; } else { sources = source; } diff --git a/packages/react-native/Libraries/Image/__tests__/Image-itest.js b/packages/react-native/Libraries/Image/__tests__/Image-itest.js index a1f3140f850b..6eb0d0e8a9e1 100644 --- a/packages/react-native/Libraries/Image/__tests__/Image-itest.js +++ b/packages/react-native/Libraries/Image/__tests__/Image-itest.js @@ -102,19 +102,28 @@ describe('', () => { ); }); - it('sets the "Access-Control-Allow-Credentials" header in "use-credentials" mode', () => { + it('adds the credentials header without replacing source headers', () => { const root = Fantom.createRoot(); Fantom.runTask(() => { root.render( - , + , ); }); expect( root.getRenderedOutput({props: ['source-header']}).toJSX(), ).toEqual( - , + , ); }); }); From 045e527dcb5877c2d48dd27aece57db44e50fefd Mon Sep 17 00:00:00 2001 From: Maximilian Krause Date: Fri, 4 Sep 2026 12:55:32 +0200 Subject: [PATCH 2/2] fix(image): avoid copying unset source headers --- packages/react-native/Libraries/Image/ImageSourceUtils.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/react-native/Libraries/Image/ImageSourceUtils.js b/packages/react-native/Libraries/Image/ImageSourceUtils.js index 882d767b0d87..f1057d92ba11 100644 --- a/packages/react-native/Libraries/Image/ImageSourceUtils.js +++ b/packages/react-native/Libraries/Image/ImageSourceUtils.js @@ -89,7 +89,13 @@ export function getImageSourcesFromImageProps(imageProps: ImageProps): sources = [{uri: src, headers: headers, width, height}]; } else if (source != null && source.uri && Object.keys(headers).length > 0) { const sourceHeaders = (source as ImageURISource).headers; - sources = [{...source, headers: {...sourceHeaders, ...headers}}]; + sources = [ + { + ...source, + headers: + sourceHeaders != null ? {...sourceHeaders, ...headers} : headers, + }, + ]; } else { sources = source; }