diff --git a/.scalafmt.conf b/.scalafmt.conf
new file mode 100644
index 0000000000000000000000000000000000000000..bc38b37349653f937dd0d793f63ad79e719efc25
--- /dev/null
+++ b/.scalafmt.conf
@@ -0,0 +1,14 @@
+version = "3.8.3"
+maxColumn = 90
+runner.dialect = scala3
+rewrite.scala3.convertToNewSyntax = yes
+rewrite.scala3.removeOptionalBraces = yes
+rewrite.scala3.removeEndMarkerMaxLines = 16384
+newlines.source = keep
+docstrings.wrapMaxColumn = 80
+docstrings.oneline = fold
+
+project {
+  excludePaths = [
+  ]
+}
diff --git a/project/plugins.sbt b/project/plugins.sbt
index 462b3553c245ecdb6dc43f817a0abac4d90369a6..fce5a5442c7df2bc7bb1e35ac5ac8a0d093c1112 100644
--- a/project/plugins.sbt
+++ b/project/plugins.sbt
@@ -1,3 +1,4 @@
+addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.0")
 addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.16.0")
 addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.2")