diff --git a/packages/next-sample/package.json b/packages/next-sample/package.json
index 708242873..f749a7291 100644
--- a/packages/next-sample/package.json
+++ b/packages/next-sample/package.json
@@ -20,8 +20,8 @@
     "@silverhand/eslint-config-react": "^6.0.2",
     "@silverhand/ts-config": "^6.0.0",
     "@silverhand/ts-config-react": "^6.0.0",
-    "@types/react": "^18.2.56",
-    "@types/react-dom": "^18.2.19",
+    "@types/react": "^19.0.0",
+    "@types/react-dom": "^19.0.0",
     "@types/react-router-dom": "^5.3.3",
     "eslint": "^8.57.0",
     "lint-staged": "^15.0.0",
diff --git a/packages/next-server-actions-sample/package.json b/packages/next-server-actions-sample/package.json
index b393f7a06..0bfabefd1 100644
--- a/packages/next-server-actions-sample/package.json
+++ b/packages/next-server-actions-sample/package.json
@@ -18,8 +18,8 @@
     "@silverhand/ts-config": "^6.0.0",
     "@silverhand/ts-config-react": "^6.0.0",
     "@types/node": "^22.0.0",
-    "@types/react": "^18.2.56",
-    "@types/react-dom": "^18.2.19",
+    "@types/react": "^19.0.0",
+    "@types/react-dom": "^19.0.0",
     "eslint": "^8.50.0",
     "eslint-config-next": "^15.0.4",
     "lint-staged": "^15.0.0",
diff --git a/packages/react-sample/package.json b/packages/react-sample/package.json
index 695aeb336..c2cb19478 100644
--- a/packages/react-sample/package.json
+++ b/packages/react-sample/package.json
@@ -14,8 +14,8 @@
   "dependencies": {
     "@logto/react": "workspace:^",
     "@tanstack/react-query": "^5.0.0",
-    "react": "^18.2.0",
-    "react-dom": "^18.2.0",
+    "react": "^19.0.0",
+    "react-dom": "^19.0.0",
     "react-router-dom": "^6.2.2"
   },
   "devDependencies": {
@@ -25,8 +25,8 @@
     "@silverhand/eslint-config-react": "^6.0.2",
     "@silverhand/ts-config": "^6.0.0",
     "@silverhand/ts-config-react": "^6.0.0",
-    "@types/react": "^18.2.56",
-    "@types/react-dom": "^18.2.19",
+    "@types/react": "^19.0.0",
+    "@types/react-dom": "^19.0.0",
     "@types/react-router-dom": "^5.3.3",
     "buffer": "^6.0.3",
     "eslint": "^8.57.0",
diff --git a/packages/react/package.json b/packages/react/package.json
index 5c28fe997..74f1323b6 100644
--- a/packages/react/package.json
+++ b/packages/react/package.json
@@ -38,15 +38,15 @@
     "@silverhand/ts-config": "^6.0.0",
     "@silverhand/ts-config-react": "^6.0.0",
     "@testing-library/react": "^16.0.0",
-    "@types/react": "^18.2.56",
+    "@types/react": "^19.0.0",
     "@vitest/coverage-v8": "^2.1.9",
     "eslint": "^8.57.0",
     "happy-dom": "^16.0.0",
     "lint-staged": "^15.0.0",
     "postcss": "^8.4.31",
     "prettier": "^3.0.0",
-    "react": "^18.0.2",
-    "react-dom": "^18.0.2",
+    "react": "^19.0.0",
+    "react-dom": "^19.0.0",
     "stylelint": "^16.0.0",
     "typescript": "^5.3.3",
     "vitest": "^2.0.0"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 8b7a23147..10caa07f9 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -557,11 +557,11 @@ importers:
         specifier: ^6.0.0
         version: 6.0.0(typescript@5.3.3)
       '@types/react':
-        specifier: ^18.2.56
-        version: 18.2.56
+        specifier: ^19.0.0
+        version: 19.0.8
       '@types/react-dom':
-        specifier: ^18.2.19
-        version: 18.2.19
+        specifier: ^19.0.0
+        version: 19.0.3(@types/react@19.0.8)
       '@types/react-router-dom':
         specifier: ^5.3.3
         version: 5.3.3
@@ -612,11 +612,11 @@ importers:
         specifier: ^22.0.0
         version: 22.10.0
       '@types/react':
-        specifier: ^18.2.56
-        version: 18.2.56
+        specifier: ^19.0.0
+        version: 19.0.8
       '@types/react-dom':
-        specifier: ^18.2.19
-        version: 18.2.19
+        specifier: ^19.0.0
+        version: 19.0.3(@types/react@19.0.8)
       eslint:
         specifier: ^8.50.0
         version: 8.50.0
@@ -827,10 +827,10 @@ importers:
         version: 6.0.0(typescript@5.3.3)
       '@testing-library/react':
         specifier: ^16.0.0
-        version: 16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.2.19)(@types/react@18.2.56)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+        version: 16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.2.19)(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
       '@types/react':
-        specifier: ^18.2.56
-        version: 18.2.56
+        specifier: ^19.0.0
+        version: 19.0.8
       '@vitest/coverage-v8':
         specifier: ^2.1.9
         version: 2.1.9(vitest@2.1.9(@types/node@22.10.0)(happy-dom@16.7.2)(sass@1.58.0)(terser@5.36.0))
@@ -850,11 +850,11 @@ importers:
         specifier: ^3.0.0
         version: 3.0.0
       react:
-        specifier: ^18.0.2
-        version: 18.2.0
+        specifier: ^19.0.0
+        version: 19.0.0
       react-dom:
-        specifier: ^18.0.2
-        version: 18.2.0(react@18.2.0)
+        specifier: ^19.0.0
+        version: 19.0.0(react@19.0.0)
       stylelint:
         specifier: ^16.0.0
         version: 16.9.0(typescript@5.3.3)
@@ -872,16 +872,16 @@ importers:
         version: link:../react
       '@tanstack/react-query':
         specifier: ^5.0.0
-        version: 5.8.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+        version: 5.8.3(react-dom@19.0.0(react@19.0.0))(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)
       react-router-dom:
         specifier: ^6.2.2
-        version: 6.2.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+        version: 6.2.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
     devDependencies:
       '@parcel/core':
         specifier: ^2.9.2
@@ -902,11 +902,11 @@ importers:
         specifier: ^6.0.0
         version: 6.0.0(typescript@5.3.3)
       '@types/react':
-        specifier: ^18.2.56
-        version: 18.2.56
+        specifier: ^19.0.0
+        version: 19.0.8
       '@types/react-dom':
-        specifier: ^18.2.19
-        version: 18.2.19
+        specifier: ^19.0.0
+        version: 19.0.3(@types/react@19.0.8)
       '@types/react-router-dom':
         specifier: ^5.3.3
         version: 5.3.3
@@ -3642,9 +3642,6 @@ packages:
   '@types/passport@1.0.16':
     resolution: {integrity: sha512-FD0qD5hbPWQzaM0wHUnJ/T0BBCJBxCeemtnCwc/ThhTg3x9jfrAcRUmj5Dopza+MfFS9acTe3wk7rcVnRIp/0A==}
 
-  '@types/prop-types@15.7.4':
-    resolution: {integrity: sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==}
-
   '@types/qs@6.9.7':
     resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==}
 
@@ -3654,21 +3651,23 @@ packages:
   '@types/react-dom@18.2.19':
     resolution: {integrity: sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==}
 
+  '@types/react-dom@19.0.3':
+    resolution: {integrity: sha512-0Knk+HJiMP/qOZgMyNFamlIjw9OFCsyC2ZbigmEEyXXixgre6IQpm/4V+r3qH4GC1JPvRJKInw+on2rV6YZLeA==}
+    peerDependencies:
+      '@types/react': ^19.0.0
+
   '@types/react-router-dom@5.3.3':
     resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==}
 
   '@types/react-router@5.1.18':
     resolution: {integrity: sha512-YYknwy0D0iOwKQgz9v8nOzt2J6l4gouBmDnWqUUznltOTaon+r8US8ky8HvN0tXvc38U9m6z/t2RsVsnd1zM0g==}
 
-  '@types/react@18.2.56':
-    resolution: {integrity: sha512-NpwHDMkS/EFZF2dONFQHgkPRwhvgq/OAvIaGQzxGSBmaeR++kTg6njr15Vatz0/2VcCEwJQFi6Jf4Q0qBu0rLA==}
+  '@types/react@19.0.8':
+    resolution: {integrity: sha512-9P/o1IGdfmQxrujGbIMDyYaaCykhLKc0NGCtYcECNUr9UAaDe4gwvV9bR6tvd5Br1SG0j+PBpbKr2UYY8CwqSw==}
 
   '@types/resolve@1.20.2':
     resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
 
-  '@types/scheduler@0.16.2':
-    resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==}
-
   '@types/semver@7.5.1':
     resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==}
 
@@ -7997,11 +7996,6 @@ packages:
   rc9@2.1.2:
     resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==}
 
-  react-dom@18.2.0:
-    resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
-    peerDependencies:
-      react: ^18.2.0
-
   react-dom@19.0.0:
     resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==}
     peerDependencies:
