Skip to content

【Android】【0.86.2】Image.getSize() fails for data: URIs on Android since v0.86 #57787

Description

@manakuro

Description

Image.getSize() fails with IllegalArgumentException: Unsupported uri scheme for encoded image fetch! when called with a data: URI (e.g. base64-encoded PNG/JPEG) on Android. This worked correctly in 0.84.1 and regressed starting in 0.86.

This is caused by #56736 / commit 8823a80, which changed ImageLoaderModule.getSize() on Android from ImagePipeline.fetchDecodedImage() to ImagePipeline.fetchEncodedImage() in order to fix downsampled dimensions being returned for large images (#33498).

Before (0.84.1 and earlier):

val request: ImageRequest = ImageRequestBuilder.newBuilderWithSource(source.uri).build()
val dataSource: DataSource<CloseableReference<CloseableImage>> =
this.imagePipeline.fetchDecodedImage(request, this.callerContext)

After (0.86+):

val request: ImageRequest =
ImageRequestBuilder.newBuilderWithSource(source.uri)
.setRotationOptions(RotationOptions.disableRotation())
.build()
val dataSource: DataSource<CloseableReference<PooledByteBuffer>> =
this.imagePipeline.fetchEncodedImage(request, this.callerContext)

fetchDecodedImage() routes through Fresco's decode pipeline, which supports data: URIs via DataFetchProducer. fetchEncodedImage() uses a different, narrower producer sequence (ProducerSequenceFactory.getEncodedImageProducerSequence()) that does not recognize the data scheme, and throws:

java.lang.IllegalArgumentException: Unsupported uri scheme for encoded image fetch! Uri is: data:image/jpeg;base64,/9j/4AA...

This is the same underlying limitation that was already hit (and fixed) for res:// drawable URIs in #56944 — that PR added a fast path specifically for resource URIs, but the same has not yet been done for data: URIs.

Note that displaying the same data: URI via <Image source={{ uri: ... }} /> works fine — only getSize() / getSizeWithHeaders() are affected, because they use the encoded-image pipeline while rendering uses the decoded-image pipeline.

Steps to reproduce

  1. Create a new React Native project on react-native@0.86.0 (Android).
  2. Add the following code and run it on an Android device/emulator:
/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 *
 * @format
 */

import {
  Alert,
  Button,
  Image,
  StatusBar,
  StyleSheet,
  useColorScheme,
  View,
} from 'react-native';
import {
  SafeAreaProvider,
  useSafeAreaInsets,
} from 'react-native-safe-area-context';

// Verified valid base64 PNG:
const BASE64_PNG =
  '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';

function DataUriGetSizeRepro() {
  const handlePress = () => {
    Image.getSize(
      `data:image/png;base64,${BASE64_PNG}`,
      (width, height) => {
        Alert.alert('success', `${width}x${height}`);
      },
      error => {
        Alert.alert('getSize error', String(error));
      },
    );
  }

  return (
    <View style={styles.repro}>
      <Image
        source={{ uri: `data:image/png;base64,${BASE64_PNG}` }}
        style={styles.reproImage}
        resizeMode="contain"
      />
      <View>
        <Button title="getSize" onPress={handlePress} />
      </View>
    </View>
  );
}

function App() {
  const isDarkMode = useColorScheme() === 'dark';

  return (
    <SafeAreaProvider>
      <StatusBar barStyle={isDarkMode ? 'light-content' : 'dark-content'} />
      <AppContent />
    </SafeAreaProvider>
  );
}

function AppContent() {
  const safeAreaInsets = useSafeAreaInsets();

  return (
    <View style={[styles.container, { paddingTop: safeAreaInsets.top, paddingBottom: safeAreaInsets.bottom }]}>
      <DataUriGetSizeRepro />
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
  },
  repro: {
    alignItems: 'center',
    justifyContent: 'center',
    gap: 24,
    flex: 1,
  },
  reproImage: {
    width: 200,
    height: 200,
    backgroundColor: '#eee',
  },
});

export default App;
  1. Observe that the failure callback is invoked with:
java.lang.IllegalArgumentException: Unsupported uri scheme for encoded image fetch! Uri is: data:image/jpeg;base64,/9j/4AA...
  1. For comparison, render the same URI with <Image source={{ uri: data:image/jpeg;base64,${base64} }} /> — it displays correctly, confirming the issue is isolated to getSize() / getSizeWithHeaders().

  2. Downgrade to react-native@0.84.1 and repeat step 2 — getSize() resolves successfully with the correct width/height.

React Native Version

0.86.2

Affected Platforms

Runtime - Android

Output of npx @react-native-community/cli info

info Fetching system and libraries information...
System:
  OS: macOS 26.5.2
  CPU: (10) arm64 Apple M4
  Memory: 140.95 MB / 32.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 24.18.0
    path: /Users/manato.kuroda/.local/state/fnm_multishells/73456_1784934606243/bin/node
  Yarn:
    version: 1.22.22
    path: /Users/manato.kuroda/.local/state/fnm_multishells/73456_1784934606243/bin/yarn
  npm:
    version: 11.16.0
    path: /Users/manato.kuroda/.local/state/fnm_multishells/73456_1784934606243/bin/npm
  Watchman: Not Found
Managers:
  CocoaPods:
    version: 1.16.2
    path: /opt/homebrew/opt/rbenv/shims/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 25.5
      - iOS 26.5
      - macOS 26.5
      - tvOS 26.5
      - visionOS 26.5
      - watchOS 26.5
  Android SDK:
    API Levels:
      - "32"
      - "33"
      - "34"
      - "35"
      - "36"
    Build Tools:
      - 34.0.0
      - 35.0.0
      - 36.0.0
    System Images:
      - android-30 | Google Play ARM 64 v8a
      - android-34 | Google APIs ARM 64 v8a
      - android-34 | Google Play ARM 64 v8a
      - android-35 | Google Play ARM 64 v8a
      - android-36 | Google Play ARM 64 v8a
    Android NDK: Not Found
IDEs:
  Android Studio: 2026.1 AI-261.26222.65.2613.15948027
  Xcode:
    version: 26.6/17F113
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.13
    path: /Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home/bin/javac
  Ruby:
    version: 3.3.6
    path: /opt/homebrew/opt/rbenv/shims/ruby
npmPackages:
  "@react-native-community/cli":
    installed: 20.1.0
    wanted: 20.1.0
  react:
    installed: 19.2.3
    wanted: 19.2.3
  react-native:
    installed: 0.86.2
    wanted: 0.86.2
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: true
  newArchEnabled: true

Stacktrace or Logs

java.lang.IllegalArgumentException: Unsupported uri scheme for encoded image fetch! Uri is: data:image/jpeg;base64,/9j/4AA...

MANDATORY Reproducer

https://github.com/manakuro/react-native-image-getsize-reproducer

Screenshots and Videos

Screen_recording_20260802_093304.mp4

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions