Many applications require sharing screenshots of the app to other users using different media platforms. Sharing a screenshot in react native is also very easy. Thanks to react-native-view-shot to capture the app's screen and convert it into an image to share, react-native-fs to access native file systems on the device and react-native-share to share text or image via multiple social media platforms. In this blog, let’s learn how to capture a screenshot and share it.
1. Downloading Dependencies:
yarn add react-native-view-shot yarn add react-native-share yarn add react-native-fs
Before React Native 0.60.x we would need to link it using the following command:
react-native link react-native-view-shot react-native link react-native-share react-native link react-native-fs
After React Native 0.60.x auto-link should just work.
On iOS we would need to install dependency using pod files:
In the iOS folder of the project, we need to run below command -
npx pod install
2. Capturing Screenshot:
To capture a screenshot of a View, we should make ViewShot as the parent of that View.
Add below line in the import statements:
import ViewShot from ‘react-native-view-shot’;
Update code by making ViewShot as the parent of the View.
<ViewShot style={styles.container} ref="viewShot" options={{format: 'jpg', quality: 0.9}}> <View> <Button style={styles.label} title="Capture and Share" onPress={this.captureAndShareScreenshot} /> </View> </ViewShot>
Capture screenshot on button click like -
captureAndShareScreenshot = () => { this.refs.viewShot.capture().then((uri) => { RNFS.readFile(uri, 'base64').then((res) => { let urlString = 'data:image/jpeg;base64,' + res; let options = { title: 'Share Title', message: 'Share Message', url: urlString, type: 'image/jpeg', }; Share.open(options) .then((res) => { console.log(res); }) .catch((err) => { err && console.log(err); }); }); }); };
Conclusion:
See how easy peasy it is to capture screenshot and convert it into an image and share. I hope this blog sound informative and useful to you. If you have any queries, please feel free to contact me on pankaj@gkmit.co or you can drop a message in the comments section below.
Comments
akhil bisht
hey, I have been trying to use it in functional component and it was showing me the error : functional component can have ref, so I used useRef from react.js and now it shows, this.refs.viewShot is an undefined object.
U kaung Khant Zaw
Thank You, Sir! It take 2 hours of searching before this blog. what u share is the exactly what i need! I really appreciate your help. Thank you.
Yin Wai Naing
Thank You so much Sir! It is very useful for me. I really appreciate your help.
Works Delight
I really enjoyed the way the writer presented the information in this blog. It was easy to understand and follow.