{"slug": "scala-js", "name": "Scala.js", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 3, "commenters": 3, "warners": 0, "score": 2.858, "rising": 1.35, "first": "2026-01-22", "latest": "2026-10-19", "why": "", "why_is_quote": false, "has_verdict": false, "sentiment": {"recommend": 4, "neutral": 0, "compare": 0, "warn": 0}, "spark": [0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1], "listed": true, "loved": [], "caveat": "", "short_quote": "", "kind": "", "icon": true, "domain": "scala-js.org", "github_repo": null, "official_url": "https://www.scala-js.org", "pricing": "", "aliases": ["Scala.js", "ScalaJS"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 802365248, "item_id": 50147828, "url": "https://news.ycombinator.com/item?id=50147828", "by": "AdieuToLogic", "date": "2026-10-19", "version": null, "stance": "recommend", "quote": "For the frontend, ScalaJS[0].", "excerpt": "> I still prefer TypeScript since I do a lot of frontend work and prefer to use the same language across the stack. If you perfer using the same language for both frontend and backend work, yet would like to have one more semantically rich than TypeScript, consider Scala. For the frontend, ScalaJS[0]. For the backend, Scala[1]. 0 - https://www.scala-js.org/ 1 - https://scala-lang.org/", "context": "", "use_case": "Scala on the frontend", "switched_from": "", "story": "Java sealed classes and exhaustive pattern matching"}, {"id": 795436721, "item_id": 49714795, "url": "https://news.ycombinator.com/item?id=49714795", "by": "davidee", "date": "2026-09-15", "version": null, "stance": "recommend", "quote": "ScalaJS is fun too.", "excerpt": "This made me chuckle. Aside: Scala dev here - but I only talk about how wonderful it is with people I trust (mostly Go and Rust developers I used to work with). Also, Scala Native means I don\u2019t always have to worry about the JVM depending on the use case. ScalaJS is fun too.", "context": "Scala dev", "use_case": "", "switched_from": "", "story": "Java 27"}, {"id": 768977616, "item_id": 48061101, "url": "https://news.ycombinator.com/item?id=48061101", "by": "ezst", "date": "2026-05-08", "version": null, "stance": "recommend", "quote": "is quite phenomenal", "excerpt": "https://www.scala-js.org/ is quite phenomenal.", "context": "", "use_case": "Scala to JavaScript compilation", "switched_from": "", "story": "ClojureScript Gets Async/Await"}, {"id": 747510370, "item_id": 46719398, "url": "https://news.ycombinator.com/item?id=46719398", "by": "davidee", "date": "2026-01-22", "version": null, "stance": "recommend", "quote": "ScalaJS is both fun and cool", "excerpt": "I'm partial to Scala. It's the first language I've tried to start to master. I have fallen in love with a number of libraries that dramatically expedite the kinds of projects I work on (mostly the work of Typelevel). For whatever reason, the FP-first approach it allows me to use, matches how I like to think about problems. For comprehensions for handling complex types, easily, feel like a superpower. When I started (", "context": "", "use_case": "Scala to JavaScript", "switched_from": "", "story": "I am moving away from Scala"}]}], "caveats": [], "who": [{"by": "davidee", "context": "Scala dev", "url": "https://news.ycombinator.com/item?id=49714795", "date": "2026-09-15"}], "tags": [], "use_cases": ["scala on the frontend", "scala to javascript compilation", "scala to javascript"], "compared": [], "makers": [{"id": 748196352, "item_id": 46762272, "url": "https://news.ycombinator.com/item?id=46762272", "by": "sjrd", "date": "2026-01-25", "version": null, "stance": "recommend", "quote": "At the time I wrote our conversions, they beat every previous implementation", "excerpt": "Interesting. When compiling Scala.js to ECMAScript 5, we still have an implementation of bitwise floating point conversions based on double operations and integer shifts. [1] We also use a lookup table for powers of 2, and don't use anything but primitives (no log or pow, notably). We do have a few divisions, but I see now how I could turn them into multiplications. Dealing with subnormals is tricky because the inver", "context": "", "use_case": "", "switched_from": "", "story": "Bitwise conversion of doubles using only FP multiplication and addition"}], "threads": [{"url": "https://news.ycombinator.com/item?id=50256409", "title": "A new faster algorithm to compute 64-bit signed floor division", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=50141579", "title": "Java sealed classes and exhaustive pattern matching", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=49712041", "title": "Java 27", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48059662", "title": "ClojureScript Gets Async/Await", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=46754522", "title": "Bitwise conversion of doubles using only FP multiplication and addition", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=46718556", "title": "I am moving away from Scala", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {}, "2026-01": {"recommend": 1}, "2026-02": {}, "2026-03": {}, "2026-04": {}, "2026-05": {"recommend": 1}, "2026-06": {}, "2026-07": {}, "2026-08": {}, "2026-09": {"recommend": 1}, "2026-10": {"recommend": 1}}, "versions": [], "version_unnamed": 0, "family_ref": null, "runs_on": null, "lines": [], "quotes": [{"id": 804624128, "item_id": 50289008, "url": "https://news.ycombinator.com/item?id=50289008", "by": "sjrd", "date": "2026-10-29", "version": null, "stance": "neutral", "quote": "The Scala.js compiler uses all of that.", "excerpt": "This looks very interesting, and very well written. I'll definitely give a it a thorough read when I get the time, and probably include the technique in our compiler. Floor division is almost always more useful than truncating division, so having a fast path there would be nice. I can't help but do a shameless plug for another recent result in that space: we developed fast algorithms for 64-bit integer divisions (by ", "context": "", "use_case": "", "switched_from": "", "story": "A new faster algorithm to compute 64-bit signed floor division"}, {"id": 802365248, "item_id": 50147828, "url": "https://news.ycombinator.com/item?id=50147828", "by": "AdieuToLogic", "date": "2026-10-19", "version": null, "stance": "recommend", "quote": "For the frontend, ScalaJS[0].", "excerpt": "> I still prefer TypeScript since I do a lot of frontend work and prefer to use the same language across the stack. If you perfer using the same language for both frontend and backend work, yet would like to have one more semantically rich than TypeScript, consider Scala. For the frontend, ScalaJS[0]. For the backend, Scala[1]. 0 - https://www.scala-js.org/ 1 - https://scala-lang.org/", "context": "", "use_case": "Scala on the frontend", "switched_from": "", "story": "Java sealed classes and exhaustive pattern matching"}, {"id": 795436721, "item_id": 49714795, "url": "https://news.ycombinator.com/item?id=49714795", "by": "davidee", "date": "2026-09-15", "version": null, "stance": "recommend", "quote": "ScalaJS is fun too.", "excerpt": "This made me chuckle. Aside: Scala dev here - but I only talk about how wonderful it is with people I trust (mostly Go and Rust developers I used to work with). Also, Scala Native means I don\u2019t always have to worry about the JVM depending on the use case. ScalaJS is fun too.", "context": "Scala dev", "use_case": "", "switched_from": "", "story": "Java 27"}, {"id": 768977616, "item_id": 48061101, "url": "https://news.ycombinator.com/item?id=48061101", "by": "ezst", "date": "2026-05-08", "version": null, "stance": "recommend", "quote": "is quite phenomenal", "excerpt": "https://www.scala-js.org/ is quite phenomenal.", "context": "", "use_case": "Scala to JavaScript compilation", "switched_from": "", "story": "ClojureScript Gets Async/Await"}, {"id": 747510370, "item_id": 46719398, "url": "https://news.ycombinator.com/item?id=46719398", "by": "davidee", "date": "2026-01-22", "version": null, "stance": "recommend", "quote": "ScalaJS is both fun and cool", "excerpt": "I'm partial to Scala. It's the first language I've tried to start to master. I have fallen in love with a number of libraries that dramatically expedite the kinds of projects I work on (mostly the work of Typelevel). For whatever reason, the FP-first approach it allows me to use, matches how I like to think about problems. For comprehensions for handling complex types, easily, feel like a superpower. When I started (", "context": "", "use_case": "Scala to JavaScript", "switched_from": "", "story": "I am moving away from Scala"}]}