npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@sip-protocol/react-native

v0.1.1

Published

React Native SDK for Shielded Intents Protocol - privacy on iOS/Android

Readme

@sip-protocol/react-native

React Native SDK for Shielded Intents Protocol - privacy on iOS/Android.

Installation

npm install @sip-protocol/react-native @sip-protocol/sdk

# Required peer dependencies
npm install react react-native

# Optional: For secure key storage (recommended for production)
npm install react-native-keychain

# Optional: For clipboard functionality
npm install @react-native-clipboard/clipboard

Features

  • Mobile-optimized hooks for stealth addresses, transfers, and payment scanning
  • Secure key storage via iOS Keychain and Android Keystore
  • Biometric authentication support for key access
  • Native clipboard integration
  • Same API as @sip-protocol/react with mobile-specific enhancements

Quick Start

import {
  useStealthAddress,
  useStealthTransfer,
  useScanPayments,
  SecureStorage,
} from '@sip-protocol/react-native'

function ReceiveScreen() {
  const {
    metaAddress,
    stealthAddress,
    copyToClipboard,
    saveToKeychain,
  } = useStealthAddress('solana', {
    autoSave: true,
    requireBiometrics: true,
  })

  return (
    <View>
      <Text>Share this address:</Text>
      <Text selectable>{metaAddress}</Text>

      <TouchableOpacity onPress={copyToClipboard}>
        <Text>Copy to Clipboard</Text>
      </TouchableOpacity>

      <TouchableOpacity onPress={saveToKeychain}>
        <Text>Save to Keychain</Text>
      </TouchableOpacity>
    </View>
  )
}

Hooks

useStealthAddress

Generate and manage stealth addresses with secure storage.

const {
  metaAddress,        // Encoded meta-address for sharing
  stealthAddress,     // One-time stealth address
  spendingPrivateKey, // For claiming (handle securely!)
  viewingPrivateKey,  // For scanning
  isGenerating,       // Loading state
  error,              // Error if any
  regenerate,         // Generate new stealth address
  copyToClipboard,    // Copy to native clipboard
  saveToKeychain,     // Save keys securely
  loadFromKeychain,   // Load keys from storage
} = useStealthAddress('solana', {
  autoSave: false,         // Auto-save on generation
  requireBiometrics: true, // Require FaceID/TouchID
  walletId: 'main',        // Storage identifier
})

useStealthTransfer

Execute private SPL token transfers.

const {
  transfer,
  status,    // 'idle' | 'preparing' | 'signing' | 'sending' | 'confirming' | 'success' | 'error'
  error,
  isLoading,
  reset,
} = useStealthTransfer({
  connection,
  wallet: walletAdapter,
})

// Send private payment
const result = await transfer({
  recipientMetaAddress: 'sip:solana:...',
  amount: 1000000n, // 1 USDC
  mint: USDC_MINT,
})

if (result.success) {
  Alert.alert('Success', `Sent to ${result.stealthAddress}`)
}

useScanPayments

Scan for incoming private payments.

const {
  payments,   // Array of received payments
  isScanning,
  scan,       // (viewingKey, spendingPubKey) => Promise<void>
  claim,      // (signature, spendingKey, destination) => Promise<string>
  claimAll,   // (spendingKey, destination) => Promise<string[]>
  clear,
} = useScanPayments({
  connection,
  provider: heliusProvider, // Optional, recommended for efficiency
})

// Scan for payments
await scan(viewingPrivateKey, spendingPublicKey)

// Claim a payment
await claim(payment.signature, spendingPrivateKey, myWalletAddress)

Secure Storage

The SecureStorage API provides platform-native secure storage:

  • iOS: Keychain with optional biometric protection
  • Android: Keystore with optional biometric protection
import { SecureStorage } from '@sip-protocol/react-native'

// Store viewing key
await SecureStorage.setViewingKey('wallet-1', viewingKey, {
  requireBiometrics: true,
})

// Retrieve with biometric prompt
const key = await SecureStorage.getViewingKey('wallet-1', {
  requireBiometrics: true,
})

// Check biometrics support
const { available, biometryType } = await SecureStorage.getSupportedBiometrics()
// biometryType: 'FaceID' | 'TouchID' | 'Fingerprint' | 'None'

// Clear all keys on logout
await SecureStorage.clearAll()

Platform Requirements

  • iOS 13.0+
  • Android API 23+
  • React Native 0.71+

Security Considerations

  1. Always use biometrics for spending key access in production
  2. Never log private keys - use SecureStorage for persistence
  3. Clear keys on logout - call SecureStorage.clearAll()
  4. Use auto-lock - keys are protected by device lock state

License

MIT