Scala libraries

Compatible Scala libraries

Many Scala libraries have been updated to be compatible with Scala.js. To quickly start using one of these libraries, just click on the dependency clipboard button to get the relevant SBT dependency definition.

JDK extensions

Name Description Dependency
scala-java-time Platform-independent implementation of java.time
scalajs-jsjoda-as-java-time Alternative to scala-java-time implemented by wrapping js-joda classes
scala-java-locales Implementation of JDK8’s java.util.Locale API and parts of java.text API
scalajs-java-logging Port of the java.util.logging API of JDK 8 for Scala.js

Functional programming

Scalaz Library for functional programming.
Each A macro library that converts native imperative syntax to scalaz’s monadic expressions.
future.scala Stack-safe asynchronous programming in pure functional flavor.
tryt.scala Monad transformers for exception handling.
RAII.scala A collection of utilities to manage native resources in Scalaz.
Shapeless Generic programming for Scala.
Cats Lightweight, modular, and extensible library for functional programming.
Cats Effect A pure, asynchronous runtime implementing the “IO” monad.
Monocle Optics library strongly inspired by Haskell Lens.
Quicklens Modify deeply nested fields in case classes.
fs2 Purely functional, effectful, and polymorphic stream processing and I/O.

Web libraries/frameworks

Udash A Scala(.js) framework for building beautiful and maintainable Web Applications
Binding.scala/dom Reactive web framework for Scala.js
ScalaTags HTML templating library/DSL that works on both Scala/JVM and Scala.js
statictags Write HTML in both Scala JVM & JS. Extend tags and attributes with ease!
Scala DOM Types Scala types for your library to represent HTML tags, attributes, properties and CSS styles
MetaWeb Functional low-level web framework for Scala and Scala.js
Widok Reactive web framework for the JVM and Scala.js
ScalaJS Binding Scala.js HTML binding library
ScalaCSS ScalaCSS aims to bring type-safety and clarity to: creating CSS, using CSS, maintaining CSS and correctness of CSS
Diode Diode is a Scala/Scala.js library for managing immutable application state with unidirectional data flow.
Sri Sri (Scala React interface) is a scalajs library to build truly native cross platform (mobile (ios and android) and web) applications.
Outwatch The Functional and Reactive Web-Frontend Library for Scala.js
Slinky Write Scala.js React apps just like you would in ES6
Laminar Simple, expressive, and safe UI library for Scala.js
Tyrian Elm-inspired Scala UI library with first-class Cats Effect support
Linden Functional reactive frontend framework

Serialization/pickling libraries

uPickle Statically-typed pickling (via typeclasses/macros) for both Scala and Scala.js
BooPickle Highly efficient binary serialization for both Scala and Scala.js
Prickle Statically-typed pickling library with support for pickling object graphs containing shared objects and cycles
scala-json JSON pickling, advanced compile-time marshaling, full-feature DSL and more for Scala and Scala.js
Pushka Pure Scala pickler with annotations
Circe Yet another JSON library for Scala (built with Cats and Shapeless)
Jello Scala.js & JVM JSON serialization framework without thrills
Scala.js Pickling Pickling library based on explicit registration of picklers
Msgpack4z Functional msgpack serializer/deserializer for Scala
Scodec Combinator library for working with binary data.
Scodec MessagePack Yet another MessagePack implementation for Scala
ScalaPB Generates case classes, serializers and deserializers for Protocol Buffers
kantan.csv CSV handling library for Scala

Client-server communication

autowire Cross-compiling statically-typed Ajax calls and RPCs
RösHTTP A cross-platform HTTP client implementation for the browser, Node.js and the JVM.
Udash RPC Cross-compiling strongly typed client-server communication system for the Udash framework
endpoints Scala library to define HTTP-based communication protocols
scala-json-rpc Let your servers and clients communicate over function calls! A JSON-RPC 2.0 library for both Scala JVM & JS
http4s A minimal, idiomatic Scala interface for typeful, functional, streaming HTTP.
http4s-dom http4s, in a browser near you.
feral A framework for writing serverless functions and deploying them to the cloud.
natchez Functional, distributed tracing library.

FRP/reactive extensions

Scala.Rx Change-propagation/FRP library
Monix Library for composing asynchronous, lawful, event-based programs, with Observables, Task, Coeval and low-level primitives
MetaRx Reactive data structures for Scala and Scala.js
Binding.scala/core Reactive data-binding for both Scala.js and JVM
Airstream State propagation and event streams with mandatory ownership and no glitches

Dependency Injection

Airframe Guice-like run-time dependency injection library tailored to Scala traits
MacWire Compile-time dependency injection library

Miscellaneous

NICTA/rng Pure-functional random value generation.
Scala-Async An asynchronous programming facility for Scala/Scala.js.
Scalaxy Streams Make your Scala collections faster!
jsext Utilities for developing facades and working with Futures
shocon A partial pure-Scala, cross-compiled implementation of the HOCON configuration language
SHocon Simple pure-scala Typesafe HOCON implementation using FastParse
slogging A simple logging library with an API compatible to scala-logging (and slf4j)
scribe Logging framework for Scala and Scala.js
FastParse Fast to write, fast-running parser-combinators in Scala/Scala.js
Nyaya Random data generation.
cryptotpyrc Scala.js & JVM cross compiled RSA / Crypto library.
Akka Toolkit and runtime for building concurrent, distributed applications. Crosscompiled from Typesafe Akka sources
AkkaStream Streaming programming on top of Akka. Crosscompiled from Typesafe Akka Stream sources
cron4s CRON expression parser supporting multiple data-time libraries in the JVM and in the browser
squants API for Quantities, Units of Measure and Dimensional Analysis
wvlet-log A logging library with colors and source code locations
EvilPlot Combinator-based 2D plotting library for easily building composable and extensible data visualizations
sconfig Scala port of the lightbend/config HOCON Java library
blake3 Blake3 for scala
skunk A data access library for Scala + Postgres.

Tools

sbt-scala-js-map A Sbt plugin that configures source mapping for Scala.js projects hosted on Github
Workbench SBT plugin for Scala.JS live-reloading in the browser. (example app)
scalajs-benchmark Write benchmarks in Scala or JS, run in your browser. (online demo)
enableIf.scala A library that switches Scala code at compile-time, like #if in C/C++
sbt-node A Sbt plugin for integration with npm / node.js based build tools.

Additions and corrections to this section may be reported through GitHub issues. Please include Name, Url, Description and Dependency