Scala libraries
Web
- blaze - Scala library for building asynchronous pipelines, with a focus on network IO.
- ZIO HTTP - Scala library to write HTTP apps. Powered by ZIO and netty and aims at being the defacto solution for writing, highly scalable and performant web applications.
- Http4s - Minimal, idiomatic Scala interface for HTTP services.
- Tapir - Describe HTTP API endpoints as immutable Scala values. (Docs) (Tapir Stream) (1.0)
- sttp - Scala HTTP client you always wanted. (Docs)
- Scalatra - Tiny Scala high-performance, async web framework, inspired by Sinatra. (Web)
- Scala.js - Scala to JavaScript compiler. (Web) (10 years of Scala.js) (HN)
- Scala Webapp Utilities
- Play Framework - High Velocity Web Framework. (Bootstrap Template)
- ff4s - Purely functional web frontend framework for Scala.js.
- Tyrian - Elm-inspired Scala UI library for Scala 3.
- guardrail - Principled code generation from OpenAPI specifications.
- Cask - Scala HTTP micro-framework.
- http4s-curl - Experimental client for http4s on Scala Native, backed by libcurl.
- fs2-dom - Idiomatic Cats Effect + FS2 integrations for Web APIs.
- Scala DOM Types - Scala types for your library to represent HTML tags, attributes, properties and CSS styles.
- Laminar - Simple, expressive, and safe UI library for Scala.js. (Talk) (Web)
- Waypoint - Efficient router for Laminar UI Library.
- Apache Pekko - Build highly concurrent, distributed, and resilient message-driven applications using Java/Scala.
- Slinky - Write Scala React apps just like you would in ES6.
- Calico - Build reactive web applications in Scala.js with Cats Effect, FS2, and friends.
- netty-http4s - Http4s on pure netty.
CLI
- MainArgs - Small, dependency-free library for command line argument parsing in Scala.
- decline - Composable command-line parser for Scala.
- zio-cli - Rapidly build powerful command-line applications powered by ZIO.
- zio-tui - Library for creating interactive terminal user interfaces.
FP
- Cats - Lightweight, modular, and extensible library for functional programming. (herding cats)
- shapeless - Generic programming for Scala. (Type Astronaut's Guide to Shapeless)
- shapeless-3 - Generic programming for Scala.
DB
- doobie - Functional JDBC layer for Scala.
- ScalikeJDBC - Tidy SQL-based DB access library for Scala that naturally wraps JDBC and provides easy-to-use APIs.
- Skunk - Data access library for Scala + Postgres.
- Slick - Modern database query and access library for Scala. Allows you to work with stored data almost as if you were using Scala collections. (Web)
- redis4cats - Redis client built on top of Cats Effect, Fs2 and Lettuce.
- SQLite4S - Scala Native wrapper of the SQLite C library.
- Scalding - Scala library that makes it easy to specify Hadoop MapReduce jobs.
- ProtoQuill - Compile-time Language Integrated Queries for Scala.
- SPL-to-PySpark transpiler
- ZIO-Schema - Compositional, type-safe schema definitions, which enable auto-derivation of codecs and migrations.
- Gluten - Spark Plugin to Offload SQL Engine to Native Library.
- Anorm - Simple data access layer that uses plain SQL to interact with the database and provides an API to parse and transform the resulting datasets.
- porcupine - Skunk-inspired library for SQLite on JVM, Node.js, and Native.
Math
Test
- Bloop - Compile, test and run Scala code fast. (Code)
- Weaver-test - Test framework that runs everything in parallel.
- ScalaCheck - Property-based testing for Scala. (Web) (Web Code)
- Test-State - Test stateful stuff statelessly, and reasonably.
- kallikrein - Scala testing framework for sbt focused on running cats-effect based programs.
- specs2 - Software Specifications for Scala.
- scalaprops - Property based testing library for Scala.
- Americium - Generation of test case data for Scala and Java, in the spirit of QuickCheck.
- coulomb - Unit analysis for Scala.
- MUnit - Scala testing library with actionable errors and extensible APIs.
GraphQL
- Caliban - Purely functional library for building GraphQL servers and clients in Scala. (Docs)
- Sangria - Scala GraphQL implementation.
- Sangria Relay - Sangria Relay Support.
- Grackle - GraphQL server implementation for Scala.
Graphics
- Doodle - Compositional vector graphics in Scala / Scala.JS.
- Minart - Minimal scala library to draw images in a JVM/Javascript/Native canvas.
Error
- splain - Scala compiler plugin for more concise errors.
Crypto
- bobcats - Cross-platform cryptography (JVM, Node.js, browsers) for the Cats ecosystem.
ML
- Noether - Scala Aggregators used for ML Model metrics mo.
- Lamp - Scala library for deep learning and scientific computing. It features a native CPU and GPU backend and operates on off-heap memory.
- scala-torch - Scala bindings for LibTorch.
- Storch - PyTorch bindings for Scala.
Other
- sup - Composable, purely functional healthchecks in Scala.
- Monocle - Optics library for Scala.
- Skunk - Data access library for Scala + Postgres.
- Scala STM - Lightweight software transactional memory for Scala, inspired by the STMs in Haskell and Clojure while taking advantage of Scala’s power and performance.
- Scalaz - Principled Functional Programming in Scala.
- ZIO - Type-safe, composable library for asynchronous and concurrent programming in Scala. (Web) (Advanced ZIO Workshop) (Articles)
- ZIO ZMX - Monitoring, Metrics and Diagnostics for ZIO.
- Matryoshka - Generalized recursion schemes and traversals for Scala.
- Scrimage - Scala image processing library.
- Fastring - Extremely fast string formatting.
- Compute.scala - Scientific computing with N-dimensional arrays.
- Finatra - Fast, testable, Scala services built on TwitterServer and Finagle.
- Freestyle - Cohesive & pragmatic framework of FP centric Scala libraries.
- Deequ - Library built on top of Apache Spark for defining "unit tests for data", which measure data quality in large datasets.
- Izumi - Ecosystem of independent libraries and frameworks allowing you to significantly increase productivity of your Scala development.
- Odin - Fast & Functional logger in Scala.
- Monix - Asynchronous, Reactive Programming for Scala and Scala.js.
- Coursier - Pure Scala Artifact Fetching. (Web)
- almond - Scala kernel for Jupyter. (Web)
- Twitter Util - Bunch of idiomatic, small, general purpose tools.
- scalameta - Library to read, analyze, transform and generate Scala programs. (Guide)
- Inox - Solver for higher-order functional programs.
- Stainless - Verification framework and tool for higher-order Scala programs. (Web) (Talk) (Talk Slides)
- scodec - Scala combinator library for working with binary data.
- circe - JSON library for Scala.
- Ciris - Functional Configurations for Scala.
- ScalaPy - Allows you to use any Python library from your Scala code with an intuitive API. (Data Science in Scala with ScalaPy - Shadaj Laddad)
- Treadle - Experimental circuit simulator that executes low Firrtl IR.
- graalnative4s - Employ Scala for serverless applications.
- Cats Effect - Purely functional runtime system for Scala.
- NewType - Scala with no runtime overhead.
- Monocle - Optics library for Scala. (Docs)
- refined - Simple refinement types for Scala.
- uPickle - Simple Scala JSON and Binary (MessagePack) serialization library.
- LaCasa - Lightweight affine types and object capabilities in Scala.
- Spotted Leopards - Proof of concept for a cats-like library built using Dotty features.
- Izumi - Productivity-oriented collection of lightweight fancy stuff for Scala toolchain. (Docs)
- Libretto - Declarative concurrency and stream processing library for Scala.
- Algebird - Abstract Algebra for Scala.
- Natchez - Distributed tracing library for Scala.
- SWAN - Swift Static Analysis Framework.
- Chimney - Scala library for boilerplate-free, type-safe data transformations.
- banana-rdf - Library for RDF, SPARQL and Linked Data technologies in Scala.
- Scio - Scala API for Apache Beam and Google Cloud Dataflow.
- MacWire - Lightweight and Nonintrusive Scala Dependency Injection Library.
- Wire Signals - Small and effective event-handling library for Scala.
- Papa Carlo - Scala parsing library utilises incremental parsing approach.
- Avro4s - Avro schema generation and serialization / deserialization for Scala.
- Vault - Type-safe, persistent storage for values of arbitrary types.
- cats-retry - Library for retrying actions that can fail.
- Quill - Compile-time Language Integrated Queries for Scala. (Web)
- ZIO Optics - Easily modify parts of larger data structures.
- scala-typed-holes - Scala compiler plugin to emulate the "typed holes" feature of Haskell, Idris, Agda, etc.
- ScalaCache - Simple caching in Scala.
- Scaldi - Lightweight Scala Dependency Injection Library.
- Zinc - Incremental compiler for Scala.
- zio-webhooks - Microlibrary for reliable and persistent webhook delivery.
- Iron - Type constraint system for Scala. It allows creating type-level assertions, evaluable at compile time and/or runtime.
- ECScala - ECS Scala framework.
- ZIO Akka Cluster
- Squants - Scala API for Quantities, Units of Measure and Dimensional Analysis.
- dynamic - Scala library that allows copying a case class using a dynamic property name.
- crjdt - Conflict-free replicated JSON datatype (CRDT) in Scala.
- Droste - Recursion library for Scala.
- Iota - Fast [co]product types with a clean syntax. For Cats & Scalaz.
- Enumeratum - Type-safe, reflection-free, powerful enumeration implementation for Scala with exhaustive pattern match warnings and helpful integrations.
- FS2 - Compositional, streaming I/O library for Scala. (Web)
- Endless - Scala library to describe event sourced entities using tagless-final algebras. (Docs)
- Akka-Effect - Cats-Effect & Akka interop.
- Woof - Pure Scala logging library with no reflection.
- Squid - Type-safe metaprogramming for Scala.
- fs2-data - Streaming data parsers and manipulation library.
- Scala JSON Schema
- Diffson - Scala diff/patch library for JSON.
- Polyvinyl - Typesafe record types for Scala.
- newtypes - Macro-free helpers for defining newtypes in Scala, cross-compiled to Scala 3.
- geny - Provides the geny.Generator data type, the dual to a scala.Iterator that can ensure resource cleanup.
- Breeze - Numerical processing library for Scala.
- Scala Yaml - Dependency-free library that allows to work with the YAML.
- Parsel - Zero-dependency Scala library for working with Python code.
- ZIO logging - Simple logging for ZIO apps, with correlation, context & pluggable backends out of the box.
- ZIO Config - ZIO-based library for working with application configuration data.
- Scribe - Fastest logging library in the world. Built from scratch in Scala and programmatically configurable.
- Emil - Library for dealing with E-Mail in Scala.
- futil - Minimal utilities for Scala Futures.
- Scala Isabelle - Scala library for controlling/interacting with Isabelle.
- mini-refined - Simple encoding of refinement types in Scala 3.
- Difflicious - Scala library for readable diffs of values.
- zio-json - Fast, secure JSON library with tight ZIO integration.
- Ficus - Lightweight companion to Typesafe config that makes it more Scala-friendly.
- Colossus - Lightweight I/O framework for building Scala services.
- Futiles - Missing utils for working with Scala Futures.
- spray-json - Lightweight, clean and simple JSON implementation in Scala.
- sconfig - Configuration library written in Scala which is a direct translation of the original widely used Java library.
- Akka Stream Contrib
- Jsoniter Scala - Scala macros for compile-time generation of safe and ultra-fast JSON codecs.
- Staged Program Analyzers - Improving the performance of static analysis by meta-programming/multi-stage programming.
- Play JSON - Powerful Scala JSON library, originally developed by the Play team.
- kantan.csv - CSV handling library for Scala.
- Foursquare Fsq.io - All of Foursquare's open source code in a single repo.
- Scala-fx - Effects library for Scala 3 that introduces structured concurrency and an abilities system to describe pure functions and programs.
- DUCT - Scala 3 category theory and functional programming library.
- OS-Lib - Simple Scala interface to common OS filesystem and subprocess APIs.
- PureConfig - Scala library for loading configuration files.
- jsonrpclib - Cross-platform pure-scala JsonRPC library.
- cats-saga - Purely Functional Transaction Management In Scala With Cats.
- zio-saga - Purely Functional Transaction Management In Scala With ZIO.
- Turbolift - Extensible Effect System for Scala 3.
- Ducktape - Library for boilerplate-less and configurable transformations between case classes/enums (sealed traits) for Scala 3.
- smithy4s - Tool that generates third-party-free, protocol-agnostic scala code from smithy specifications. (Docs) (Reddit)
- GLL Combinators - Parser combinator library based on the GLL algorithm.
- Nyaya - Random Data Generation and/or Property Testing in Scala & Scala.JS.
- Shardcake - Sharding and location transparency for Scala.
- ZIO Compose - Scala DSL to write type-safe programs for distributed computing.
- feral - Framework for writing serverless functions in Scala with Cats Effect and deploying them to the cloud, targeting both JVM and JavaScript runtimes.
- scala-uri - Simple scala library for building and parsing URIs.
- Glass - Modern optic library.
- Morphling - Cats-based Scala library for free applicative schemas.
- Kalix Java and Scala SDK
- Scala Standard Parser Combinator - Parsing for Scala.
- Airstream - State propagation and event streams with mandatory ownership and no glitches.
- Scala Debug Adapter - Implementation of the Debug Adapter Protocol for Scala.
- Featran - Scala feature transformation library for data science and machine learning.
- cats-parse - Parsing library for the cats ecosystem.
- avocADO - Safe compile-time parallelization of for-comprehensions for Scala 3.
- Kyo - High-performance composable effects for Scala 3.
- ZIO direct - Direct-Style Programming for ZIO.
- Poppet - Minimal, type-safe RPC Scala library.
- Dupin - Minimal, idiomatic, customizable validation Scala library.
- Jam - Incredibly simple DI Scala library.
- ToFu - Functional programming toolbox.
- derevo - Multiple instance derivations inside a single macro annotation.
- Volga - Comprehensions for Arrows and Monoidal categories.
- Gallia - Schema-aware Scala library for data transformation.
- dependency - Library to parse and handle Java and Scala dependencies.
- eff - Eff monad for cats.
- Choam - Experiments with composable lock-free concurrency.
- Yin-Yang - Library for deep embedding of DSLs based on Scala macros.
- ZIO Process - ZIO library for interacting with external processes and command-line programs.
- Edomata - Production ready event-driven automata for Scala, Scala.js and scala native.
- Ultraviolet - Scala 3 to GLSL transpiler library.
- kinesis4cats - Comprehensive Scala library for Kinesis.
- Systolic Array - DSL for Systolic Arrays.
- SFML Scala Native - Scala Native binding of the SFML graphic library.
- otel4s - OpenTelemetry library for Scala based on Cats-Effect.
- tethys - JSON parsing/writing library for Scala.
- Decrel - Library for declarative programming using relations between your data.
- neotype - Friendly newtype library for Scala 3.
- parboiled2 - Macro-based PEG parser generator for Scala.
- Extras
- Twiddles - Micro-library for building effectful protocols.
- Typelevel Toolkit - Quickstart your next app with the Typelevel Toolkit.
- REScala - Distributed and reactive programming embedded in OO and FP programs.
Links
- Scaladex - Scala Package Index. (Code)
- Useful Scala libraries (2020)
- Scalaland.io - Umbrella for various Scala projects. (GitHub)
- Awesome Scala Native
- ZIO Cheat Sheet
- Best Scala framework / libraries (2021)
- FP libraries that target scala 3 exclusively? (2021)
- Scala libraries for ML (2021)
- sbt-dotenv - sbt plugin to load environment variables from .env into the JVM System Environment for local development.
- sbt-autoversion - Builds on the sbt-release and sbt-git plugins to automatically manage the version bump to apply.
- sbt-release - Customizable release process that you can add to your project.
- Sane Scala Dependencies in a Poly-Repo Codebase (2021)
- Finding Scala Libraries (2022)
- Unused Code - Find and warn, remove unused public classes, methods by scalafix SyntacticRule.
- Modeling & Building PayRoll Engine Using Functional Effects System With ZIO Asynchronous, Concurrent, ZIO Scala FP Library. (2022)
- Scala 3 migration guide
- Binary Compatibility Code Examples & Explanation - Guide + Examples to help you better maintain binary compatibility for your Scala library releases.
- Scala Diagrams - Generate class diagrams from scala source code.
- panopticon-tui - Terminal UI observability and diagnostic tool for Scala applications.
- zio-akka-quickstart - Giter8 template for a fully functional, ready to deploy microservice ZIO, Akka HTTP and Slick.
- Generate native-image binaries with sbt
- typelevel-nix - Development tools for Typelevel projects.
- Demos for ScalablyTyped
- scala-interactive-update - Update your Scala dependencies (both libraries and plugins) interactively.
- Getting Started with Scala.js and Vite | Let´s talk about Scala 3 (2022)
- Effect Zoo for Scala 3
- Scala Library template - Template for cross-platform, cross-versions Scala Library.
- Bindings generator for Scala 3 Native
- Acyclic - Scala compiler plugin to let you prohibit circular dependencies between files.
- Scala 3 Metaprogramming Examples
- Sbtix - Generates a Nix definition that represents your SBT project's dependencies.
- Dotty-patched and Eval - Evaluating source code and trees at compile time hacking multi-staging programming.
- Immutable Collections should be Your Default (2022)
- ScalaZ and Cats - Usage examples and benchmarks between Scalaz and Cats (w/ Haskell ground-truth).
- Peeking inside the engine of ZIO SQL (2022)
- Smithy Translate - Tooling that enables converting to and from Smithy. (Reddit)
- Scala Template
- Scala One - Platform of libraries for Scala 3.
- Managing micro libraries with Scala CLI - Alexandre Archambault (2022)
- dexsearch - CLI lets you search for Scala libraries via Scaladex, and stores them in your clipboard, well formatted, ready to paste in build files and scripts.
- sbt-sonatype - sbt plugin for publishing Scala/Java projects to the Maven central.
- sbt-dynver - sbt plugin to dynamically set your version from git.
- sbt-sql - sbt plugin for generating model classes from SQL files.
- Best of Scala