diff --git a/.gitignore b/.gitignore
index 35f88c397..f44a5f29b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,6 +22,7 @@ backups/
 *.sqlite
 .turbo
 .env
+dist/
 
 
 # Yarn 2 without zero-installs
diff --git a/frontend/package.json b/frontend/package.json
index e777ddf12..529231ced 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -48,7 +48,7 @@
     "@codemirror/view": "6.16.0",
     "@fontsource/source-sans-pro": "5.0.8",
     "@hedgedoc/commons": "workspace:commons",
-    "@hedgedoc/html-to-react": "2.1.0",
+    "@hedgedoc/html-to-react": "workspace:html-to-react",
     "@hedgedoc/markdown-it-plugins": "2.1.3",
     "@mrdrogdrog/optional": "1.2.1",
     "@react-hook/resize-observer": "1.2.6",
diff --git a/package.json b/package.json
index de9ca4adc..d6d692943 100644
--- a/package.json
+++ b/package.json
@@ -7,7 +7,8 @@
     "frontend",
     "commons",
     "dev-reverse-proxy",
-    "docs"
+    "docs",
+    "html-to-react"
   ],
   "scripts": {
     "build": "dotenv -- turbo run build",
diff --git a/turbo.json b/turbo.json
index 5e62ebae1..09b82da22 100644
--- a/turbo.json
+++ b/turbo.json
@@ -2,6 +2,14 @@
   "$schema": "https://turbo.build/schema.json",
   "pipeline": {
     "build": {},
+    "@hedgedoc/html-to-react#build": {
+      "dependsOn": [
+        "^build"
+      ],
+      "outputs": [
+        "dist/**"
+      ]
+    },
     "@hedgedoc/commons#build": {
       "dependsOn": [
         "^build"
diff --git a/yarn.lock b/yarn.lock
index 26f94349f..b545f22a4 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2413,7 +2413,7 @@ __metadata:
     "@codemirror/view": 6.16.0
     "@fontsource/source-sans-pro": 5.0.8
     "@hedgedoc/commons": "workspace:commons"
-    "@hedgedoc/html-to-react": 2.1.0
+    "@hedgedoc/html-to-react": "workspace:html-to-react"
     "@hedgedoc/markdown-it-plugins": 2.1.3
     "@mrdrogdrog/optional": 1.2.1
     "@next/bundle-analyzer": 13.4.19
@@ -2535,18 +2535,33 @@ __metadata:
   languageName: unknown
   linkType: soft
 
-"@hedgedoc/html-to-react@npm:2.1.0":
-  version: 2.1.0
-  resolution: "@hedgedoc/html-to-react@npm:2.1.0"
+"@hedgedoc/html-to-react@workspace:html-to-react":
+  version: 0.0.0-use.local
+  resolution: "@hedgedoc/html-to-react@workspace:html-to-react"
   dependencies:
+    "@jest/globals": 29.6.4
+    "@jest/types": 29.6.3
+    "@types/react": 18.2.21
+    "@types/react-dom": 18.2.7
+    "@typescript-eslint/eslint-plugin": 6.4.1
+    "@typescript-eslint/parser": 6.4.1
     domelementtype: ^2.3.0
     domhandler: ^5.0.3
+    eslint: 8.48.0
+    eslint-config-prettier: 9.0.0
+    eslint-plugin-jest: 27.2.3
+    eslint-plugin-prettier: 5.0.0
     htmlparser2: ^9.0.0
+    jest: 29.6.4
+    prettier: 3.0.2
+    react: 18.2.0
+    react-dom: 18.2.0
+    ts-jest: 29.1.1
+    typescript: 5.1.6
   peerDependencies:
     react: ">=16.0"
-  checksum: ed7939d3a6b80248be5977ac4401b3292da28175702a28abce04950e4dff8633aa38cab9507cf2715c9d0a9b8f3b737b06f4429f07e493ed299748f0a433337d
-  languageName: node
-  linkType: hard
+  languageName: unknown
+  linkType: soft
 
 "@hedgedoc/markdown-it-plugins@npm:2.1.3":
   version: 2.1.3
@@ -2739,7 +2754,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"@jest/globals@npm:^29.6.4":
+"@jest/globals@npm:29.6.4, @jest/globals@npm:^29.6.4":
   version: 29.6.4
   resolution: "@jest/globals@npm:29.6.4"
   dependencies: