npm.io
152.0.0 • Published 2 weeks ago

react-native-skia-android

Licence
MIT
Version
152.0.0
Deps
0
Size
213.9 MB
Vulns
0
Weekly
0
Stars
4

React Native Skia Binaries

This repository generates and publishes prebuilt Skia binary packages for React Native Skia.

Overview

The binaries are downloaded from GitHub releases and bundled directly into npm packages. No postinstall scripts - the binaries are included in the package and ready to use immediately upon installation.

Packages

Ganesh (Standard Metal/OpenGL backend)
Package Platform Description
react-native-skia-android Android All architectures (armeabi-v7a, arm64-v8a, x86, x86_64)
react-native-skia-apple-ios Apple iOS (device + simulator + Mac Catalyst)
react-native-skia-apple-tvos Apple tvOS (device + simulator)
react-native-skia-apple-macos Apple macOS (arm64 + x64)
Graphite (Dawn/WebGPU backend)
Package Platform Description
react-native-skia-graphite-android Android All architectures (armeabi-v7a, arm64-v8a, x86, x86_64)
react-native-skia-graphite-apple-ios Apple iOS (device + simulator)
react-native-skia-graphite-apple-macos Apple macOS (arm64 + x64)
react-native-skia-graphite-headers Common Graphite headers

Usage

# Install a specific platform package
npm install react-native-skia-apple-ios

The binaries are included directly - no download happens at install time.

Configuration

The skia-config.json file contains the current Skia versions and checksums:

{
  "skia": {
    "version": "m144c",
    "checksums": {
      "android-armeabi-v7a": "...",
      "apple-ios-xcframeworks": "...",
      ...
    }
  },
  "skia-graphite": {
    "version": "m142b",
    "checksums": { ... }
  }
}

Publishing New Versions

Via GitHub Actions
  1. Go to Actions > Publish Skia Binary Packages
  2. Click Run workflow
  3. Fill in:
    • Skia version: e.g., m144c
    • NPM version: (optional) derived automatically: m144c144.3.0
    • Graphite: Check for Graphite packages
    • Dry run: Uncheck to actually publish
Local Development
# Install dependencies
npm install

# Generate ALL packages (Ganesh + Graphite) from config file
npx tsx src/generate-packages.ts --config=skia-config.json

# Generate all Ganesh packages (npm version derived: m144c → 144.3.0)
npx tsx src/generate-packages.ts --skia-version=m144c

# Generate a specific package
npx tsx src/generate-packages.ts --skia-version=m144c --package=apple-ios

# Generate Graphite packages
npx tsx src/generate-packages.ts --skia-version=m142b --graphite

# Override npm version if needed
npx tsx src/generate-packages.ts --skia-version=m144c --npm-version=144.3.1

# Verify checksums against skia-config.json
npx tsx src/verify-checksums.ts --config=skia-config.json

# Publish (from generated package directory)
cd dist/react-native-skia-apple-ios
npm publish --access public

Generated Package Structure

dist/
├── react-native-skia-android/
│   ├── package.json
│   ├── README.md
│   └── libs/
│       ├── armeabi-v7a/*.a
│       ├── arm64-v8a/*.a
│       ├── x86/*.a
│       └── x86_64/*.a
├── react-native-skia-apple-ios/
│   ├── package.json
│   ├── README.md
│   └── libs/
│       ├── libskia.xcframework/
│       └── ...
├── react-native-skia-graphite-android/
│   └── ...
└── ...

License

MIT License - see LICENSE for details.