Access to the Interplanetary File System (IPFS) for React Native apps without depending upon trusted third parties.
Enables self-sovereign access to decentralized file systems for cross-platform applications. The property of decentralization is critical for dApps; where data verifiability, integrity and availability are of paramount importance; usually in applications which deal with censorship-resistance or demand reliable off-chain storage.
ℹ️ This project is a hard fork of
tesseract-one/react-native-gomobile-ipfs
💕
react-native-gomobile-ipfs
works by launching a dedicated Kubo RPC API v0 which can be easily accessed at runtime via traditional networking libraries such as axios
.
You can install react-native-gomobile-ipfs
using Yarn:
yarn add react-native-gomobile-ipfs
In this module, import
ing react-native-gomobile-ipfs
exports a start()
function, which allows the app to launch a localhost API. In the example below, we show how to cat
the hello worlds
tutorial hash:
import { start, getIpfsUri } from 'react-native-gomobile-ipfs';
import axios from 'axios';
const { stop } = await start();
const uri = getIpfsUri(); // i.e. "http://localhost:5001/api/v0"
const {data: result} = await axios({
url: `${uri}/cat?arg=QmZ4tDuvesekSs4qM5ZBKpXiZGun7S2CYtEZRB3DYXkjGx`,
method: 'post',
});
console.log(result); // "hello, worlds"
await stop();
By calling getIpfsUri()
, we can determine the platform-specific localhost
URI of our IPFS API. Once finished, we safely close()
the resource to terminate the server.
For further demonstration, please check out the Example App.
- You can install to your project using
npx expo install react-native-gomobile-ipfs
. - Next, you'll need to add the
react-native-gomobile-ipfs
plugin to your Expo config (app.json
,app.config.json
orapp.config.js
):
{
"expo": {
"name": "my-app",
+ "plugins": [
+ [
+ "react-native-gomobile-ipfs",
+ {
+ "bluetoothPermissionText": "$(PRODUCT_NAME) needs access to Bluetooth."
+ }
+ ]
+ ]
}
}
- Once that's done, use
npx expo prebuild
to generate Expo-friendly native binaries. - Finally, run
eas build
to build a new binary, or useyarn ios
oryarn android
to start running.
Note: To run
eas build
, you'll need tonpm install --global expo-cli eas-cli
.
To build from source for Android and iOS, you'll need the following tools installed:
⚠️ Currently the build process is only supported on Apple Silicon.
With these installed, run yarn gomobileup
from the project root to generate the native binaries and link the example application.