SQLCipher plugin for React Native with Android 15+ 16KB page size support for Google Play Store compliance
npm install react-native-sqlcipher-16kbš“ Forked from linchCN/react-native-sqlcipher
SQLCipher plugin for React Native with Android 15+ 16KB page size support for Google Play Store compliance.



This is an enhanced version of the original react-native-sqlcipher with critical updates for Android 15+ compatibility:
- šÆ 16KB Page Size Support - Ready for Google Play Store requirements starting November 2025
- š§ SQLCipher 4.9.0 - Latest version with 16KB capabilities
- āļø Android Gradle Plugin 8.5.1+ - Required for 16KB ELF alignment
- š± AndroidX SQLite 2.4.0 - Updated dependencies for Android 15+
- š Enhanced Stability - Fixed database persistence issues across app restarts
- š”ļø Production Ready - Extensively tested and battle-hardened
> Starting November 1st, 2025, Google Play Store requires all apps targeting Android 15+ to support 16KB page sizes. This fork ensures your SQLCipher databases are compliant.
Why This Matters:
- Apps failing 16KB compatibility will be rejected from Google Play Store
- Affects all apps targeting Android 15+ (API level 35+)
- Required for new app submissions and updates
- Critical for maintaining Play Store distribution
bash
npm install react-native-sqlcipher-16kb --save
`$3
`bash
Install from this fork
npm install git+https://github.com/mn-codes/react-native-sqlcipher.gitInstall specific version
npm install git+https://github.com/mn-codes/react-native-sqlcipher.git#v1.0.0
`$3
For iOS:
`bash
cd ios && pod install
`For Android: Auto-linking handles it automatically!
š± Platform Requirements
| Platform | Requirement |
|----------|-------------|
| React Native | >= 0.60.0 |
| Android | API Level 21+ (Android 5.0+) |
| iOS | iOS 10.0+ |
| Android Gradle Plugin | >= 8.5.1 (for 16KB support) |
| Node.js | >= 12.0.0 |
š§ Android 15+ Configuration
$3
android/build.gradle:
`gradle
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:8.5.1' // Required for 16KB
}
}
`android/app/build.gradle:
`gradle
android {
compileSdkVersion 34 // Android 14+ required
defaultConfig {
minSdkVersion 21
targetSdkVersion 34
}
// Enable 16KB page size support
packagingOptions {
jniLibs {
useLegacyPackaging = false
}
}
}dependencies {
implementation 'net.zetetic:sqlcipher-android:4.9.0'
implementation 'androidx.sqlite:sqlite:2.4.0'
}
`gradle-wrapper.properties:
`properties
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-all.zip
`š» Usage
$3
`javascript
import SQLite from 'react-native-sqlcipher-16kb';const db = SQLite.openDatabase(
{
name: 'MyDatabase.db',
key: 'your-secure-encryption-key',
location: 'default',
pageSize: 16384, // 16KB page size for Android 15+ compliance
},
() => console.log('ā
Database opened successfully'),
(error) => console.error('ā Database error:', error)
);
`$3
`javascript
// Before (original package)
import SQLite from 'react-native-sqlcipher';// After (this fork)
import SQLite from 'react-native-sqlcipher-16kb';
// Same API! Just add pageSize for 16KB support
const config = {
name: 'database.db',
key: 'encryption-key',
pageSize: 16384, // NEW: 16KB page size
location: 'default',
};
`$3
`javascript
// Create table
db.transaction((tx) => {
tx.executeSql(
'CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, email TEXT)',
[],
() => console.log('Table created'),
(error) => console.error('Error:', error)
);
});// Insert data
db.transaction((tx) => {
tx.executeSql(
'INSERT INTO users (name, email) VALUES (?, ?)',
['John Doe', 'john@example.com'],
() => console.log('User added'),
(error) => console.error('Insert error:', error)
);
});
// Query data
db.transaction((tx) => {
tx.executeSql(
'SELECT * FROM users',
[],
(tx, results) => {
for (let i = 0; i < results.rows.length; i++) {
console.log('User:', results.rows.item(i));
}
}
);
});
`š Verify 16KB Support
Test your database configuration:
`javascript
db.transaction((tx) => {
tx.executeSql(
'PRAGMA cipher_page_size',
[],
(tx, results) => {
if (results.rows.length > 0) {
const pageSize = results.rows.item(0).cipher_page_size;
console.log(š Page size: ${pageSize} bytes);
// Should show 16384 for 16KB pages
}
}
);
});
`š Comparison with Original
| Feature | Original | This Fork |
|---------|----------|-----------|
| SQLCipher Version | 4.5.2 | 4.9.0 ā
|
| 16KB Page Size | ā No | ā
Yes |
| Android Gradle Plugin | 3.1.4 | 8.5.1+ ā
|
| Android 15+ Ready | ā No | ā
Yes |
| Database Persistence | Issues | ā
Fixed |
| Google Play Compliance | ā No | ā
Ready |
| API Compatibility | ā
| ā
Same |
š Troubleshooting
$3
`bash
Clean and rebuild
cd android && ./gradlew clean
cd .. && npx react-native run-androidClear React Native cache
npx react-native start --reset-cache
`$3
- Data not persisting: Ensure consistent encryption key across sessions
- Build errors: Update to Android Gradle Plugin 8.5.1+
- Import errors: Clear node_modules and reinstallš Migration Guide
$3
1. Uninstall original: npm uninstall react-native-sqlcipher
2. Install this fork: npm install react-native-sqlcipher-16kb
3. Update imports in your code
4. Add pageSize: 16384 to database configuration
5. Update Android build files (see configuration above)
6. Test thoroughly$3
- ā
Same API as original package
- ā
Existing database files work fine
- ā
No breaking changes to your code
- ā
Just enhanced with 16KB supportš Documentation
- š API Reference: Same as original package
- š§ 16KB Configuration: See Android setup section above
- š Issues: Report here
- š¬ Discussions: Ask questions
š¤ Contributing
Contributions are welcome! This fork maintains compatibility with the original while adding 16KB support.
1. Fork this repository
2. Create your feature branch (
git checkout -b feature/amazing-feature)
3. Commit your changes (git commit -m 'Add amazing feature')
4. Push to the branch (git push origin feature/amazing-feature`)This fork builds upon excellent work by:
- linchCN/react-native-sqlcipher - Original React Native SQLCipher integration
- andpor/react-native-sqlite-storage - Foundation SQLite package
- SQLCipher by Zetetic - The underlying encryption technology
MIT License - Same as original package. See LICENSE file for details.
- [x] v1.0.0: Android 15+ compatibility with 16KB support
- [ ] v1.1.0: Enhanced 16KB page size implementation
- [ ] v1.2.0: Performance optimizations for large databases
- [ ] v2.0.0: iOS 16KB support (if needed by Apple)
---
š Ready for Google Play Store compliance and Android 15+ compatibility!
Made with ā¤ļø for the React Native community