Skip to main content

Modules

zio-nats is split across several artifacts. Most projects need only one of the two main options below - zio-nats for batteries-included, or zio-nats-core when you want to bring your own serialization.

Artifact coordinates

// Option A: batteries-included
// Pub/sub, JetStream, KV, Object Store, Service Framework,
// and zio-blocks type-safe serialization.
libraryDependencies += "io.github.pietersp" %% "zio-nats" % "0.1.1"

// Option B: core only (no zio-blocks)
// Use when you prefer jsoniter-scala, play-json, zio-json, or a fully custom NatsCodec[A].
libraryDependencies += "io.github.pietersp" %% "zio-nats-core" % "0.1.1"

// Optional: jsoniter-scala serialization
// Pair with zio-nats-core, or add alongside zio-nats for selected types.
libraryDependencies += "io.github.pietersp" %% "zio-nats-jsoniter" % "0.1.1"

// Optional: play-json serialization
// Pair with zio-nats-core, or add alongside zio-nats for selected types.
libraryDependencies += "io.github.pietersp" %% "zio-nats-play-json" % "0.1.1"

// Optional: zio-json serialization
// Pair with zio-nats-core, or add alongside zio-nats for selected types.
libraryDependencies += "io.github.pietersp" %% "zio-nats-zio-json" % "0.1.1"

// Testkit: starts a real NATS server in Docker via testcontainers
libraryDependencies += "io.github.pietersp" %% "zio-nats-testkit" % "0.1.1" % Test

Module details

ArtifactWhat it includesWhen to use
zio-natszio-nats-core + zio-nats-zio-blocksMost projects - gets everything including zio-blocks serialization
zio-nats-corePub/sub, JetStream, KV, Object Store, Service Framework, String/Chunk[Byte] codecsWhen you want jsoniter-scala, play-json, zio-json, or a fully custom codec
zio-nats-zio-blocksNatsCodec.fromFormat, Schema-based codec derivationTransitive via zio-nats; add explicitly only when using zio-nats-core
zio-nats-jsoniterNatsCodecJsoniter, given fromJsonValueCodec auto-bridgeHigh-performance JSON; alternative or complement to zio-blocks
zio-nats-play-jsonNatsCodecPlayJson, given fromPlayJsonFormat auto-bridgePlay framework projects; alternative or complement to zio-blocks
zio-nats-zio-jsonNatsCodecZioJson, given fromZioJson auto-bridgeZIO-native projects; alternative or complement to zio-blocks
zio-nats-testkitNatsTestLayers.nats - testcontainers-based Nats layerIntegration tests

Dependency graph

zio-nats
└── zio-nats-core
└── zio-nats-zio-blocks
└── zio-nats-core

zio-nats-jsoniter
└── zio-nats-core (provided by zio-nats or zio-nats-core)

zio-nats-play-json
└── zio-nats-core (provided by zio-nats or zio-nats-core)

zio-nats-zio-json
└── zio-nats-core (provided by zio-nats or zio-nats-core)

zio-nats-testkit
└── zio-nats-core

Serialization combinations

Serialization setupArtifacts
zio-blocks JSON onlyzio-nats
jsoniter-scala onlyzio-nats-core + zio-nats-jsoniter
play-json onlyzio-nats-core + zio-nats-play-json
zio-json onlyzio-nats-core + zio-nats-zio-json
zio-blocks + jsoniter for selected typeszio-nats + zio-nats-jsoniter
zio-blocks + play-json for selected typeszio-nats + zio-nats-play-json
zio-blocks + zio-json for selected typeszio-nats + zio-nats-zio-json

Additional zio-blocks formats

The zio-nats artifact brings in zio-blocks-schema (JSON) transitively. For binary formats, add the corresponding zio-blocks artifact:

libraryDependencies += "dev.zio" %% "zio-blocks-schema-avro"    % "<zio-blocks-version>"
libraryDependencies += "dev.zio" %% "zio-blocks-schema-msgpack" % "<zio-blocks-version>"
libraryDependencies += "dev.zio" %% "zio-blocks-schema-thrift" % "<zio-blocks-version>"
libraryDependencies += "dev.zio" %% "zio-blocks-schema-bson" % "<zio-blocks-version>"
libraryDependencies += "dev.zio" %% "zio-blocks-schema-toon" % "<zio-blocks-version>"

More formats are likely to be added as zio-blocks grows. See the zio-blocks documentation for the current list of supported formats.