izumi
Izumi is a Scala ecosystem providing modular, productivity-focused libraries for dependency injection, testing, logging, and functional programming. It combines compile-time safety with runtime introspection to reduce boilerplate in pure functional Scala applications.
Key facts
Objective fields from the source. Values we can't verify are shown as “Unknown” rather than guessed.
| Field | Value |
|---|---|
| Repository | 7mind/izumi |
| Owner | 7mind |
| Primary language | Scala |
| License | BSD-2-Clause — OSI-approved |
| Stars | 628 |
| Forks | 73 |
| Open issues | 73 |
| Latest release | v1.2.25 (2026-04-05) |
| Last updated | 2026-06-16 |
| Source | https://github.com/7mind/izumi |
What izumi is
Multi-component Scala framework centered on distage (compile-time DI), distage-testkit (FP testing with resource sharing), LogStage (structural logging), and BIO (tagless final typeclass hierarchy). Supports Scala, Scala.js, and Scala Native with cross-cutting concerns for complex domain modeling via PPER pattern.
Get the izumi source
Clone the repository and explore it locally.
git clone https://github.com/7mind/izumi.gitcd izumi# follow the project's README for install & configurationNeed it deployed, integrated, or customized instead? DEV.co ships production installs.
Best use cases
Implementation considerations
- Requires Scala 2.12+ (or Scala 3); verify JDK compatibility and sbt/Gradle build system integration before adoption.
- distage compile-time safety depends on stable API contracts; refactoring large DI graphs can be cumbersome; invest in good project structure early.
- BIO typeclass hierarchy and tagless final patterns require buy-in from team on FP style; not a drop-in library for mixed codebases.
- Docker support (distage-framework-docker) adds complexity to test infrastructure; requires Docker daemon availability in CI/CD pipeline.
- Structural logging adoption (LogStage) requires discipline to avoid mixing with legacy println/simple logging; consider gradual rollout or parallel logging during transition.
When to avoid it — and what to weigh
- Non-Scala or polyglot teams — Izumi is Scala-specific. Python/TypeScript/C# implementations exist but are separate projects with different maturity; not suited for teams primarily on other JVM languages or seeking unified tooling across ecosystems.
- Strict performance-critical, low-latency requirements — While distage is compile-time safe, first-use initialization and reflective operations during injection setup carry non-trivial overhead. Latency-critical systems (<1ms p99) should benchmark carefully.
- Object-oriented or imperative Scala codebases — Izumi is optimized for pure FP patterns. Adoption in legacy OO-heavy Scala codebases introduces friction and requires significant architectural rework; ROI may not justify migration.
- Minimal learning curve requirement — Framework depth (DI, tagless final, effect types, PPER) requires solid understanding of FP concepts and Scala ecosystem; steep learning curve for teams without prior exposure.
License & commercial use
BSD-2-Clause (BSD 2-Clause Simplified License). Permissive OSI license allowing commercial use, modification, and redistribution with attribution and liability disclaimer.
BSD-2-Clause is a permissive open-source license compatible with commercial deployment. No restrictions on proprietary use, bundling, or SaaS deployment. No license fees or vendor lock-in. Recommended to include license text in distribution; consult legal counsel if bundling with other licenses or in heavily regulated environments.
DEV.co evaluation signals
Editorial assessment — not user reviews. Directional, with an explicit confidence level.
| Signal | Assessment |
|---|---|
| Maintenance | Active |
| Documentation | Strong |
| License clarity | Clear |
| Deployment complexity | Moderate |
| DEV.co fit | Good |
| Assessment confidence | High |
Standard Scala/JVM security model applies. BSD-2-Clause licensed code is open for audit. No inherent security hardening claims; distage DI and LogStage operate within JVM sandbox. Consider: (1) DI graph introspection may expose internal types/wiring—do not expose graph debugging to untrusted clients; (2) LogStage structured logs may contain sensitive data—configure appender outputs carefully; (3) Docker testkit integration requires secure container image sources. No known security advisories noted in data.
Alternatives to consider
Guice / Spring (Java/Scala)
Runtime reflection-based DI, mature ecosystem; no compile-time safety guarantees; Spring adds significant boilerplate; less ergonomic for tagless final FP patterns.
MacWire
Lightweight macro-based DI for Scala; simpler than distage but less introspectable, fewer features (no multi-modal injection, no testkit); lower learning curve but less suitable for complex, large-scale applications.
ZIO (with native DI Layer API)
Provides built-in DI via Layer API and environment types; tightly coupled to ZIO effect type; less flexible for mixed effect stacks; distage agnostic to effect implementation.
Build on izumi with DEV.co software developers
Review the full documentation and example projects at izumi.7mind.io. Assess your team's FP maturity and build complexity before committing; consider a pilot on new components rather than migrating legacy code.
Talk to DEV.coRelated open-source tools
Surfaced by semantic similarity across the DEV.co open-source index.
Related on DEV.co
Explore the category and the services that help you build with it.
izumi FAQ
Can I use Izumi with ZIO or Cats-Effect?
Does Izumi work with Scala 3?
Is there a Python / TypeScript / C# version?
How does distage-testkit reduce test time compared to standard xUnit?
Software development & web development with DEV.co
Need help beyond evaluating izumi? DEV.co is a software development agency offering software development services and web development for teams of every size. Our software developers and web developers build custom software, web applications, APIs, and open-source observability integrations — and maintain them long-term.
Evaluate Izumi for Your Scala Project
Review the full documentation and example projects at izumi.7mind.io. Assess your team's FP maturity and build complexity before committing; consider a pilot on new components rather than migrating legacy code.