Core Utilities
@trezor/utils
Purpose: General TypeScript utilitiesKey Features:
- TypedEmitter for type-safe events
- Deferred promises
- Throttler for rate limiting
- Lazy initialization helpers
- Array and object utilities
@trezor/crypto-utils
Purpose: Cryptographic utilitiesKey Features:
- Hash functions (SHA256, RIPEMD160)
- PBKDF2 key derivation
- Random number generation
- Base58 encoding/decoding
- Mnemonic utilities
@trezor/device-utils
Purpose: Device-related utilitiesKey Features:
- Device detection and identification
- Firmware version comparison
- Device capability checks
- USB descriptor parsing
- Device model utilities
@trezor/asset-utils
Purpose: Asset and currency utilitiesKey Features:
- Asset data management
- Token list handling
- Currency formatting
- Icon and metadata access
Environment & Platform
@trezor/env-utils
Purpose: Environment detectionKey Features:
- Browser detection
- Node.js environment checks
- Platform capabilities
- Feature detection
@trezor/dom-utils
Purpose: DOM manipulation utilitiesKey Features:
- Safe DOM operations
- Element queries
- Event handling
- Browser compatibility helpers
@trezor/node-utils
Purpose: Node.js-specific utilitiesKey Features:
- File system helpers
- Process utilities
- Path manipulation
- Environment variable handling
@trezor/react-utils
Purpose: React-specific utilitiesKey Features:
- Custom hooks
- Component helpers
- Context utilities
- Performance optimization helpers
Data & Validation
@trezor/schema-utils
Purpose: Schema validation utilitiesKey Features:
- JSON schema validation
- Type guards
- Data validation helpers
- Schema generators
@trezor/type-utils
Purpose: TypeScript type utilitiesKey Features:
- Advanced type helpers
- Type guards
- Conditional types
- Utility types
@trezor/urls
Purpose: URL managementKey Features:
- URL constants
- Backend endpoints
- Service URLs
- Link generators
Testing Utilities
@trezor/e2e-utils
Purpose: End-to-end testing utilitiesKey Features:
- Test helpers
- Mock data generators
- Playwright utilities
- Device emulator integration
Package Deep Dive
@trezor/utils
The main utility package providing core functionality used throughout the codebase.TypedEmitter
TypedEmitter
Type-safe event emitter extending Node.js EventEmitter:
Deferred Promises
Deferred Promises
Create promises that can be resolved/rejected externally:Also includes a deferred manager for handling multiple promises:
Throttler
Throttler
Rate-limit function execution:
Lazy Initialization
Lazy Initialization
Defer resource initialization until first use:
Array & Object Utilities
Array & Object Utilities
Common data manipulation helpers:
@trezor/crypto-utils
Cryptographic operations needed across Suite.Hash Functions
Hash Functions
Key Derivation
Key Derivation
Base58 Encoding
Base58 Encoding
Random Number Generation
Random Number Generation
@trezor/device-utils
Device detection and capability checking.Device Detection
Device Detection
Firmware Version Comparison
Firmware Version Comparison
Capability Checks
Capability Checks
@trezor/env-utils
Environment and platform detection.@trezor/schema-utils
Data validation and schema management.@trezor/type-utils
Advanced TypeScript type utilities.Common Patterns
Using Multiple Utilities Together
Best Practices
Import Only What You Need
Import Only What You Need
Use named imports to enable tree-shaking:
Prefer Utils Over Reimplementation
Prefer Utils Over Reimplementation
Check utility packages before implementing common functionality:
Keep Utils Focused
Keep Utils Focused
When creating new utility functions:
- Keep them small and focused
- Make them pure functions when possible
- Add comprehensive tests
- Document with JSDoc comments
Use Type-Safe Alternatives
Use Type-Safe Alternatives
Leverage TypeScript features in utils:
Adding New Utilities
When adding utilities to an existing package:Choose the Right Package
Place utilities in the most specific appropriate package:
- General utils →
@trezor/utils - Crypto-specific →
@trezor/crypto-utils - React-specific →
@trezor/react-utils
Related Documentation
Package Overview
Browse all packages in the monorepo
Creating Packages
Learn how to create new utility packages
TypeScript Guide
TypeScript conventions and patterns
Testing
How to test your utilities