SDKs
Official SDKs
LicenseSeat provides official SDKs for popular platforms to make integration fast and secure.
Available SDKs
| Platform | Package | Features |
|---|---|---|
| Swift | licenseseat-swift |
macOS, iOS, tvOS, watchOS, Linux |
| JavaScript/TypeScript | @licenseseat/js |
Browsers, Node.js 18+, Full TS support |
| C# | LicenseSeat |
Unity, Godot, Windows desktop, .NET 6+ |
| C++ | licenseseat |
Unreal Engine, VST/AU plugins, Native apps |
Feature Parity
All SDKs share the same core functionality:
- License Operations: Activation, deactivation, online/offline validation
- Entitlements: Check feature access with expiration support
- Offline Support: Ed25519 signature verification, clock tamper detection
- Resilience: Automatic retries, network monitoring, background re-validation
- Events: Subscribe to license lifecycle events
- Security: Constant-time comparison, secure device fingerprinting
Each SDK also includes platform-native integrations (SwiftUI for Swift, React/Vue examples for JS, Unity/Godot for C#, Unreal/JUCE for C++).
Note: Release management (querying releases, download tokens) is currently only available in the C++ SDK.
Choosing an SDK
Use the Swift SDK if you're building:
- macOS applications
- iOS/iPadOS apps
- tvOS apps
- watchOS apps
- Cross-platform Swift applications (including Linux servers)
Use the JavaScript SDK if you're building:
- Web applications
- Browser extensions
- Electron apps
- Node.js applications (18+)
Use the C# SDK if you're building:
- Unity games
- Godot games (with .NET)
- Windows desktop applications (WPF, WinForms, MAUI)
- Cross-platform .NET applications
- ASP.NET services requiring license validation
Use the C++ SDK if you're building:
- Unreal Engine games
- VST/AU/AAX audio plugins
- Adobe Photoshop/Illustrator plugins
- Native desktop applications
- Performance-critical applications
Core Concepts
All SDKs share common concepts and workflows:
License Lifecycle
┌─────────────┐ ┌────────────┐ ┌────────────┐
│ Inactive │────▶│ Activate │────▶│ Active │
└─────────────┘ └────────────┘ └────────────┘
│
┌────────────┐ │
│ Deactivate │◀───────────┘
└────────────┘
Validation Flow
┌─────────────┐ ┌────────────┐ ┌────────────┐
│ Validate │────▶│ Online? │─Yes─▶│ Server │
└─────────────┘ └────────────┘ │ Validate │
│ └────────────┘
No
│
┌─────▼──────┐
│ Offline │
│ Validation │
└────────────┘
Entitlements
Entitlements are feature flags attached to licenses. Use them to:
- Gate premium features
- Implement tiered pricing
- Control feature access per license
License: "XXXX-YYYY-ZZZZ"
├── Entitlement: "pro-features" (active)
├── Entitlement: "api-access" (active, expires: 2025-12-31)
└── Entitlement: "team-seats" (inactive)
Common Configuration
All SDKs accept similar configuration options:
| Option | Description | Default |
|---|---|---|
apiKey |
Your publishable API key | Required |
productSlug |
Your product identifier | Required |
apiBaseUrl |
API endpoint | https://licenseseat.com/api/v1 |
autoValidateInterval |
Background re-validation interval | 1 hour |
maxRetries |
Retry attempts for failed requests | 3 |
maxOfflineDays |
Offline grace period (0 = disabled) | 0 |
deviceId |
Custom device ID | Auto-generated |
debug |
Enable debug logging | false |
Note: Time units vary by language convention—Swift uses seconds, JavaScript uses milliseconds, C# uses TimeSpan. See each SDK's documentation for specifics.
Security Features
All SDKs implement:
- Ed25519 Signatures: Offline licenses are cryptographically signed
- Clock Tamper Detection: Detects system clock manipulation
- Constant-Time Comparison: Prevents timing attacks on license keys
- Secure Storage: Platform-appropriate secure storage mechanisms