Providers
<JazzReactNativeProvider /> is the core component that connects your React Native application to Jazz. It handles:
- Data Synchronization: Manages connections to peers and the Jazz cloud
- Local Storage: Persists data locally between app sessions
- Schema Types: Provides APIs for the AccountSchema
- Authentication: Connects your authentication system to Jazz
Setting up the Provider
The provider accepts several configuration options:
Sign up for a free API key at dashboard.jazz.tools for higher limits or production use, or use your email address as a temporary key to get started quickly.
Provider Options
Sync Options
The sync property configures how your application connects to the Jazz network:
import { type SyncConfig } from "jazz-tools"; export const syncConfig: SyncConfig = { // Connection to Jazz Cloud or your own sync server peer: `wss://cloud.jazz.tools/?key=${apiKey}`, // When to sync: "always" (default), "never", or "signedUp" when: "always", };
See Authentication States for more details on how the when property affects synchronization based on authentication state.
Account Schema
The AccountSchema property defines your application's account structure:
Additional Options
The provider accepts these additional options:
kvStoreMMKVStoreAdapter(default)
AccountSchemaAccount(default)
Authentication
The Provider works with various authentication methods, with PassphraseAuth being the easiest way to get started for development and testing. For authentication details, refer to our Authentication Overview guide.
The authentication hooks must always be used inside the Provider component.
Implementing PassphraseAuth is straightforward:
- Import the wordlist for generating recovery phrases
- Use the
usePassphraseAuthhook to handle authentication - Create simple registration and sign-in screens
Local Persistence
Jazz for React Native includes built-in local persistence using SQLite. This implementation uses:
- Database Storage:
@op-engineering/op-sqlite- A high-performance SQLite implementation - Key-Value Storage:
react-native-mmkv- A fast key-value storage system
Local persistence is enabled by default with no additional configuration required. Your data will automatically persist across app restarts.
RNCrypto
For accelerated crypto operations, you can use the RNCrypto crypto provider. It is the most performant crypto provider available for React Native.
To use it, install the following package:
pnpm add cojson-core-rn
You must keep the versions of cojson-core-rn and jazz-tools the same.
"dependencies": { "cojson-core-rn": "x.x.x", # same version as jazz-tools "jazz-tools": "x.x.x" # same version as cojson-core-rn }
While you can distribute your own JS code changes OTA, if you update your Jazz version, this will result in changes in the native dependencies, which cannot be distributed over the air and requires a new store submission.
Need Help?
If you have questions about configuring the Jazz Provider for your specific use case, join our Discord community for help.