State of Scala.js frameworks

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

Our great sponsors
  • InfluxDB - Collect and Analyze Billions of Data Points in Real Time
  • Mergify - Updating dependencies is time-consuming.
  • SonarQube - Static code analysis for 29 languages.
  • 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

    Collect and Analyze Billions of Data Points in Real Time. Manage all types of time series data in a single, purpose-built database. Run at any scale in any environment in the cloud, on-premises, or at the edge.

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

  • Mergify

    Updating dependencies is time-consuming.. Solutions like Dependabot or Renovate update but don't merge dependencies. You need to do it manually while it could be fully automated! Add a Merge Queue to your workflow and stop caring about PR management & merging. Try Mergify for free.

  • 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. Works with all framework as well as regular HTML/CSS/JS. 🥾

    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