Provider Setup
ethers.js
voltaire-effect
Wallet/Signer
ethers.js
voltaire-effect
HD Wallet
ethers.js
voltaire-effect
Contract Interaction
ethers.js
voltaire-effect
Error Handling
ethers.js
voltaire-effect
Event Listening
ethers.js
voltaire-effect
Utilities
Address Validation
Hex Encoding
Unit Conversion
Key Differences
| Concept | ethers.js | voltaire-effect |
|---|---|---|
| Provider | Class instance | Effect Service + Layer |
| Errors | try/catch | Typed error channel |
| Async | Promise | Effect |
| State | Mutable objects | Immutable + Layer composition |
| Events | Callbacks | Effect Streams |
| Types | Runtime validation | Schema validation |
Gradual Migration
You can use both libraries during migration:Incremental Migration with tryPromise / trySync
If you are not ready to replace all ethers calls, wrap them into Effect first. UseEffect.tryPromise for async ethers APIs, and use Effect.try (sync) as a trySync helper for local parsing/validation.
getBalance free function and provide a Provider layer (it supplies ProviderService) instead of tryPromise.
See Also
- Migrating from viem — Migration guide for viem users
- Comparisons — Detailed library comparison
- Why voltaire-effect? — Trade-offs and benefits
- Effect Primer — Learn Effect.ts basics
- Troubleshooting — Common issues and solutions
- ethers.js Documentation — ethers.js reference

