diff --git a/apps/doc/package.json b/apps/doc/package.json
index 287ad19..9db9fb2 100644
--- a/apps/doc/package.json
+++ b/apps/doc/package.json
@@ -22,14 +22,14 @@
     "focus-visible": "^5.2.0",
     "next": "^13.4.19",
     "prism-react-renderer": "^2.0.6",
-    "react": "^18.2.0",
-    "react-dom": "^18.2.0"
+    "react": "^19.0.0",
+    "react-dom": "^19.0.0"
   },
   "devDependencies": {
     "@algolia/client-search": "^4.20.0",
     "@tailwindcss/typography": "^0.5.10",
-    "@types/react": "^18.2.21",
-    "@types/react-dom": "^18.2.7",
+    "@types/react": "^19.0.0",
+    "@types/react-dom": "^19.0.0",
     "autoprefixer": "^10.4.15",
     "eslint-config-custom": "workspace:*",
     "postcss": "^8.4.29",
diff --git a/apps/example/package.json b/apps/example/package.json
index 9454413..840e970 100644
--- a/apps/example/package.json
+++ b/apps/example/package.json
@@ -16,12 +16,12 @@
   "dependencies": {
     "next": "^13.4.19",
     "next-api-handler": "workspace:*",
-    "react": "^18.2.0",
-    "react-dom": "^18.2.0"
+    "react": "^19.0.0",
+    "react-dom": "^19.0.0"
   },
   "devDependencies": {
     "@types/node": "^20.6.0",
-    "@types/react": "^18.2.21",
+    "@types/react": "^19.0.0",
     "cypress": "^13.2.0",
     "eslint-config-custom": "workspace:*",
     "start-server-and-test": "^2.0.0",
diff --git a/packages/next-api-handler/package.json b/packages/next-api-handler/package.json
index 0587af6..7ef3b3d 100644
--- a/packages/next-api-handler/package.json
+++ b/packages/next-api-handler/package.json
@@ -82,8 +82,8 @@
     "next-test-api-route-handler": "^3.1.8",
     "npm-run-all": "^4.1.5",
     "open-cli": "^7.2.0",
-    "react": "^18.2.0",
-    "react-dom": "^18.2.0",
+    "react": "^19.0.0",
+    "react-dom": "^19.0.0",
     "standard-version": "^9.5.0",
     "ts-jest": "^29.1.1",
     "tsconfig": "workspace:*",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 00c7555..a10a731 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -52,16 +52,16 @@ importers:
     dependencies:
       '@docsearch/react':
         specifier: ^3.5.2
-        version: 3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.8.2)
+        version: 3.5.2(@algolia/client-search@4.20.0)(@types/react@19.0.1)(react-dom@19.0.0)(react@19.0.0)(search-insights@2.8.2)
       '@headlessui/react':
         specifier: ^1.7.17
-        version: 1.7.17(react-dom@18.2.0)(react@18.2.0)
+        version: 1.7.17(react-dom@19.0.0)(react@19.0.0)
       '@markdoc/markdoc':
         specifier: ^0.3.2
-        version: 0.3.2(@types/react@18.2.21)(react@18.2.0)
+        version: 0.3.2(@types/react@19.0.1)(react@19.0.0)
       '@markdoc/next.js':
         specifier: ^0.3.3
-        version: 0.3.3(@markdoc/markdoc@0.3.2)(next@13.4.19)(react@18.2.0)
+        version: 0.3.3(@markdoc/markdoc@0.3.2)(next@13.4.19)(react@19.0.0)
       '@sindresorhus/slugify':
         specifier: ^2.2.1
         version: 2.2.1
@@ -73,16 +73,16 @@ importers:
         version: 5.2.0
       next:
         specifier: ^13.4.19
-        version: 13.4.19(@babel/core@7.22.19)(react-dom@18.2.0)(react@18.2.0)
+        version: 13.4.19(@babel/core@7.22.19)(react-dom@19.0.0)(react@19.0.0)
       prism-react-renderer:
         specifier: ^2.0.6
-        version: 2.0.6(react@18.2.0)
+        version: 2.0.6(react@19.0.0)
       react:
-        specifier: ^18.2.0
-        version: 18.2.0
+        specifier: ^19.0.0
+        version: 19.0.0
       react-dom:
-        specifier: ^18.2.0
-        version: 18.2.0(react@18.2.0)
+        specifier: ^19.0.0
+        version: 19.0.0(react@19.0.0)
     devDependencies:
       '@algolia/client-search':
         specifier: ^4.20.0
@@ -91,11 +91,11 @@ importers:
         specifier: ^0.5.10
         version: 0.5.10(tailwindcss@3.3.3)
       '@types/react':
-        specifier: ^18.2.21
-        version: 18.2.21
+        specifier: ^19.0.0
+        version: 19.0.1
       '@types/react-dom':
-        specifier: ^18.2.7
-        version: 18.2.7
+        specifier: ^19.0.0
+        version: 19.0.1
       autoprefixer:
         specifier: ^10.4.15
         version: 10.4.15(postcss@8.4.29)
@@ -128,23 +128,23 @@ importers:
     dependencies:
       next:
         specifier: ^13.4.19
-        version: 13.4.19(@babel/core@7.22.19)(react-dom@18.2.0)(react@18.2.0)
+        version: 13.4.19(@babel/core@7.22.19)(react-dom@19.0.0)(react@19.0.0)
       next-api-handler:
         specifier: workspace:*
         version: link:../../packages/next-api-handler
       react:
-        specifier: ^18.2.0
-        version: 18.2.0
+        specifier: ^19.0.0
+        version: 19.0.0
       react-dom:
-        specifier: ^18.2.0
-        version: 18.2.0(react@18.2.0)
+        specifier: ^19.0.0
+        version: 19.0.0(react@19.0.0)
     devDependencies:
       '@types/node':
         specifier: ^20.6.0
         version: 20.6.0
       '@types/react':
-        specifier: ^18.2.21
-        version: 18.2.21
+        specifier: ^19.0.0
+        version: 19.0.1
       cypress:
         specifier: ^13.2.0
         version: 13.2.0
@@ -226,7 +226,7 @@ importers:
         version: 4.0.1(jest@29.7.0)
       next:
         specifier: ^13.4.19
-        version: 13.4.19(@babel/core@7.22.19)(react-dom@18.2.0)(react@18.2.0)
+        version: 13.4.19(@babel/core@7.22.19)(react-dom@19.0.0)(react@19.0.0)
       next-test-api-route-handler:
         specifier: ^3.1.8
         version: 3.1.8(next@13.4.19)
@@ -237,11 +237,11 @@ importers:
         specifier: ^7.2.0
         version: 7.2.0
       react:
-        specifier: ^18.2.0
-        version: 18.2.0
+        specifier: ^19.0.0
+        version: 19.0.0
       react-dom:
-        specifier: ^18.2.0
-        version: 18.2.0(react@18.2.0)
+        specifier: ^19.0.0
+        version: 19.0.0(react@19.0.0)
       standard-version:
         specifier: ^9.5.0
         version: 9.5.0
@@ -1231,7 +1231,7 @@ packages:
     resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==}
     dev: false
 
