DEV.co
Open-Source Observability · 7mind

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.

Source: GitHub — github.com/7mind/izumi
628
GitHub stars
73
Forks
Scala
Primary language
BSD-2-Clause
License (OSI-approved)

Key facts

Objective fields from the source. Values we can't verify are shown as “Unknown” rather than guessed.

FieldValue
Repository7mind/izumi
Owner7mind
Primary languageScala
LicenseBSD-2-Clause — OSI-approved
Stars628
Forks73
Open issues73
Latest releasev1.2.25 (2026-04-05)
Last updated2026-06-16
Sourcehttps://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.

Quickstart

Get the izumi source

Clone the repository and explore it locally.

terminalbash
git clone https://github.com/7mind/izumi.gitcd izumi# follow the project's README for install & configuration

Need it deployed, integrated, or customized instead? DEV.co ships production installs.

Best use cases

Large pure functional Scala applications

Teams building multi-service, FP-first backends where compile-time safety, transparent DI, and easy testing of large dependency graphs provide significant productivity gains over runtime reflection-based DI.

Test-heavy Scala projects with shared infrastructure

distage-testkit enables global resource sharing across test suites, automatic effect parallelism, and easy mock/implementation swapping—valuable for reducing test execution time and complexity in large test suites.

Structured logging requirements

LogStage provides compile-time safe, zero-cost structured logging via string interpolation, suitable for systems requiring audit trails, observability, or forensic log analysis without reflection overhead.

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.

SignalAssessment
MaintenanceActive
DocumentationStrong
License clarityClear
Deployment complexityModerate
DEV.co fitGood
Assessment confidenceHigh
Security considerations

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.

Software development agency

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.co

Related 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?
Yes. distage is effect-agnostic; BIO typeclass provides abstractions over ZIO/Cats-Effect bifunctor types. Topic tags confirm cats-effect and zio support. Mix freely, but maintain clear effect boundaries.
Does Izumi work with Scala 3?
Not clearly stated in data. Latest release (v1.2.25) and topics suggest Scala 3 work ongoing, but exact Scala version matrix not provided. Check izumi.7mind.io docs or GitHub releases for official Scala 3 support status.
Is there a Python / TypeScript / C# version?
Yes, but separate projects with potentially different maturity. Chibi Izumi for Python/TypeScript are basic re-implementations; DICS for C# uses Roslyn and is unreleased. Not feature-parity with Scala version; treat as independent tools.
How does distage-testkit reduce test time compared to standard xUnit?
Global resource sharing across test suites (e.g., one DB per test run, not per test) and automatic effect parallelism reduce setup/teardown overhead. Exact performance gain depends on resource-heavy tests; measure with your suite.

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.