Overview
Version 2 of Hermis adds major new features while maintaining compatibility with existing code. This release introduces @solana/kit support, enhanced error handling, and standardizes provider interfaces.What’s New
1. @solana/kit Architecture Support
V2 adds full support for @solana/kit alongside @solana/web3.js. Here’s how Hermis simplifies Kit transaction creation:createKitTransaction?
- 70% less boilerplate - No pipe pattern or nested callbacks
- Automatic blockhash fetching - One less async call to manage
- Batch instruction handling - Pass multiple instructions as array
- Dual architecture support - Works with web3.js Connection or Kit Rpc
- Beginner-friendly - Imperative style, easier to understand
- Dual architecture support - use web3.js OR Kit in the same app
- Automatic transaction type detection
- Kit-friendly wallet properties (
transactionSigner,messageSigner,address) - Helper utilities for Kit development
2. Enhanced Error Handling
New@hermis/errors package with structured error codes:
3. New Utility Hooks
Additional hooks for common operations:4. Wallet Standard Compliance
Improved wallet detection with CAIP-2 compliant chain identifiers:- ✅
solana:mainnet - ✅
solana:devnet - ✅
solana:testnet
Breaking Changes (Pre-Release Users Only)
If you were using HermisProvider in early/pre-release versions, the following props were renamed for consistency:signMessage now applies the Solana off-chain message domain separator on local-key paths
When the SDK signs a message with an in-SDK key (Keypair, CryptoKeyPair,
KeyPairSigner), it now prepends the Solana off-chain message header
(0xff + "solana offchain" + version + format + length) before signing.
Without this domain separator, signature bytes are structurally
indistinguishable from a Solana transaction signature, and a caller can be
tricked into producing a valid transaction signature by handing the signer
bytes that happen to encode a Solana transaction message.
This is a behaviour change for local-key signers only. External wallets
(Phantom / Backpack / Solflare / any Standard Wallet or Adapter) already
apply this header themselves — those paths are unchanged.
If you verify these signatures server-side, apply the same domain header
to the message before verification:
Explicit network required (no more URL inference)
v2 removes substring-based cluster inference from RPC endpoint URLs. URLs whose path happens to containmainnet or devnet were silently classified as that
cluster — unsafe whenever the URL came from an untrusted source.
getStandardWalletAdapters and createWalletConnectionManager now require
an explicit network argument:
detectClusterFromEndpoint and getInferredNetworkFromEndpoint have been
removed from the public API. StandardWalletAdapter no longer derives its
cluster from setRpcEndpoint; call the new setNetwork(network) method
instead — HermisProvider does this automatically when you pass network.
HermisProvider’s network prop was already required after v2.0; no change
is needed there.
HermisProvider Props Standardized
To matchWalletProvider interface and follow web3.js conventions:
rpcEndpoint→endpoint(matches web3.jsConnectionpattern)additionalAdapters→wallets(matchesWalletProviderinterface)
Migration Steps
Update HermisProvider Props (if using)
If you’re using HermisProvider, update prop names:
- Change
rpcEndpointtoendpoint - Change
additionalAdapterstowallets
Optionally Adopt Kit Architecture
Start using Kit features where beneficial - access Kit-specific properties from
useWallet()Example: Before and After
Using HermisProvider
Using WalletProvider
No changes needed - WalletProvider interface is unchanged:New Features Deep Dive
Dual Architecture Support
All transaction methods now support both architectures automatically:Kit-Friendly Properties
New properties added touseWallet() hook for Kit development:
Helper Utilities
New Kit helper functions:Backwards Compatibility
All existing web3.js code continues to work without modificationNeed Help?
GitHub Discussions
Ask questions and get help from the community
Report Issues
Report bugs or migration issues
API Reference
Explore the complete API documentation
Kit Guide
Learn about Kit architecture support