-  /@docsearch/react@3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.8.2):
+  /@docsearch/react@3.5.2(@algolia/client-search@4.20.0)(@types/react@19.0.1)(react-dom@19.0.0)(react@19.0.0)(search-insights@2.8.2):
     resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==}
     peerDependencies:
       '@types/react': '>= 16.8.0 < 19.0.0'
@@ -1251,10 +1251,10 @@ packages:
       '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.8.2)
       '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)
       '@docsearch/css': 3.5.2
-      '@types/react': 18.2.21
+      '@types/react': 19.0.1
       algoliasearch: 4.20.0
-      react: 18.2.0
-      react-dom: 18.2.0(react@18.2.0)
+      react: 19.0.0
+      react-dom: 19.0.0(react@19.0.0)
       search-insights: 2.8.2
     transitivePeerDependencies:
       - '@algolia/client-search'
@@ -1501,7 +1501,7 @@ packages:
       '@hapi/hoek': 9.3.0
     dev: true
 
-  /@headlessui/react@1.7.17(react-dom@18.2.0)(react@18.2.0):
+  /@headlessui/react@1.7.17(react-dom@19.0.0)(react@19.0.0):
     resolution: {integrity: sha512-4am+tzvkqDSSgiwrsEpGWqgGo9dz8qU5M3znCkC4PgkpY4HcCZzEDEvozltGGGHIKl9jbXbZPSH5TWn4sWJdow==}
     engines: {node: '>=10'}
     peerDependencies:
@@ -1509,8 +1509,8 @@ packages:
       react-dom: ^16 || ^17 || ^18
     dependencies:
       client-only: 0.0.1
-      react: 18.2.0
-      react-dom: 18.2.0(react@18.2.0)
+      react: 19.0.0
+      react-dom: 19.0.0(react@19.0.0)
     dev: false
 
   /@humanwhocodes/config-array@0.11.11:
@@ -1797,7 +1797,7 @@ packages:
       '@jridgewell/sourcemap-codec': 1.4.15
     dev: true
 
-  /@markdoc/markdoc@0.3.2(@types/react@18.2.21)(react@18.2.0):
+  /@markdoc/markdoc@0.3.2(@types/react@19.0.1)(react@19.0.0):
     resolution: {integrity: sha512-D0SaanaSkTIARvQu+zQqPEpKcvYUBR/mfac9e8JzS89P7eXhiNWPonUN7avRS1saZHpIQWIRote97qT+jGk5Gw==}
     engines: {node: '>=14.7.0'}
     peerDependencies:
@@ -1809,23 +1809,23 @@ packages:
       react:
         optional: true
     dependencies:
-      '@types/react': 18.2.21
-      react: 18.2.0
+      '@types/react': 19.0.1
+      react: 19.0.0
     optionalDependencies:
       '@types/markdown-it': 12.2.3
     dev: false
 
-  /@markdoc/next.js@0.3.3(@markdoc/markdoc@0.3.2)(next@13.4.19)(react@18.2.0):
+  /@markdoc/next.js@0.3.3(@markdoc/markdoc@0.3.2)(next@13.4.19)(react@19.0.0):
     resolution: {integrity: sha512-BmrEv76DiGpybTUzDNl6cQNZq7n4rQ+G4AWmpd/+2VlwVTgpT0M165No+Rl4Z3TEeaM66c54n4TdyRh/yY2YwA==}
     peerDependencies:
       '@markdoc/markdoc': '*'
       next: '*'
       react: '*'
     dependencies:
-      '@markdoc/markdoc': 0.3.2(@types/react@18.2.21)(react@18.2.0)
+      '@markdoc/markdoc': 0.3.2(@types/react@19.0.1)(react@19.0.0)
       js-yaml: 4.1.0
-      next: 13.4.19(@babel/core@7.22.19)(react-dom@18.2.0)(react@18.2.0)
-      react: 18.2.0
+      next: 13.4.19(@babel/core@7.22.19)(react-dom@19.0.0)(react@19.0.0)
+      react: 19.0.0
     dev: false
 
   /@next/env@13.4.19:
@@ -2129,25 +2129,17 @@ packages:
     resolution: {integrity: sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==}
     dev: false
 
-  /@types/prop-types@15.7.5:
-    resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
-
-  /@types/react-dom@18.2.7:
-    resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==}
+  /@types/react-dom@19.0.1:
+    resolution: {integrity: sha512-hljHij7MpWPKF6u5vojuyfV0YA4YURsQG7KT6SzV0Zs2BXAtgdTxG6A229Ub/xiWV4w/7JL8fi6aAyjshH4meA==}
     dependencies:
-      '@types/react': 18.2.21
+      '@types/react': 19.0.1
     dev: true
 
-  /@types/react@18.2.21:
-    resolution: {integrity: sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==}
+  /@types/react@19.0.1:
+    resolution: {integrity: sha512-YW6614BDhqbpR5KtUYzTA+zlA7nayzJRA9ljz9CQoxthR0sDisYZLuvSMsil36t4EH/uAt8T52Xb4sVw17G+SQ==}
     dependencies:
-      '@types/prop-types': 15.7.5
-      '@types/scheduler': 0.16.3
       csstype: 3.1.2
 
-  /@types/scheduler@0.16.3:
-    resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==}
-
   /@types/semver@7.5.2:
     resolution: {integrity: sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==}
     dev: false
@@ -6557,6 +6549,7 @@ packages:
     hasBin: true
     dependencies:
       js-tokens: 4.0.0
+    dev: false
 
   /lru-cache@5.1.1:
     resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
@@ -6766,13 +6759,13 @@ packages:
       next: '>=9'
     dependencies:
       cookie: 0.5.0
