diff --git a/docs/demo/scopedForm.md b/docs/demo/scopedForm.md
new file mode 100644
index 00000000..f3db51fc
--- /dev/null
+++ b/docs/demo/scopedForm.md
@@ -0,0 +1,3 @@
+## scopedForm
+
+
diff --git a/docs/examples/scopedForm.tsx b/docs/examples/scopedForm.tsx
new file mode 100644
index 00000000..216dac4f
--- /dev/null
+++ b/docs/examples/scopedForm.tsx
@@ -0,0 +1,162 @@
+import React from 'react';
+import Form from 'rc-field-form';
+import Input from './components/Input';
+import { isEqual } from 'lodash';
+
+const ChildrenContent = (props: { name: number }) => {
+
+ const { name } = props;
+
+ const scopedForm = Form.useFormInstance({ scoped: true });
+ const college = Form.useWatch([name, 'college'], scopedForm);
+ const location = Form.useWatch([name, 'location'], { scoped: true });
+ const [, forceUpdate] = React.useState({});
+
+ React.useEffect(() => {
+ scopedForm.setFieldValue([name, 'nonexistent'], 'nonexistent');
+ }, [scopedForm, name]);
+
+ return (
+
+
+
+
+
+ {college}
+
+
+
+
+
+ {location}
+
+
+
+
+
+ Checked
+
+
+
+ {
+ () => {
+ if (scopedForm.getFieldValue([name, 'field0'])) {
+ return (
+
+
+
+ );
+ }
+ return null;
+ }
+ }
+
+
+
+
+
+
+ {`scopedForm.getFieldsValue({strict: true }):`}
+ {`${JSON.stringify(scopedForm.getFieldsValue({ strict: true }))}`}
+
+
+ scopedForm.getFieldsValue():
+ {`${JSON.stringify(scopedForm.getFieldsValue())}`}
+
+
+ {`scopedForm.getFieldValue([name, 'location']):`}
+ {`${JSON.stringify(scopedForm.getFieldValue([name, 'location']))}`}
+
+
+ {`scopedForm.getFieldValue([name, 'nonexistent']):`}
+ {`${JSON.stringify(scopedForm.getFieldValue([name, 'nonexistent']))}`}
+
+
+ {`scopedForm.getFieldsValue({ strict: true, filter: meta => isEqual(meta.name, [name, 'location']) }):`}
+ {`${JSON.stringify(scopedForm.getFieldsValue({ strict: true, filter: meta => isEqual(meta.name, [name, 'location']) }))}`}
+
+
+ {`scopedForm.getFieldsValue(true, meta => isEqual(meta.name, [name, 'location'])):`}
+ {`${JSON.stringify(scopedForm.getFieldsValue(true, meta => isEqual(meta.name, [name, 'location'])))}`}
+
+
+ {`scopedForm.isFieldsTouched(true):`}
+ {`${JSON.stringify(scopedForm.isFieldsTouched(true))}`}
+
+
+ {`scopedForm.isFieldsTouched():`}
+ {`${JSON.stringify(scopedForm.isFieldsTouched())}`}
+
+
+ );
+};
+
+export default () => {
+ const [form] = Form.useForm();
+ console.log('rootForm', form);
+
+ return (
+