A blazing fast, native Base64 implementation for React Native using C++ and JSI.
This library is ~30x faster than base64-js. Try the benchmarks in the example app.
- ⚡ Native C++/JSI implementation for maximum performance
- 🧠 Automatically installs its JSI bindings at runtime
- 🧩 Drop-in replacement for
base64-jswith matching API - 🔒 No additional native setup or linking required
npm install react-native-quick-base64This module installs its native bindings automatically. Simply importing the library is enough to activate the native backend. Add it to your root entry point file or your first _layout.tsx.
import 'react-native-quick-base64' // triggers native JSI install to global namespaceYou can also import individual helpers:
import { fromByteArray, toByteArray } from 'react-native-quick-base64'import { fromByteArray, toByteArray } from 'react-native-quick-base64'
const base64 = fromByteArray(new TextEncoder().encode('foo'))
const decoded = new TextDecoder().decode(toByteArray(base64))Compatible with base64-js.
Returns the length of the byte array that corresponds to the base64 string.
Converts a base64 string into a Uint8Array.
If removeLinebreaks is true, all \n characters are removed first.
Converts a byte array into a base64 string.
If urlSafe is true, the output uses a URL-safe base64 charset.
Removes trailing = or . padding from base64 or base64url-encoded strings.
Note
Breaking change (#53):
The btoa, atob, and shim() polyfills have been removed.
Recent versions of Hermes provide btoa and atob natively in the JS runtime, so the polyfills are no longer needed.
If you need string ⇄ base64 conversion, use TextEncoder / TextDecoder together with fromByteArray / toByteArray (see Usage below).
See the contributing guide to learn how to contribute to the repository and the development workflow.
MIT © Takuya Matsuyama
