diff --git a/packages/core/createReusableTemplate/index.md b/packages/core/createReusableTemplate/index.md
new file mode 100644
index 00000000000..d6b3b622a53
--- /dev/null
+++ b/packages/core/createReusableTemplate/index.md
@@ -0,0 +1,198 @@
+---
+category: Component
+outline: deep
+---
+
+# createReusableTemplate
+
+Define and reuse template inside the component scope.
+
+## Motivation
+
+It's common to have the need to reuse some part of the template. For example:
+
+```html
+
+
+
+
+
+
+```
+
+We'd like to reuse our code as much as possible. So normally we might need to extract those duplicated parts into a component. However, in a separated component you lose the ability to access the local bindings. Defining props and emits for them can be tedious sometime.
+
+So this function is made to provide a way for defining and reusing templates inside the component scope.
+
+## Usage
+
+In the previous example, we could refactor it to:
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+- `` will register the template and renders nothing.
+- `` will render the template provided by ``.
+- `` must be used before ``.
+
+> **Note**: It's recommanded to extract as separate components whenever possible. Abusing this function might lead to bad practices for your codebase.
+
+### Passing Data
+
+You can also pass data to the template using slots:
+
+- Use `v-slot="..."` to access the data on ``
+- Directly bind the data on `` to pass them to the template
+
+```html
+
+
+
+
+
{{ data }} passed from usage
+
+
+
+
+
+
+```
+
+### TypeScript Support
+
+`createReusableTemplate` accepts a generic type to provide type support for the data passed to the template:
+
+```html
+
+
+
+
+
+
Hello {{ msg.toUpperCase() }}
+
+
+
+
+
+
+
+```
+
+Optionally, if you are not a fan of array destructuring, the following usages are also legal:
+
+```html
+
+
+
+
+
Hello {{ msg.toUpperCase() }}
+
+
+
+
+```
+
+```html
+
+
+
+
+
Hello {{ msg.toUpperCase() }}
+
+
+
+
+```
+
+::: info
+Dot notation is not supported in Vue 2.
+:::
+
+### Passing Slots
+
+It's also possible to pass slots back from ``. You can access the slots on `` from `$slots`:
+
+```html
+
+
+
+
+