vmunier/sbt-web-scalajs
61.6
Adequate · 20 September 2026
251
lines of production code
Scala
primary language
1
measurement over time
What this system is
This system is an sbt plugin that integrates Scala.js with the sbt-web build toolchain, enabling JavaScript asset compilation and serving for various web servers. It provides generic support for frameworks like Play, Akka HTTP, and Spray, handling JavaScript pipeline stages, file watching, and source map generation. The plugin ensures compatibility with modern Scala versions and SBT 2, allowing developers to manage client-side assets independently of the server framework.
Removals
Removal of Play-specific Scala.js plugin
The \PlayScalaJS\ plugin, which previously provided tight integration between Play and Scala.js (including cross-project support, JS output copying, and source map handling), has been removed. This change reflects the plugin's decoupling from the Play framework to become a generic \sbt-web-scalajs\ plugin compatible with any sbt-web server, meaning users must now rely on the new generic plugin or other integrations for Scala.js support.
src/main/scala/playscalajs · high confidence
Behavioural changes
Introduce sbt-web integration for Scala.js with source map support
The plugin has been refactored to decouple Scala.js support from the Play framework, now providing a generic integration with any sbt-web server (such as Play, Akka HTTP, or Spray). This change introduces new auto-plugins (ScalaJSWeb and WebScalaJS) that handle JavaScript pipeline stages, file watching, and source map generation. Users benefit from improved source map handling that works across different Scala versions (including Scala 3) and ensures that Scala.js output files are correctly copied to the web assets directory for serving.
src/main/scala/webscalajs · high confidence
Plugin renamed to sbt-web-scalajs with expanded server support
The plugin has been renamed from sbt-play-scalajs to sbt-web-scalajs to reflect that it now supports any sbt-web server (such as Akka HTTP or Spray), not just Play Framework. The README has been updated to document the new setup for sbt 1.x and 2.x, including specific instructions for configuring the \scalaJSProjects\ and \pipelineStages\ settings, and clarifying that the plugin no longer depends on Play but relies on sbt-web and Scala.js. Additionally, a LICENSE file (Apache 2.0) and a .scalafmt.conf configuration file have been added to the project.
(repo-wide) · high confidence
Test coverage
Add scripted tests for Akka HTTP and Play integration with Scala.js
Added new scripted tests for the \sbt-web-scalajs\ plugin covering integration with Akka HTTP and Play Framework. The Akka HTTP test verifies that Scala and source map files are correctly included in the universal package under various \scalaJSStage\ and \sourceMappings\ configurations. The Play test validates that the server reloads only when server-side Scala files change (ignoring client-side changes) and confirms the correct presence of Scala and source map files in the packaged archive.
src/sbt-test · high confidence
Dependencies
Rename plugin to sbt-web-scalajs and upgrade to SBT 2 compatibility
The plugin has been renamed from sbt-play-scalajs to sbt-web-scalajs to reflect its decoupling from the Play framework, allowing it to integrate with any sbt-web server such as Akka HTTP or Spray. The build has been upgraded to support SBT 2 (via sbt2-compat) and Scala 3, with sbt-scalajs updated to 1.22.0 and sbt-web to 1.6.0-M4. Additionally, new scripted tests have been added for Akka HTTP and Play integrations to verify the plugin's functionality in these environments.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 62.
Lenses
- Code Health 100
- Architecture 100
- Maturity 69
- Readiness 44
- Security 75
Changes since last survey
- 209 commits — 202 feature/other, 7 fixes
By area
- (root) — 142 commits
- src/main — 30 commits
- src/sbt-test — 16 commits
- project/build.properties — 9 commits
- (repo) — 7 commits
- project/plugins.sbt — 3 commits
- .github/workflows — 2 commits
Notable commits
- fix: Fix Travis build by using xenial dist. (#51)
- fix: Fix release workflow: use JDK 21 for sbt 2
- fix: Fixes #14: Use unmanagedResourceDirectories in Compile to watch the client Scala files during development while excluding them from the final jar. @see externalizedSettings, which is used in Play to create a jar that excludes the unmanagedResources https://github.com/playframework/playframework/blob/9ffaf72367e99b35b08e03d6199eb7bf17eaea4b/framework/src/sbt-plugin/src/main/scala/play/sbt/PlaySettings.scala#L248. The Compile scope is used and not the Assets scope because using the Assets scope would have included the client Scala files with their package path (e.g. public/example/ScalaJSExample.scala).
- fix: Fixes #26: Run scalaJSDev when a user executes a dev command with arguments.
- fix: Fixes #27: get the command key from user's input to know if it's a dev command. Example: 'run' is the command key in 'server/compile:run'.
- fix: Fixes #55: Use correct scope with scalaJSLinkerConfig. (#56)
- fix: Fixes #9: the plugin is now compatible with Play 2.4. Play 2.4 monitors directories in unmanagedSourceDirectories during Play run. So Scala.js projects are now added to unmanagedSourceDirectories in Assets to be part of the directories monitored by Play. @see playMonitoredFilesTask in Play, which creates the list of monitored directories https://github.com/playframework/playframework/blob/c75ed44baf4433f6b56ec5fdc30993405e8ad178/framework/src/sbt-plugin/src/main/scala/play/sbt/PlayCommands.scala#L85
- change: - Several Scala.js projects can be attached to a single Play! project. - sbt-play-scalajs does not depend on Play anymore. It depends on sbt-web instead which is also used by the Play framework. - Scala files for Source Maps are copied into the assets folder and Source Maps paths are rewritten. There is no need for a SourceMaps controller to serve the Scala files anymore. - Source Maps are disabled in production by default (i.e. when running play start, stage, dist). To enable Source Maps in production, (emitSourceMaps in fullOptJS) := true should be set in the Scala.js projects.
- change: <<= is deprecated in 0.13.13
- change: Adapt mapSourceURI parameter to Scala 3 (#116)
- change: Add 'License' and 'Download' badges
- change: Add Typesafe resolver
- change: Add akka-http-with-scalajs scripted test.
- change: Add implicit conversion from Seq[Project] to Seq[ProjectReference].
- change: Add play-scalajs as an sbt-test (#66)
- change: Add runAll to the devCommands. runAll is used in Lagom projects.
- change: Added Gitter badge
- change: Change mapSourceURI type to Option[String].
- change: Create ci.yml
- change: Cross build to SBT v1.0.0 and v0.13.16. (#38)
- …and 189 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
vmunier/sbt-web-scalajs was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 8704a50c4e7845a1c3e99e2ef0829b0984e76e73 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.