State of Scala.js frameworks

This page summarizes the projects mentioned and recommended in the original post on /r/scala

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • tyrian

    Elm-inspired Scala UI library.

  • https://github.com/PurpleKingdomGames/tyrian, the elm-way for Scala.js, I'm yet to try it in a real project but it seems promising.

  • effect

    A fully-fledged functional effect system for TypeScript with a rich standard library

  • FYI there's a ZIO "port" for Typescript (https://github.com/Effect-TS/core) so if you want, you can still write pure FP code in frontend too. I haven't tried it yet though, I myself am a backend engineer and only play with frontend stuff for personal projects, when I've got some time.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • fp-ts

    Functional programming in TypeScript

  • I never used it myself, but a colleague learned FP using https://github.com/gcanti/fp-ts and only afterwards started working with scala. You might want to give it a go

  • ScalaJsReactDemos

  • Given that you want interoperability with js, I'd start by playing with https://scalablytyped.org/, then, play with the scalajs-react demos (https://github.com/ScalablyTyped/ScalaJsReactDemos) and the slinky demos (https://github.com/ScalablyTyped/SlinkyDemos). There are some libraries that scalablytyped doesn't support pretty well but you can leverage https://github.com/nafg/scalajs-facades for those.

  • SlinkyDemos

  • Given that you want interoperability with js, I'd start by playing with https://scalablytyped.org/, then, play with the scalajs-react demos (https://github.com/ScalablyTyped/ScalaJsReactDemos) and the slinky demos (https://github.com/ScalablyTyped/SlinkyDemos). There are some libraries that scalablytyped doesn't support pretty well but you can leverage https://github.com/nafg/scalajs-facades for those.

  • scalajs-facades

    Facades for scalajs-react

  • Given that you want interoperability with js, I'd start by playing with https://scalablytyped.org/, then, play with the scalajs-react demos (https://github.com/ScalablyTyped/ScalaJsReactDemos) and the slinky demos (https://github.com/ScalablyTyped/SlinkyDemos). There are some libraries that scalablytyped doesn't support pretty well but you can leverage https://github.com/nafg/scalajs-facades for those.

  • Converter

    Typescript to Scala.js converter

  • Given that you want interoperability with js, I'd start by playing with https://scalablytyped.org/, then, play with the scalajs-react demos (https://github.com/ScalablyTyped/ScalaJsReactDemos) and the slinky demos (https://github.com/ScalablyTyped/SlinkyDemos). There are some libraries that scalablytyped doesn't support pretty well but you can leverage https://github.com/nafg/scalajs-facades for those.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • Laminar

    Simple, expressive, and safe UI library for Scala.js (by raquo)

  • https://github.com/raquo/laminar, a purely scalajs library based on observables.

  • diode

    Scala library for managing immutable application model

  • c) Diode is my favourite "wiring" library. It is similar to Redux and allows you to handle asynchronous behaviour in your frontend. It has a learning curve but it's not too bad and makes everything so much easier.

  • slinky

    Write Scala.js React apps just like you would in ES6

  • b) Slinky is by far my favourite React framework. It is simple, well supported and matches up with Javascript so you easily port code. You can use any React UI library you like although my preference right now is Shoelace. I can open source my wrappers if there is interest.

  • shoelace-css

    A collection of professionally designed, every day UI components built on Web standards. SHOELACE IS BECOMING WEB AWESOME. WE ARE LIVE ON KICKSTARTER! 👇👇👇

  • b) Slinky is by far my favourite React framework. It is simple, well supported and matches up with Javascript so you easily port code. You can use any React UI library you like although my preference right now is Shoelace. I can open source my wrappers if there is interest.

  • purescript-halogen

    A declarative, type-safe UI library for PureScript.

  • There's also Purescript, which is sort of a Haskell for frontend. It has type classes, HKTs and so on and also has a very nice FFI. When it comes to UI libraries there is Halogen which I think is very well though out and allows for using tagless final approach. There's also react-basic but I haven't used that one myself.

  • purescript-react-basic

    An opinionated set of bindings to the React library, optimizing for the most basic use cases

  • There's also Purescript, which is sort of a Haskell for frontend. It has type classes, HKTs and so on and also has a very nice FFI. When it comes to UI libraries there is Halogen which I think is very well though out and allows for using tagless final approach. There's also react-basic but I haven't used that one myself.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts