For platform-specific patterns and gotchas, see:
- src/CLAUDE.md — TypeScript core patterns
- ios/CLAUDE.md — iOS native implementation
- android/CLAUDE.md — Android native implementation
Always use pnpm (not npm) and pnpm dlx (not npx).
Build the plugin:
pnpm build— Full production build with linting
Linting:
pnpm lint— Run all linters (TypeScript + Swift)pnpm lint.ts— Run TypeScript linters only (use after editing TypeScript)pnpm lint.swift— Run Swift linter only (use after editing Swift)
Platform Verification:
pnpm verify— Verify both iOS and Android buildspnpm verify.ios— Verify iOS build onlypnpm verify.android— Verify Android build only
Plugin Platform Development:
pnpm open.ios— Open iOS project in Xcodepnpm open.android— Open Android project in Android Studio
Release:
pnpm release— Create release (version bump, tag, update iOS and Android versions, changelog). Never manually update version numbers.
Demo Apps:
demo-pods/— CocoaPods variant (primary)demo-spm/— SPM variantdemo-shared/— Shared demo code
Demo scripts are prefixed with demo. (e.g., pnpm demo.dev, pnpm demo.ios).
- Use Serena's semantic tools for code exploration and symbol lookups:
jet_brains_find_symbol- Find symbol definitionsjet_brains_find_referencing_symbols- Find referencesjet_brains_get_symbols_overview- Get symbol overviews
- Do not use TypeScript LSP for symbol lookups
This is a Capacitor plugin providing biometric authentication across web (simulated), iOS, and Android.
Error codes must match exactly across all three platforms (TypeScript, Swift, Java). The canonical list is in src/definitions.ts (BiometryErrorType enum). When adding or modifying error codes, update all three platforms.
- No unit tests — This project relies on platform verification (
pnpm verify) and real device testing via the demo apps - Web simulation:
setBiometryType(),setBiometryIsEnrolled(),setDeviceIsSecure()for testing without hardware