PouchDB for React Native
A PouchDB fork for React Native with binary attachments support.
Using PouchDB
Check out a small example.
Install
-
Install dev package:
yarn add -D babel-plugin-module-resolver
-
Install polyfill packages:
yarn add events process base-64 react-native-get-random-values react-native-quick-md5
-
Install pouchdb packages:
yarn add @craftzdog/pouchdb-core-react-native @craftzdog/pouchdb-binary-utils-react-native pouchdb-adapter-http pouchdb-mapreduce pouchdb-replication react-native-pouchdb-md5
Note:
@craftzdog/pouchdb-replication-react-native
is no longer needed. -
Install storage adapter packages:
yarn add pouchdb-adapter-react-native-sqlite react-native-sqlite-2
-
Install CocoaPods:
cd ios && pod install
Configure
-
Make a
shim.js
:import "react-native-get-random-values"; import { decode, encode } from "base-64"; if (typeof process === "undefined") { global.process = require("process"); } else { const bProcess = require("process"); for (var p in bProcess) { if (!(p in process)) { process[p] = bProcess[p]; } } } if (!global.btoa) { global.btoa = encode; } if (!global.atob) { global.atob = decode; } process.browser = true;
then, require it at the beginning of your
index.js
. -
Edit your
babel.config.js
like so:module.exports = { presets: ['module:metro-react-native-babel-preset'], plugins: [ [ 'module-resolver', { alias: { 'pouchdb-md5': 'react-native-pouchdb-md5', 'pouchdb-binary-utils': '@craftzdog/pouchdb-binary-utils-react-native', }, }, ], ], };
See also
- craftzdog/react-native-pouchdb-md5: PouchDB utilities for calculating MD5 checksums for React Native
- craftzdog/pouchdb-adapter-react-native-sqlite: PouchDB adapter using ReactNative SQLite as its backing store
Contributing
We're always looking for new contributors! If you'd like to try your hand at writing code, writing documentation, designing the website, writing a blog post, or answering questions on StackOverflow, then we'd love to have your input.
If you have a pull request that you'd like to submit, please read the contributing guide for info on style, commit message format, and other (slightly!) nitpicky things like that. PouchDB is heavily tested, so you'll also want to check out the testing guide.