Skip to content

Gautham495/react-native-craby-base64

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

react-native-craby-base64

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 base64 crate.


📦 Installation

npm install react-native-craby-base64

or

yarn add react-native-craby-base64

iOS

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 Uint8Array or ArrayBuffer. decodeToBytes() returns a Base64 representation of the raw bytes; convert to Uint8Array in 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


About

Base64 Decode & Encode in React Native with Rust Powered Craby Modules

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

 
 
 

Contributors