-      next: 13.4.19(@babel/core@7.22.19)(react-dom@18.2.0)(react@18.2.0)
+      next: 13.4.19(@babel/core@7.22.19)(react-dom@19.0.0)(react@19.0.0)
       node-fetch: 2.7.0
     transitivePeerDependencies:
       - encoding
     dev: true
 
-  /next@13.4.19(@babel/core@7.22.19)(react-dom@18.2.0)(react@18.2.0):
+  /next@13.4.19(@babel/core@7.22.19)(react-dom@19.0.0)(react@19.0.0):
     resolution: {integrity: sha512-HuPSzzAbJ1T4BD8e0bs6B9C1kWQ6gv8ykZoRWs5AQoiIuqbGHHdQO7Ljuvg05Q0Z24E2ABozHe6FxDvI6HfyAw==}
     engines: {node: '>=16.8.0'}
     hasBin: true
@@ -6792,9 +6785,9 @@ packages:
       busboy: 1.6.0
       caniuse-lite: 1.0.30001534
       postcss: 8.4.14
-      react: 18.2.0
-      react-dom: 18.2.0(react@18.2.0)
-      styled-jsx: 5.1.1(@babel/core@7.22.19)(react@18.2.0)
+      react: 19.0.0
+      react-dom: 19.0.0(react@19.0.0)
+      styled-jsx: 5.1.1(@babel/core@7.22.19)(react@19.0.0)
       watchpack: 2.4.0
       zod: 3.21.4
     optionalDependencies:
@@ -7490,14 +7483,14 @@ packages:
       react-is: 18.2.0
     dev: true
 
-  /prism-react-renderer@2.0.6(react@18.2.0):
+  /prism-react-renderer@2.0.6(react@19.0.0):
     resolution: {integrity: sha512-ERzmAI5UvrcTw5ivfEG20/dYClAsC84eSED5p9X3oKpm0xPV4A5clFK1mp7lPIdKmbLnQYsPTGiOI7WS6gWigw==}
     peerDependencies:
       react: '>=16.0.0'
     dependencies:
       '@types/prismjs': 1.26.0
       clsx: 1.2.1
-      react: 18.2.0
+      react: 19.0.0
     dev: false
 
   /process-nextick-args@2.0.1:
@@ -7596,14 +7589,13 @@ packages:
     engines: {node: '>=12'}
     dev: true
 
-  /react-dom@18.2.0(react@18.2.0):
-    resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
+  /react-dom@19.0.0(react@19.0.0):
+    resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==}
     peerDependencies:
-      react: ^18.2.0
+      react: ^19.0.0
     dependencies:
-      loose-envify: 1.4.0
-      react: 18.2.0
-      scheduler: 0.23.0
+      react: 19.0.0
+      scheduler: 0.25.0
 
   /react-is@16.13.1:
     resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
@@ -7613,11 +7605,9 @@ packages:
     resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
     dev: true
 
-  /react@18.2.0:
-    resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
+  /react@19.0.0:
+    resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==}
     engines: {node: '>=0.10.0'}
-    dependencies:
-      loose-envify: 1.4.0
 
   /read-cache@1.0.0:
     resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
@@ -7924,10 +7914,8 @@ packages:
     resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
     dev: true
 
-  /scheduler@0.23.0:
-    resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
-    dependencies:
-      loose-envify: 1.4.0
+  /scheduler@0.25.0:
+    resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==}
 
   /search-insights@2.8.2:
     resolution: {integrity: sha512-PxA9M5Q2bpBelVvJ3oDZR8nuY00Z6qwOxL53wNpgzV28M/D6u9WUbImDckjLSILBF8F1hn/mgyuUaOPtjow4Qw==}
@@ -8359,7 +8347,7 @@ packages:
     resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==}
     dev: true
 
-  /styled-jsx@5.1.1(@babel/core@7.22.19)(react@18.2.0):
+  /styled-jsx@5.1.1(@babel/core@7.22.19)(react@19.0.0):
     resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
     engines: {node: '>= 12.0.0'}
     peerDependencies:
@@ -8374,7 +8362,7 @@ packages:
     dependencies:
       '@babel/core': 7.22.19
       client-only: 0.0.1
-      react: 18.2.0
+      react: 19.0.0
 
   /sucrase@3.34.0:
     resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==}