react-native-craby-base64
v1.0.2
Published
Base64 Decode & Encode in React Native with Rust Powered Craby Modules
Readme
[!IMPORTANT]
- This library is under development and not fully ready for production use!
A React Native Craby Module that provides high-performance Base64 encoding and decoding using a Rust backend.
Built with Craby (TurboModule generator for Rust) and optimized for mobile performance on both iOS and Android.
🚀 Why This Library Exists
Most Base64 libraries in React Native and in the JS world:
- Run in JS (slow)
- Allocate unnecessary buffers
- Cannot handle large binary payloads efficiently
- Do not use JSI/TurboModules
- Do not support Rust (fastest safe implementation)
react-native-craby-base64 solves all of this:
- ⚡️ Rust-backed Base64 encode/decode
- 🧠 No bridge overhead (JSI & Craby module)
- 📱 iOS + Android native support
- 🔥 Fast enough for video, images, crypto, and audio pipelines
✨ Features
encodeString(input: string): string Convert any UTF-8 string → Base64.
decodeToString(b64: string): string Decode Base64 → UTF-8 string.
decodeToBytes(b64: string): string Base64 → binary bytes (returned as Base64 due to Craby limitations). Convert to Uint8Array in JS easily.
Zero-copy Rust implementation Using the optimized
base64crate.
📦 Installation
npm install react-native-craby-base64or
yarn add react-native-craby-base64iOS
cd ios && pod install⚙️ Usage
import Base64 from "react-native-craby-base64";
// Encode
const b64 = Base64.encodeString("Hello world!");
console.log("Encoded:", b64);
// Decode to string
const decoded = Base64.decodeToString(b64);
console.log("Decoded string:", decoded);
// Decode raw bytes (Base64 → Uint8Array)
const raw = Base64.decodeToBytes(b64);
const bytes = Uint8Array.from(atob(raw), (c) => c.charCodeAt(0));
console.log("Decoded bytes:", bytes);🧠 API
interface Base64Module {
encodeString(input: string): string;
decodeToString(b64: string): string;
decodeToBytes(b64: string): string;
}Note: Craby does not support returning
Uint8ArrayorArrayBuffer.decodeToBytes()returns a Base64 representation of the raw bytes; convert toUint8Arrayin JS.
Helper for convenience:
function base64ToUint8Array(b64: string) {
const bin = atob(b64);
const arr = new Uint8Array(bin.length);
for (let i = 0; i < bin.length; i++) arr[i] = bin.charCodeAt(i);
return arr;
}📱 Supported Platforms
| Platform | Status | | ---------------------------- | ---------------- | | iOS | ✅ Supported | | Android | ✅ Supported |
🧩 Development
This library was built with:
- Rust
- Craby
🪪 License
MIT © Gautham Vijayan
