{"id":28527627,"url":"https://github.com/keep-starknet-strange/starknet-react-native-sdk","last_synced_at":"2026-05-04T23:34:57.708Z","repository":{"id":297034164,"uuid":"995416804","full_name":"keep-starknet-strange/starknet-react-native-sdk","owner":"keep-starknet-strange","description":"Starknet React Native SDK","archived":false,"fork":false,"pushed_at":"2025-06-13T11:42:48.000Z","size":3895,"stargazers_count":1,"open_issues_count":16,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-13T12:34:14.170Z","etag":null,"topics":["android","consumer-apps","ios","react-native","react-native-sdk","starknet"],"latest_commit_sha":null,"homepage":"https://keep-starknet-strange.github.io/starknet-react-native-sdk/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/keep-starknet-strange.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-03T12:57:34.000Z","updated_at":"2025-06-13T11:42:51.000Z","dependencies_parsed_at":"2025-06-04T00:03:32.042Z","dependency_job_id":"1030596d-5e41-440e-af0a-98fe4ebb6e49","html_url":"https://github.com/keep-starknet-strange/starknet-react-native-sdk","commit_stats":null,"previous_names":["keep-starknet-strange/starknet-react-native-sdk"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/keep-starknet-strange/starknet-react-native-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keep-starknet-strange%2Fstarknet-react-native-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keep-starknet-strange%2Fstarknet-react-native-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keep-starknet-strange%2Fstarknet-react-native-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keep-starknet-strange%2Fstarknet-react-native-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keep-starknet-strange","download_url":"https://codeload.github.com/keep-starknet-strange/starknet-react-native-sdk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keep-starknet-strange%2Fstarknet-react-native-sdk/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260453742,"owners_count":23011575,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","consumer-apps","ios","react-native","react-native-sdk","starknet"],"created_at":"2025-06-09T12:14:27.294Z","updated_at":"2026-05-04T23:34:57.677Z","avatar_url":"https://github.com/keep-starknet-strange.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Starknet React Native SDK\n\nA comprehensive React Native SDK for Starknet that enables developers to build consumer-grade mobile dApps with account abstraction, biometric authentication, and seamless wallet integration.\n\n## Features\n\n✅ **Multi-Platform Support** - Works on both iOS and Android via React Native  \n✅ **External Wallet Integration** - Support for Argent X, Braavos, and more via WalletConnect v2  \n🚧 **Embeddable In-App Wallet** - Built-in wallet with biometric security (Phase 2)  \n🚧 **Account Abstraction** - Leverages Starknet's native account abstraction features  \n🚧 **Paymaster Support** - Gasless transactions via AVNU and Cartridge paymasters  \n🚧 **Biometric Authentication** - FaceID/TouchID integration for transaction signing  \n✅ **TypeScript First** - Fully typed with comprehensive TypeScript support  \n✅ **Developer Friendly** - React hooks and intuitive APIs  \n\n## Installation\n\n### Prerequisites\n\n- **Node.js**: Version 18.x - 22.x (Required for Docusaurus compatibility)\n  - ⚠️ **Note**: Node.js v23+ is not currently supported due to Docusaurus compatibility issues\n  - Use [nvm](https://github.com/nvm-sh/nvm) to manage Node versions: `nvm use` (reads from `.nvmrc`)\n- **Yarn**: v3.6.1+ (automatically managed via Corepack)\n\n### Install the SDK\n\n```bash\nnpm install @starknet/react-native-sdk\n# or\nyarn add @starknet/react-native-sdk\n```\n\n### Dependencies\n\n```bash\nnpm install starknet @walletconnect/react-native-v2 react-native-keychain react-native-biometrics\n```\n\n## Quick Start\n\n### 1. Basic Setup\n\n```typescript\nimport {\n  createProvider,\n  getDefaultConnectors,\n  StarknetNetwork\n} from '@starknet/react-native-sdk'\n\n// Create a provider\nconst provider = createProvider({\n  networkId: StarknetNetwork.TESTNET,\n  chainId: '0x534e5f5345504f4c4941'\n})\n\n// Get available wallet connectors\nconst connectors = getDefaultConnectors()\n```\n\n### 2. Connect to External Wallets\n\n```typescript\nimport {ArgentXConnector, BraavosConnector} from '@starknet/react-native-sdk'\n\nconst argentConnector = new ArgentXConnector()\nconst braavosConnector = new BraavosConnector()\n\n// Connect to Argent X\nif (argentConnector.available) {\n  const wallet = await argentConnector.connect()\n  console.log('Connected accounts:', wallet.accounts)\n}\n```\n\n### 3. Error Handling\n\n```typescript\nimport {SdkError, isStarknetSdkError} from '@starknet/react-native-sdk'\n\ntry {\n  await connector.connect()\n} catch (error) {\n  if (isStarknetSdkError(error)) {\n    console.log('SDK Error:', error.code, error.message)\n  }\n}\n```\n\n### 4. Address Validation and Formatting\n\n```typescript\nimport {\n  isValidStarknetAddress,\n  normalizeAddress,\n  formatAddress\n} from '@starknet/react-native-sdk'\n\nconst address = '0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7'\n\nif (isValidStarknetAddress(address)) {\n  const normalized = normalizeAddress(address)\n  const formatted = formatAddress(address) // 0x049d36...e004dc7\n}\n```\n\n## Architecture\n\nThe SDK is organized into modular components:\n\n```\nsrc/\n├── types/           # TypeScript type definitions\n├── core/           # Core Starknet provider and network logic\n├── wallets/        # Wallet connectors (external and embedded)\n├── utils/          # Utilities (errors, storage, validation)\n├── hooks/          # React hooks and context providers\n├── ui/             # UI components for embedded wallet\n└── components/     # Reusable React components\n```\n\n## Network Configuration\n\n```typescript\nimport {StarknetNetwork, getDefaultConfig} from '@starknet/react-native-sdk'\n\n// Use default network configuration\nconst config = getDefaultConfig(StarknetNetwork.MAINNET)\n\n// Or create custom configuration\nconst customConfig = {\n  networkId: StarknetNetwork.TESTNET,\n  rpcUrl: 'https://custom-rpc-endpoint.com',\n  chainId: '0x534e5f5345504f4c4941',\n  explorerUrl: 'https://custom-explorer.com'\n}\n```\n\n## Supported Wallets\n\n### External Wallets\n- **Argent X** - Mobile wallet with WalletConnect v2 support\n- **Braavos** - Mobile wallet with WalletConnect v2 support\n\n### In-App Wallet (Coming in Phase 2)\n- Biometric authentication (FaceID/TouchID)\n- Secure key storage (iOS Keychain / Android Keystore)\n- Account abstraction features\n- Session key support\n\n## Development Status\n\n🟢 **CI Pipeline**: All workflows passing  \n🟢 **Build \u0026 Test**: Working correctly  \n🟢 **Documentation**: ✅ Deployed via CI (⚠️ Local build requires Node 18-22)  \n🟡 **Release**: Temporarily disabled due to dependency conflicts  \n\n### Known Issues \u0026 Solutions\n\n#### 📖 Documentation Build (Local Development)\n- **Issue**: Docusaurus 3.x doesn't support Node.js v23+ \n- **Error**: `chalk_1.default.yellow is not a function`\n- **Solution**: Use Node.js 18-22 for local development\n  ```bash\n  # Install and use Node 20 (recommended)\n  nvm install 20\n  nvm use 20\n  \n  # Then build documentation\n  cd docs \u0026\u0026 yarn build\n  ```\n- **CI Status**: ✅ Working (uses Node.js 20.x automatically)\n\n#### 🔧 Other Known Issues\n- **Release Tools**: CLI dependency conflicts with Yarn PnP resolution\n- **Security**: GitHub reports 5 vulnerabilities (production dependencies are clean)\n\n---\n\n## Testing\n\n```bash\n# Run tests\nyarn test\n\n# Run tests with coverage\nyarn test:coverage\n\n# Type checking\nyarn typecheck\n\n# Linting\nyarn lint\n```\n\n## Security\n\nThe SDK includes comprehensive security auditing using Yarn v3's audit commands:\n\n```bash\n# Check production dependencies across all workspaces for vulnerabilities\nyarn audit:prod\n\n# Check all dependencies (including dev dependencies) across all workspaces  \nyarn audit:all\n\n# Comprehensive audit with moderate+ severity threshold\nyarn audit:comprehensive\n\n# Get detailed JSON output for programmatic use\nyarn audit:json\n\n# Run comprehensive security check (production + all dependencies)\nyarn security:check\n```\n\n### CI Security Checks\n\nThe CI pipeline includes multiple security layers:\n- **Security Audit**: Yarn v3 vulnerability scanning across all workspaces for production, dev, and transitive dependencies\n- **CodeQL Analysis**: Static code analysis for security vulnerabilities  \n- **Dependency Review**: GitHub's dependency scanning for pull requests\n- **License Compliance**: Automated license verification\n- **Secrets Scanning**: Trivy vulnerability scanner for exposed secrets\n\nCritical vulnerabilities in production dependencies will fail the CI build.\n\n### Workspace Coverage\nThe audit commands use `--all` flag to scan dependencies across all workspaces:\n- Main SDK package (`@starknet/react-native-sdk`)\n- Documentation site (`docs/`)  \n- Example application (`example/`)\n\nThis ensures comprehensive coverage of the entire project's dependency tree.\n\n## API Reference\n\n### Core Types\n\n```typescript\ninterface StarknetConfig {\n  networkId: StarknetNetwork\n  rpcUrl?: string\n  chainId: string\n  explorerUrl?: string\n}\n\ninterface WalletConnector {\n  id: string\n  name: string\n  available: boolean\n  connect(): Promise\u003cConnectedWallet\u003e\n  disconnect(): Promise\u003cvoid\u003e\n  signMessage(message: string, account: string): Promise\u003cstring\u003e\n  signTransaction(calls: Call[], details?: InvocationsDetails): Promise\u003cstring[]\u003e\n}\n```\n\n### Error Codes\n\n```typescript\nenum ErrorCode {\n  WALLET_NOT_FOUND = 'WALLET_NOT_FOUND',\n  CONNECTION_FAILED = 'CONNECTION_FAILED',\n  CONNECTION_REJECTED = 'CONNECTION_REJECTED',\n  BIOMETRIC_NOT_AVAILABLE = 'BIOMETRIC_NOT_AVAILABLE',\n  TRANSACTION_FAILED = 'TRANSACTION_FAILED',\n  // ... more error codes\n}\n```\n\n## Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\n\n### Development Setup\n\n#### Node.js Version Management\n\nThis project requires Node.js 18.x - 22.x for optimal compatibility:\n\n```bash\n# Install Node Version Manager (nvm) if you haven't already\ncurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash\n\n# Use the project's specified Node version\nnvm use  # reads from .nvmrc\n\n# Or install and use Node 20 specifically\nnvm install 20\nnvm use 20\n```\n\n#### Local Development\n\n1. Clone the repository\n2. Ensure you're using Node.js 18-22: `nvm use`\n3. Install dependencies: `yarn install`\n4. Build the SDK: `yarn build`\n5. Run tests: `yarn test`\n\n#### Documentation Development\n\n```bash\n# Start development server (requires Node.js 18-22)\nyarn docs:dev\n\n# Build documentation site\nyarn docs:build\n\n# Generate API documentation\nyarn docs:generate\n```\n\n#### Running the Example App\n\n```bash\n# iOS\nyarn dev:ios\n\n# Android  \nyarn dev:android\n```\n\n## Roadmap\n\nSee our [Product Requirements Document](PRD.md) for detailed feature roadmap and implementation plans.\n\n## License\n\nMIT License - see the [LICENSE](LICENSE) file for details.\n\n## Support\n\n- 📖 [Documentation](https://docs.starknet.io/react-native-sdk)\n- 💬 [Discord Community](https://discord.gg/starknet)\n- 🐛 [Issue Tracker](https://github.com/keep-starknet-strange/starknet-react-native-sdk/issues)\n- 📧 [Email Support](mailto:support@starknet.io)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeep-starknet-strange%2Fstarknet-react-native-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeep-starknet-strange%2Fstarknet-react-native-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeep-starknet-strange%2Fstarknet-react-native-sdk/lists"}