diff --git a/src/docs/guide/usage/linter/generated-rules.md b/src/docs/guide/usage/linter/generated-rules.md
index 71cd2f07c7..6e66906758 100644
--- a/src/docs/guide/usage/linter/generated-rules.md
+++ b/src/docs/guide/usage/linter/generated-rules.md
@@ -2,7 +2,7 @@
The progress of all rule implementations is tracked [here](https://github.com/oxc-project/oxc/issues/481).
-- Total number of rules: 528
+- Total number of rules: 530
- Rules turned on by default: 88
**Legend for 'Fixable?' column:**
@@ -290,7 +290,7 @@ Lints which prevent the use of language and library features. Must not be enable
| [prefer-node-protocol](/docs/guide/usage/linter/rules/unicorn/prefer-node-protocol.html) | unicorn | | 🛠️ |
| [prefer-number-properties](/docs/guide/usage/linter/rules/unicorn/prefer-number-properties.html) | unicorn | | ⚠️🛠️️ |
-## Suspicious (33):
+## Suspicious (35):
code that is most likely wrong or useless.
@@ -323,6 +323,8 @@ code that is most likely wrong or useless.
| [style-prop-object](/docs/guide/usage/linter/rules/react/style-prop-object.html) | react | | |
| [no-confusing-non-null-assertion](/docs/guide/usage/linter/rules/typescript/no-confusing-non-null-assertion.html) | typescript | | 🚧 |
| [no-extraneous-class](/docs/guide/usage/linter/rules/typescript/no-extraneous-class.html) | typescript | | ⚠️💡 |
+| [no-floating-promises](/docs/guide/usage/linter/rules/typescript/no-floating-promises.html) | typescript | | 🚧 |
+| [no-misused-promises](/docs/guide/usage/linter/rules/typescript/no-misused-promises.html) | typescript | | 🚧 |
| [no-unnecessary-type-constraint](/docs/guide/usage/linter/rules/typescript/no-unnecessary-type-constraint.html) | typescript | | |
| [consistent-function-scoping](/docs/guide/usage/linter/rules/unicorn/consistent-function-scoping.html) | unicorn | | 🚧 |
| [no-accessor-recursion](/docs/guide/usage/linter/rules/unicorn/no-accessor-recursion.html) | unicorn | | |
diff --git a/src/docs/guide/usage/linter/rules/typescript/no-floating-promises.md b/src/docs/guide/usage/linter/rules/typescript/no-floating-promises.md
new file mode 100644
index 0000000000..829bd55c65
--- /dev/null
+++ b/src/docs/guide/usage/linter/rules/typescript/no-floating-promises.md
@@ -0,0 +1,105 @@
+
+
+
+
+# typescript/no-floating-promises
+
+
+
+### What it does
+
+This rule disallows "floating" Promises in TypeScript code, which is a Promise that is created without any code to handle its resolution or rejection.
+
+This rule will report Promise-valued statements that are not treated in one of the following ways:
+
+- Calling its `.then()` with two arguments
+- Calling its `.catch()` with one argument
+- `await`ing it
+- `return`ing it
+- `void`ing it
+
+This rule also reports when an Array containing Promises is created and not properly handled. The main way to resolve this is by using one of the Promise concurrency methods to create a single Promise, then handling that according to the procedure above. These methods include:
+
+- `Promise.all()`
+- `Promise.allSettled()`
+- `Promise.any()`
+- `Promise.race()`
+
+### Why is this bad?
+
+Floating Promises can cause several issues, such as improperly sequenced operations, ignored Promise rejections, and more.
+
+### Examples
+
+Examples of **incorrect** code for this rule:
+
+```ts
+const promise = new Promise((resolve, reject) => resolve("value"));
+promise;
+
+async function returnsPromise() {
+ return "value";
+}
+returnsPromise().then(() => {});
+
+Promise.reject("value").catch();
+
+Promise.reject("value").finally();
+
+[1, 2, 3].map(async x => x + 1);
+```
+
+Examples of **correct** code for this rule:
+
+```ts
+const promise = new Promise((resolve, reject) => resolve("value"));
+await promise;
+
+async function returnsPromise() {
+ return "value";
+}
+
+void returnsPromise();
+
+returnsPromise().then(
+ () => {},
+ () => {},
+);
+
+Promise.reject("value").catch(() => {});
+
+await Promise.reject("value").finally(() => {});
+
+await Promise.all([1, 2, 3].map(async x => x + 1));
+```
+
+## How to use
+
+To **enable** this rule in the CLI or using the config file, you can use:
+
+::: code-group
+
+```bash [CLI]
+oxlint --deny typescript/no-floating-promises
+```
+
+```json [Config (.oxlintrc.json)]
+{
+ "rules": {
+ "typescript/no-floating-promises": "error"
+ }
+}
+```
+
+:::
+
+## References
+
+- Rule Source
diff --git a/src/docs/guide/usage/linter/rules/typescript/no-misused-promises.md b/src/docs/guide/usage/linter/rules/typescript/no-misused-promises.md
new file mode 100644
index 0000000000..f3f87cf4b5
--- /dev/null
+++ b/src/docs/guide/usage/linter/rules/typescript/no-misused-promises.md
@@ -0,0 +1,86 @@
+
+
+
+
+# typescript/no-misused-promises
+
+
+
+### What it does
+
+This rule forbids providing Promises to logical locations such as if statements in places where the TypeScript compiler allows them but they are not handled properly. These situations can often arise due to a missing await keyword or just a misunderstanding of the way async functions are handled/awaited.
+
+### Why is this bad?
+
+Misused promises can cause crashes or other unexpected behavior, unless there are possibly some global unhandled promise handlers registered.
+
+### Examples
+
+Examples of **incorrect** code for this rule:
+
+```ts
+// Promises in conditionals:
+const promise = Promise.resolve("value");
+if (promise) {
+ // Do something
+}
+
+// Promises where `void` return was expected:
+[1, 2, 3].forEach(async value => {
+ await fetch(`/${value}`);
+});
+
+// Spreading Promises:
+const getData = () => fetch("/");
+console.log({ foo: 42, ...getData() });
+```
+
+Examples of **correct** code for this rule:
+
+```ts
+// Awaiting the Promise to get its value in a conditional:
+const promise = Promise.resolve("value");
+if (await promise) {
+ // Do something
+}
+
+// Using a `for-of` with `await` inside (instead of `forEach`):
+for (const value of [1, 2, 3]) {
+ await fetch(`/${value}`);
+}
+
+// Spreading data returned from Promise, instead of the Promise itself:
+const getData = () => fetch("/");
+console.log({ foo: 42, ...(await getData()) });
+```
+
+## How to use
+
+To **enable** this rule in the CLI or using the config file, you can use:
+
+::: code-group
+
+```bash [CLI]
+oxlint --deny typescript/no-misused-promises
+```
+
+```json [Config (.oxlintrc.json)]
+{
+ "rules": {
+ "typescript/no-misused-promises": "error"
+ }
+}
+```
+
+:::
+
+## References
+
+- Rule Source
diff --git a/src/docs/guide/usage/linter/rules/version.data.js b/src/docs/guide/usage/linter/rules/version.data.js
index 34ee7e0e32..8b67cbbeaf 100644
--- a/src/docs/guide/usage/linter/rules/version.data.js
+++ b/src/docs/guide/usage/linter/rules/version.data.js
@@ -1,5 +1,5 @@
export default {
load() {
- return "5f74a0b16069469fcb284b69fc13223edd0b4316";
+ return "2f8fc31c46ee254a8461ca6eb749442b668f2807";
},
};