@@ -8031,10 +8025,6 @@ packages:
     peerDependencies:
       react: '>=16.8'
 
-  react@18.2.0:
-    resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
-    engines: {node: '>=0.10.0'}
-
   react@19.0.0:
     resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==}
     engines: {node: '>=0.10.0'}
@@ -8248,9 +8238,6 @@ packages:
     engines: {node: '>=12.0.0'}
     hasBin: true
 
-  scheduler@0.23.0:
-    resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
-
   scheduler@0.25.0:
     resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==}
 
@@ -12278,12 +12265,12 @@ snapshots:
 
   '@tanstack/query-core@5.8.3': {}
 
-  '@tanstack/react-query@5.8.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
+  '@tanstack/react-query@5.8.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
     dependencies:
       '@tanstack/query-core': 5.8.3
-      react: 18.2.0
+      react: 19.0.0
     optionalDependencies:
-      react-dom: 18.2.0(react@18.2.0)
+      react-dom: 19.0.0(react@19.0.0)
 
   '@testing-library/dom@10.0.0':
     dependencies:
@@ -12296,14 +12283,14 @@ snapshots:
       lz-string: 1.5.0
       pretty-format: 27.5.1
 
-  '@testing-library/react@16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.2.19)(@types/react@18.2.56)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
+  '@testing-library/react@16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.2.19)(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
     dependencies:
       '@babel/runtime': 7.24.4
       '@testing-library/dom': 10.0.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)
     optionalDependencies:
-      '@types/react': 18.2.56
+      '@types/react': 19.0.8
       '@types/react-dom': 18.2.19
 
   '@trysound/sax@0.2.0': {}
@@ -12420,37 +12407,36 @@ snapshots:
     dependencies:
       '@types/express': 5.0.0
 
-  '@types/prop-types@15.7.4': {}
-
   '@types/qs@6.9.7': {}
 
   '@types/range-parser@1.2.4': {}
 
   '@types/react-dom@18.2.19':
     dependencies:
-      '@types/react': 18.2.56
+      '@types/react': 19.0.8
+    optional: true
+
+  '@types/react-dom@19.0.3(@types/react@19.0.8)':
+    dependencies:
+      '@types/react': 19.0.8
 
   '@types/react-router-dom@5.3.3':
     dependencies:
       '@types/history': 4.7.11
-      '@types/react': 18.2.56
+      '@types/react': 19.0.8
       '@types/react-router': 5.1.18
 
   '@types/react-router@5.1.18':
     dependencies:
       '@types/history': 4.7.11
-      '@types/react': 18.2.56
+      '@types/react': 19.0.8
 
-  '@types/react@18.2.56':
+  '@types/react@19.0.8':
     dependencies:
-      '@types/prop-types': 15.7.4
-      '@types/scheduler': 0.16.2
       csstype: 3.1.3
 
   '@types/resolve@1.20.2': {}
 
-  '@types/scheduler@0.16.2': {}
-
   '@types/semver@7.5.1': {}
 
   '@types/send@0.17.4':
@@ -17841,12 +17827,6 @@ snapshots:
       defu: 6.1.4
       destr: 2.0.3
 
-  react-dom@18.2.0(react@18.2.0):
-    dependencies:
-      loose-envify: 1.4.0
-      react: 18.2.0
-      scheduler: 0.23.0
-
   react-dom@19.0.0(react@19.0.0):
     dependencies:
       react: 19.0.0
@@ -17860,21 +17840,17 @@ snapshots:
 
   react-refresh@0.9.0: {}
 
-  react-router-dom@6.2.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0):
+  react-router-dom@6.2.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
     dependencies:
       history: 5.3.0
-      react: 18.2.0
-      react-dom: 18.2.0(react@18.2.0)
-      react-router: 6.2.2(react@18.2.0)
+      react: 19.0.0
+      react-dom: 19.0.0(react@19.0.0)
+      react-router: 6.2.2(react@19.0.0)
 
-  react-router@6.2.2(react@18.2.0):
+  react-router@6.2.2(react@19.0.0):
     dependencies:
       history: 5.3.0
-      react: 18.2.0
-
-  react@18.2.0:
-    dependencies:
-      loose-envify: 1.4.0
+      react: 19.0.0
 
   react@19.0.0: {}
 
@@ -18153,10 +18129,6 @@ snapshots:
       immutable: 4.2.3
       source-map-js: 1.0.2
 
-  scheduler@0.23.0:
-    dependencies:
-      loose-envify: 1.4.0
-
   scheduler@0.25.0: {}
 
   scule@1.3.0: {}