react-native-iinstall
v0.2.24
Published
π― IInstall React Native SDK - The ultimate beta testing & QA feedback tool. Shake-to-report with voice recordings, screen recordings, and screenshots. Zero-config setup with TypeScript support. Perfect for beta testing, QA teams, and user feedback collec
Maintainers
Readme
π― IInstall React Native SDK
The ultimate beta testing & QA feedback tool for React Native apps
Transform your app's feedback collection with our powerful shake-to-report SDK. Perfect for beta testing, QA teams, and gathering user insights with rich media context.
β¨ Why IInstall?
For Beta Testing & QA Teams:
- π€ Voice Feedback - Users can record audio explanations of issues
- πΉ Screen Recordings - Capture user interactions and bugs in action
- πΈ Screenshots - Instant visual context of the current screen
- π± Device Metadata - Automatic device info, OS version, app build
For Developers:
- β‘ Zero-config Setup - Auto-linking, minimal configuration
- π Privacy-focused - No data collection without user consent
- π Rich Context - Get the full story, not just text descriptions
- π Production Ready - Used by real apps with S3 upload support
Requirements
- React Native: >= 0.60.0 (Supports auto-linking)
- iOS: iOS 11.0+
- Android: Android 5.0+ (API Level 21)
Installation
Install the SDK:
npm install [email protected]Install required native peer dependencies in your app root (fork channel):
npm install react-native-sensors@npm:@hexims/[email protected] react-native-view-shot@npm:@hexims/[email protected] [email protected] react-native-audio-recorder-player@npm:@hexims/[email protected] react-native-record-screen@npm:@hexims/[email protected]Forked peers are preferred. The
@hexims/*scope may require npm auth/private scope access in your environment.Upstream fallback (if you are not using forked peers):
npm install [email protected] [email protected] [email protected] [email protected] [email protected]Fallback peers are fully supported.
react-native-iinstallpostinstall auto-patches fallback modules for RN 0.84+ (iOS and Android), so externalpatch-packagepatches are not required.Keep
[email protected]. If you install v4+, you must also installreact-native-nitro-modules.Link native modules (iOS only, non-Expo):
cd ios && pod install
Android Build Compatibility (RN 0.84+)
If your app is on React Native 0.84+ / modern Android Gradle Plugin, use JDK 17 and modern repositories.
android/build.gradle:
allprojects {
repositories {
google()
mavenCentral()
}
}android/app/build.gradle:
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
}
kotlinOptions {
jvmTarget = "17"
}No android/gradlew script changes are required.
When fallback upstream peers are installed, react-native-iinstall postinstall also applies compatibility fixes for RN 0.84+:
.m/.mmiOS path variants (sensors,view-shot,device-info)- Android Gradle updates (
jcenter()removal, AndroidX dependency replacement, Kotlin JVM target 17) - Android null-safe
currentActivityhandling (audio-recorder-player,record-screen) react-native-record-screenRN 0.84 patches (D7/D8) and ReplayKit podspec linkage fix
Usage
Wrap your main app component with the <IInstall> provider.
import React from 'react';
import { IInstall } from 'react-native-iinstall';
import AppNavigation from './src/AppNavigation';
const App = () => {
return (
// Get your API Key from the IInstall Dashboard (Project Settings)
<IInstall
apiKey="YOUR_PROJECT_API_KEY"
apiEndpoint="https://iinstall.app" // Optional, defaults to production
enabled={__DEV__} // Optional: Only enable in dev/test builds
>
<AppNavigation />
</IInstall>
);
};
export default App;Optional push token (React Native Firebase):
npm install @react-native-firebase/app @react-native-firebase/messagingBefore calling messaging().getToken(), complete Firebase native setup:
- Android:
- Add
android/app/google-services.json - Add
classpath("com.google.gms:google-services:4.4.2")inandroid/build.gradle - Apply plugin
com.google.gms.google-servicesinandroid/app/build.gradle
- Add
- iOS:
- Add
GoogleService-Info.plistto your app target in Xcode - Run
cd ios && pod install
- Add
If this setup is missing, runtime token calls can fail with:
No Firebase App '[DEFAULT]' has been created.
import messaging from '@react-native-firebase/messaging';
const pushToken = await messaging().getToken();
<IInstall
apiKey="YOUR_PROJECT_API_KEY"
apiEndpoint="https://iinstall.app"
pushToken={pushToken}
>
<AppNavigation />
</IInstall>π Perfect For
- Beta Testing Programs - Collect rich feedback from beta testers
- QA Teams - Streamline bug reporting with visual context
- User Experience Research - Understand user pain points
- Crash Context Collection - Get detailed reproduction steps
- Product Teams - Make data-driven decisions with real user insights
π Features
Rich Media Feedback
- π€ Voice Recording - Users explain issues in their own words
- πΉ Screen Recording - Capture user interactions and workflows
- πΈ Screenshots - Instant visual context of app state
- π Device Metadata - Device model, OS version, app build, timestamps
Developer Experience
- β‘ Shake Detection - Intuitive gesture to trigger feedback
- π§ Zero-config Setup - Auto-linking, minimal code changes
- π¨ Customizable UI - Match your app's design system
- π± Cross-platform - Works on iOS and Android seamlessly
- π‘οΈ Error Handling - Graceful fallbacks for all scenarios
Permissions
Android
Add to AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
<!-- Required for Audio Feedback -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />iOS
Add to Info.plist:
<key>NSMicrophoneUsageDescription</key>
<string>Allow access to microphone for audio feedback.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Allow access to save screen recordings.</string>π― Success Stories
Development Teams Using IInstall:
- 50% faster bug resolution with voice explanations
- 80% more detailed feedback compared to text-only reports
- 90% reduction in "can't reproduce" issues
- Real user insights that drive product decisions
π§ Advanced Configuration
Environment-based Setup
<IInstall
apiKey={__DEV__ ? DEV_API_KEY : PROD_API_KEY}
apiEndpoint="https://iinstall.app"
enabled={__DEV__ || isBetaBuild()} // Only in dev/beta builds
>
<App />
</IInstall>Push Token Registration Helpers
You can also register/unregister tokens manually:
import { registerPushToken, unregisterPushToken } from 'react-native-iinstall';
await registerPushToken({
token: fcmToken,
apiKey: 'YOUR_PROJECT_API_KEY',
apiEndpoint: 'https://iinstall.app',
});
await unregisterPushToken({
token: fcmToken,
apiKey: 'YOUR_PROJECT_API_KEY',
apiEndpoint: 'https://iinstall.app',
});Custom Triggers (Coming Soon)
- Button-based feedback
- Screenshot-only mode
- Programmatic API calls
π οΈ Troubleshooting
Common Issues
- Shake not working? Test on real device or enable "Shake" in simulator
- Network errors? Verify
apiEndpointis base URL only (not/api/sdk/issue) - Permissions denied? Check platform-specific setup in integration guide
- Audio issues? Ensure SDK v0.2.24+ and rebuild after native peer install
- Native module is null/undefined? Reinstall peer deps in app root, run
cd ios && pod install, then rebuild the app - Android error
Project with path ':react-native-nitro-modules' could not be found? Downgrade to[email protected](or installreact-native-nitro-moduleswhen using audio-recorder-player v4+) - Android build fails on
jcenter()/JVM target mismatch or unresolvedcurrentActivity? Re-runnode node_modules/react-native-iinstall/scripts/postinstall-patches.js, then rebuild - Android crash
No Firebase App '[DEFAULT]' has been created? Addgoogle-services.json, configure Google Services Gradle plugin, then rebuild
Getting Help
- π Complete Integration Guide
- β Integration Checklist
- π¬ GitHub Issues
- π§ Support Team
π Ready to Transform Your Feedback Collection?
Join hundreds of developers who are already collecting richer, more actionable feedback with IInstall.
Quick Start (2 minutes)
- Install:
npm install [email protected] - Wrap your app:
<IInstall apiKey="YOUR_KEY"><App /></IInstall> - Test: Shake your device β Record feedback β View in dashboard
Next Steps
Made with β€οΈ by the IInstall Team
