diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0c4f19f344..d625901c1a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -67,7 +67,9 @@ should change the heading of the (upcoming) version to include a major version b
- Updated the `ArrayFieldTemplateItemType` to add the new `totalItems` and `canAdd` props, fixing [#3315](https://github.com/rjsf-team/react-jsonschema-form/issues/3315)
## Dev / docs / playground
-- Fixed the documentation for `ArrayFieldItemTemplate`, `SubmitButtonProps` and `IconButtonProps` as part of the fix for [#3314](https://github.com/rjsf-team/react-jsonschema-form/issues/3314) and [#3315](https://github.com/rjsf-team/react-jsonschema-form/issues/3315)
+- Fixed the documentation for `ArrayFieldItemTemplate`, `SubmitButtonProps` and `IconButtonProps` as part of the fix for [#3314](https://github.com/rjsf-team/react-jsonschema-form/issues/3314) and [#3315](https://github.com/rjsf-team/react-jsonschema-form/issues/3315)
+- Updated the documentation in `form-props.md` for `children`, fixing [#3322](https://github.com/rjsf-team/react-jsonschema-form/issues/3322)
+- Added new `typescript.md` documentation to `Advanced Customization` describing how to use custom generics as part of the fix for [#3072](https://github.com/rjsf-team/react-jsonschema-form/issues/3072)
# 5.0.0-beta-15
diff --git a/docs/advanced-customization/custom-templates.md b/docs/advanced-customization/custom-templates.md
index 8f99ca150c..5ee3819a17 100644
--- a/docs/advanced-customization/custom-templates.md
+++ b/docs/advanced-customization/custom-templates.md
@@ -811,11 +811,10 @@ function WrapIfAdditionalTemplate(
onBlur={function (event) { onKeyChange(event.target.value) } }
defaultValue={label} />
{children}
-
-
+
);
}
diff --git a/docs/advanced-customization/typescript.md b/docs/advanced-customization/typescript.md
new file mode 100644
index 0000000000..bdbca8849f
--- /dev/null
+++ b/docs/advanced-customization/typescript.md
@@ -0,0 +1,273 @@
+# Typescript Support
+RJSF fully supports Typescript.
+The [types and functions](../api-reference/utility-functions.md) exported by `@rjsf/utils` are fully typed (as needed) using one or more of the following 3 optional generics:
+
+- `T = any`: This represents the type of the `formData` and defaults to `any`.
+- `S extends StrictRJSFSchema = RJSFSchema`: This represents the type of the `schema` and extends the `StrictRJSFSchema` type and defaults to the `RJSFSchema` type.
+- `F extends FormContextType = any`: This represents the type of the `formContext`, extends the `FormContextType` type and defaults to `any`.
+
+Every other library in the `@rjsf/*` ecosystem use these same generics in their functions and React component definitions.
+For instance, in the `@rjsf/core` library the definitions of the `Form` component and the `withTheme()` and `getDefaultRegistry()` functions are as follows:
+
+```ts
+export default class Form<
+ T = any,
+ S extends StrictRJSFSchema = RJSFSchema,
+ F extends FormContextType = any
+> extends Component, FormState> {
+// ... class implementation
+}
+
+export default function withTheme<
+ T = any,
+ S extends StrictRJSFSchema = RJSFSchema,
+ F extends FormContextType = any
+>(themeProps: ThemeProps) {
+// ... function implementation
+}
+
+export default function getDefaultRegistry<
+ T = any,
+ S extends StrictRJSFSchema = RJSFSchema,
+ F extends FormContextType = any
+ >(): Omit, "schemaUtils"> {
+// ... function implementation
+}
+```
+
+Out of the box, the defaults for these generics will work for all use-cases.
+Providing custom types for any of these generics may be useful for situations where the caller is working with typed `formData`, `schema` or `formContext` props, Typescript is complaining and type casting isn't allowed.
+
+## Overriding generics
+
+### T
+
+The generic `T` is used to represent the type of the `formData` property passed into `Form`.
+If you are working with a simple, unchanging JSON Schema and you have defined a type for the `formData` you are working with, you can override this generic as follows:
+
+```tsx
+import { RJSFSchema } from "@rjsf/utils";
+import { validator } from "@rjsf/validator-ajv8";
+import { Form } from "@rjsf/core";
+
+interface FormData {
+ foo?: string;
+ bar?: number;
+};
+
+const schema: RJSFSchema = {
+ type: "object",
+ properties: {
+ "foo": { type: "string" },
+ "bar": { type: "number" }
+ }
+};
+
+const formData: FormData = {};
+
+render((
+