Image
Displays a local or remote image. Set the source ({ uri }) and a size, then choose how it fills its box with a fit prop: cover (the default) fills the box and crops the overflow, while contain fits the whole image inside and letterboxes the spare space.
stretch, center, repeat, and none cover the rarer fits. Remote images load over the network; bundle local assets with require. Name an image that carries content with alt, and it is announced as an image with that name on every platform; an image with no name is decorative, and assistive tech skips it. For a circular identity photo with an initials fallback, reach for <Avatar src="…" name="…" /> rather than rounding a bare Image.
iOS
Android
Web
tsx
<Image source={{ uri: "/kira-tanaka.jpg" }} alt="Portrait of Kira Tanaka" width={120} height={120} />
Default
Contain
Cover
Props
Prop
Description
source
ImageSourcePropType
The image to display: a remote `{ uri }`, or a bundled asset from `require(...)`.
contain
boolean
Fit: fit the whole image inside the box, letterboxing the spare space (pick one).
cover
boolean
Fit: fill the box, cropping any overflow. The default when no fit is set (pick one).
stretch
boolean
Fit: fill the box by distorting the aspect ratio (pick one).
center
boolean
Fit: center at intrinsic size, scaling down only when larger than the box (pick one).
repeat
boolean
Fit: tile the image at its intrinsic size to fill the box (pick one).
none
boolean
Fit: show at intrinsic size with no scaling (pick one).
width
ImageStyle["width"]
Width of the image box (px, or a percent string like `"100%"`). Images have no intrinsic layout size.
height
ImageStyle["height"]
Height of the image box (px, or a percent string).
radius
ImageRadius
Corner radius from the kit's radius scale (pick one): none, sm, md, lg, xl, 2xl, 3xl, full.
style
StyleProp<ImageStyle>
Composition only (aspectRatio, layout within a parent). Size comes from `width` / `height`, rounding from `radius`.
accessibilityLabel
string
Accessible name for the image, the same name `alt` gives (and it wins when both are set). On iOS and Android React Native makes an image its own accessibility element for `alt` (or `accessible`), so prefer `alt` for an image that stands on its own.
alt
string
The image's alt text: a named image is announced as an image with this name on every platform (the web's <img alt>, the image role natively). With no name here or in `accessibilityLabel` the image is decorative, and assistive tech skips it.
testID
string
E2E hook forwarded to the underlying image.
accessible
boolean
When true, indicates that the view is an accessibility element. By default, all the touchable elements are accessible.
accessibilityActions
ReadonlyArray<AccessibilityActionInfo>
Provides an array of custom actions available for accessibility.
aria-label
string
Alias for accessibilityLabel https://reactnative.dev/docs/view#accessibilitylabel https://github.com/facebook/react-native/issues/34424
blurRadius
number
blurRadius: the blur radius of the blur filter added to the image
accessibilityRole
AccessibilityRole
Accessibility Role tells a person using either VoiceOver on iOS or TalkBack on Android the type of element that is focused on.
capInsets
Insets
When the image is resized, the corners of the size specified by capInsets will stay a fixed size, but the center content and borders of the image will be stretched. This is useful for creating resizable rounded buttons, shadows, and other resizable assets. More info on Apple documentation
accessibilityState
AccessibilityState
Accessibility State tells a person using either VoiceOver on iOS or TalkBack on Android the state of the element currently focused on.
onProgress
((event: ImageProgressEventIOS) => void)
Invoked on download progress with {nativeEvent: {loaded, total}}
aria-busy
boolean
alias for accessibilityState see https://reactnative.dev/docs/accessibility#accessibilitystate
aria-checked
boolean | 'mixed'
—
aria-disabled
boolean
—
aria-expanded
boolean
—
aria-selected
boolean
—
onPartialLoad
(() => void)
Invoked when a partial load of the image is complete. The definition of what constitutes a "partial load" is loader specific though this is meant for progressive JPEG loads.
accessibilityHint
string
An accessibility hint helps users understand what will happen when they perform an action on the accessibility element when that result is not obvious from the accessibility label.
accessibilityValue
AccessibilityValue
Represents the current value of a component. It can be a textual description of a component's value, or for range-based components, such as sliders and progress bars, it contains range information (minimum, current, and maximum).
aria-valuemax
AccessibilityValue['max']
—
aria-valuemin
AccessibilityValue['min']
—
aria-valuenow
AccessibilityValue['now']
—
aria-valuetext
AccessibilityValue['text']
—
onAccessibilityAction
((event: AccessibilityActionEvent) => void)
When `accessible` is true, the system will try to invoke this function when the user performs an accessibility custom action.
importantForAccessibility
('auto' | 'yes' | 'no' | 'no-hide-descendants')
[Android] Controlling if a view fires accessibility events and if it is reported to accessibility services.
resizeMethod
'auto' | 'resize' | 'scale' | 'none'
The mechanism that should be used to resize the image when the image's dimensions differ from the image view's dimensions. Defaults to `auto`. - `auto`: Use heuristics to pick between `resize` and `scale`. - `resize`: A software operation which changes the encoded image in memory before it gets decoded. This should be used instead of `scale` when the image is much larger than the view. - `scale`: The image gets drawn downscaled or upscaled. Compared to `resize`, `scale` is faster (usually hardware accelerated) and produces higher quality images. This should be used if the image is smaller than the view. It should also be used if the image is slightly bigger than the view. - `none`: No sampling is performed and the image is displayed in its full resolution. This should only be used in rare circumstances because it is considered unsafe as Android will throw a runtime exception when trying to render images that consume too much memory. More details about `resize` and `scale` can be found at http://frescolib.org/docs/resizing-rotating.html.
aria-hidden
boolean
A value indicating whether the accessibility elements contained within this accessibility element are hidden.
aria-modal
boolean
—
fadeDuration
number
Duration of fade in animation in ms. Defaults to 300
role
Role
Indicates to accessibility services to treat UI component like a specific role.
id
string
Used to reference react managed images from native code.
onLayout
((event: LayoutChangeEvent) => void)
onLayout function Invoked on mount and layout changes with {nativeEvent: { layout: {x, y, width, height} }}.
onError
((error: ImageErrorEvent) => void)
Invoked on load error with {nativeEvent: {error}}
onLoad
((event: ImageLoadEvent) => void)
Invoked when load completes successfully { source: { uri, height, width } }.
onLoadEnd
(() => void)
Invoked when load either succeeds or fails
onLoadStart
(() => void)
Invoked on load start
progressiveRenderingEnabled
boolean
—
borderRadius
number
—
borderTopLeftRadius
number
—
borderTopRightRadius
number
—
borderBottomLeftRadius
number
—
borderBottomRightRadius
number
—
accessibilityLabelledBy
string | string[]
Identifies the element that labels the element it is applied to. When the assistive technology focuses on the component with this props, the text is read aloud. The value should should match the nativeID of the related element.
aria-labelledby
string
Identifies the element that labels the element it is applied to. When the assistive technology focuses on the component with this props, the text is read aloud. The value should should match the nativeID of the related element.
accessibilityLiveRegion
'none' | 'polite' | 'assertive'
Indicates to accessibility services whether the user should be notified when this view changes. Works for Android API >= 19 only.
src
string
A string representing the resource identifier for the image. Similar to src from HTML. See https://reactnative.dev/docs/image#src
srcSet
string
Similar to srcset from HTML. See https://reactnative.dev/docs/image#srcset
aria-live
('polite' | 'assertive' | 'off')
Indicates to accessibility services whether the user should be notified when this view changes. Works for Android API >= 19 only.
loadingIndicatorSource
ImageURISource
similarly to `source`, this property represents the resource used to render the loading indicator for the image, displayed until image is ready to be displayed, typically after when it got downloaded from network.
nativeID
string
Used to reference react managed images from native code.
defaultSource
ImageURISource | ImageRequireSource
A static image to display while downloading the final image off the network.
screenReaderFocusable
boolean
Enables the view to be screen reader focusable, not keyboard focusable.
accessibilityElementsHidden
boolean
A Boolean value indicating whether the accessibility elements contained within this accessibility element are hidden to the screen reader.
crossOrigin
'anonymous' | 'use-credentials'
Adds the CORS related header to the request. Similar to crossorigin from HTML. See https://reactnative.dev/docs/image#crossorigin
accessibilityViewIsModal
boolean
A Boolean value indicating whether VoiceOver should ignore the elements within views that are siblings of the receiver.
tintColor
ColorValue
Changes the color of all the non-transparent pixels to the tintColor. See https://reactnative.dev/docs/image#tintcolor
onAccessibilityEscape
(() => void)
When accessible is true, the system will invoke this function when the user performs the escape gesture (scrub with two fingers).
referrerPolicy
'no-referrer' | 'no-referrer-when-downgrade' | 'origin' | 'origin-when-cross-origin' | 'same-origin' | 'strict-origin' | 'strict-origin-when-cross-origin' | 'u…
A string indicating which referrer to use when fetching the resource. Similar to referrerpolicy from HTML. See https://reactnative.dev/docs/image#referrerpolicy
onAccessibilityTap
(() => void)
When `accessible` is true, the system will try to invoke this function when the user performs accessibility tap gesture.
onMagicTap
(() => void)
When accessible is true, the system will invoke this function when the user performs the magic tap gesture.
accessibilityIgnoresInvertColors
boolean
https://reactnative.dev/docs/accessibility#accessibilityignoresinvertcolorsios
accessibilityLanguage
string
By using the accessibilityLanguage property, the screen reader will understand which language to use while reading the element's label, value and hint. The provided string value must follow the BCP 47 specification (https://www.rfc-editor.org/info/bcp47). https://reactnative.dev/docs/accessibility#accessibilitylanguage-ios
accessibilityShowsLargeContentViewer
boolean
A Boolean value that indicates whether or not to show the item in the large content viewer. Available on iOS 13.0+ https://reactnative.dev/docs/accessibility#accessibilityshowslargecontentviewer
accessibilityLargeContentTitle
string
When `accessibilityShowsLargeContentViewer` is set, this string will be used as title for the large content viewer. https://reactnative.dev/docs/accessibility#accessibilitylargecontenttitle
accessibilityRespondsToUserInteraction
boolean
Blocks the user from interacting with the component through keyboard while still allowing screen reader to interact with it if this View is still accessible.
Do & Don’t
Fitting a photo
Don’t
Stretch a photo to a box of another shape; stretch scales each axis on its own, so the picture squashes out of proportion.
Do
Fill a box of another shape with cover: the photo keeps its proportions and crops what falls outside the box.