
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
react-native-image-modal
Advanced tools
react-native-image-modal is a simple full size modal image for iOS and Android.
You can pinch zoom-in/out, double-tap zoom-in/out, move and swipe-to-dismiss.
There are blog posts about how to use react-native-image-modal.
Execute the command to install react-native-image-modal.
# npm
npm install --save react-native-image-modal
# yarn
yarn add --dev react-native-image-modal
# pnpm
pnpm add --save react-native-image-modal
Import react-native-image-modal.
import ImageModal from 'react-native-image-modal'
Add the source code below to where you want to use it.
return (
<ImageModal
resizeMode='contain'
imageBackgroundColor='#000000'
style={{
width: 250,
height: 250,
}}
source={{
uri: 'https://cdn.pixabay.com/photo/2019/07/25/18/58/church-4363258_960_720.jpg',
}}
/>
)
If you want to use a custom image component like react-native-fast-image or expo-image, you can use renderImageComponent property.
import FastImage, {ImageStyle, ResizeMode} from 'react-native-fast-image';
<ImageModal
style={{
width: imageWidth,
height: 250,
}}
source={{
uri: 'https://cdn.pixabay.com/photo/2018/01/11/09/52/three-3075752_960_720.jpg',
}}
renderImageComponent={({source, resizeMode, style}) => (
<FastImage
style={style as StyleProp<ImageStyle>}
source={source as ImageRequireSource}
resizeMode={resizeMode as ResizeMode}
/>
)}
/>
You can use All props of React Native Image for the original image(not full size modal image).
Below are react-native-image-modal specific properties.
| Prop | required | Type | Description |
|---|---|---|---|
| renderToHardwareTextureAndroid | X | boolean | It is for Android animation. Default is true. If you don't want to use Hardware Texture on Android, set false. |
| isTranslucent | X | boolean | if you use translucent status bar in android, set true to prevent wrong position animation. (In Expo, translucent default is true) |
| swipeToDismiss | X | boolean | set true to swipe to dismiss (default: true) |
| imageBackgroundColor | X | string | background color for the original image |
| overlayBackgroundColor | X | string | background color for the full size modal(default: #000000) |
| (Deprecated) modalRef | X | ImageDetail | You can use this Ref for closing the Modal programmatically. (This pros is deprecated. Please use the ref props.) |
| ref | X | ReactNativeImageModal | You can use this Ref for opening or closing the Modal programmatically. |
| disabled | X | boolean | disable opening the modal |
| modalImageStyle | X | ImageStyle | Image Style in Modal |
| resizeMode | X | ResizeMode('contain', 'cover', 'stretch','center') | Image resizeMode |
| modalImageResizeMode | X | ResizeMode('contain', 'cover', 'stretch','center') | Image resizeMode for modal image. If it is not passed, it will follow the resizeMode. |
| parentLayout | X | { x: number; y: number; width: number; height: number; } | Parent layout of image modal to hide overflow of image. |
| animationDuration | X | number | Duration of animation. Default is 100ms. |
| hideCloseButton | X | boolean | hide hide the default close button |
| onLongPressOriginImage | X | () => void | long press event callback for the original image |
| renderHeader | X | (close: () => void) => ReactNode | You can customize the header of the full size modal with react native components |
| renderFooter | X | (close: () => void) => ReactNode | You can customize the footer of the full size modal with react native components |
| renderImageComponent | X | ({ source: ImageSourcePropType, style?: StyleProp, resizeMode?: ImageResizeMode, isModalOpen: boolean}) => ReactNode | You can customize the footer of the full size modal with react native components |
| isRTL | X | boolean | You can use this library with right-to-left-devices. (#35) |
| onTap | X | (eventParams: {locationX: number; locationY: number; pageX: number; pageY: number;}) => void | one tap event callback for the full size modal |
| onDoubleTap | X | () => void | double tap event callback for the full size modal |
| onLongPress | X | () => void | long press event callback for the full size modal |
| onOpen | X | () => void | open event callback for the full size modal |
| didOpen | X | () => void | event callback after open for the full size modal |
| onMove | X | (position: {type: string; positionX: number; positionY: number; scale: number; zoomCurrentDistance: number;}) => void | move event callback for the full size modal |
| responderRelease | X | (vx?: number, scale?: number) => void | responder release event callback for the full size modal |
| willClose | X | () => void | event callback before close for the full size modal |
| onClose | X | () => void | close event callback for the full size modal |





You can see the example code and demo.
Clone the repository
git clone https://github.com/dev-yakuza/react-native-image-modal.git
Install libraries
cd Example
npm install
# iOS
cd ios
pod install
Execute the example project.
# Example folder
# iOS
npm run ios
# Android
npm run android
You can follow below to contribute react-native-image-modal.
Clone the repository.
git clone https://github.com/dev-yakuza/react-native-image-modal.git
Install libraries.
npm install
npx lefthook install
Execute the following command to start the project.
npm start
Execute the Develop project via the commands below.
cd Develop
npm install
# android
npm run android
# ios
cd ios
pod install
cd ..
npm run ios
FAQs
image full screen modal for react native
The npm package react-native-image-modal receives a total of 3,758 weekly downloads. As such, react-native-image-modal popularity was classified as popular.
We found that react-native-image-modal demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.