State of Scala.js frameworks

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

Our great sponsors
  • SonarLint - Deliver Cleaner and Safer Code - Right in Your IDE of Choice!
  • Scout APM - Less time debugging, more time building
  • JetBrains - Developer Ecosystem Survey 2022
  • tyrian

    Elm-inspired Scala UI library. (by PurpleKingdomGames)

    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-ts

    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.

  • SonarLint

    Deliver Cleaner and Safer Code - Right in Your IDE of Choice!. SonarLint is a free and open source IDE extension that identifies and catches bugs and vulnerabilities as you code, directly in the IDE. Install from your favorite IDE marketplace today.

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

  • Scout APM

    Less time debugging, more time building. Scout APM allows you to find and fix performance issues with no hassle. Now with error monitoring and external services monitoring, Scout is a developer's best friend when it comes to application development.

  • 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