diff --git a/packages/@headlessui-react/README.md b/packages/@headlessui-react/README.md
index 264554d..7bb89e9 100644
--- a/packages/@headlessui-react/README.md
+++ b/packages/@headlessui-react/README.md
@@ -1246,3 +1246,129 @@ function MyListbox() {
| `active` | Boolean | Whether or not the option is the active/focused option in the list. |
| `selected` | Boolean | Whether or not the option is the selected option in the list. |
| `disabled` | Boolean | Whether or not the option is the disabled for keyboard navigation and ARIA purposes. |
+
+## Switch (Toggle)
+
+[View live demo on CodeSandbox](https://codesandbox.io/s/headlessuireact-switch-example-y40i1?file=/src/App.js)
+
+The `Switch` component and related child components are used to quickly build custom switch/toggle components that are fully accessible out of the box, including correct ARIA attribute management and robust keyboard support.
+
+- [Basic example](#basic-example-3)
+- [Using a custom label](#using-a-custom-label)
+- [Component API](#component-api-3)
+
+### Basic example
+
+Switches are built using the `Switch` component. Optionally you can also use the `Switch.Group` and `Switch.Label` components.
+
+```jsx
+import { useState } from 'react'
+import { Switch } from '@headlessui/react'
+
+function NotificationsToggle() {
+ const [enabled, setEnabled] = useState(false)
+
+ return (
+
+ Enable notifications
+
+
+ )
+}
+```
+
+### Using a custom label
+
+By default the `Switch` will use the contents as the label for screenreaders. If you need more control, you can render a `Switch.Label` outside of the `Switch`, as long as both the switch and label are within a parent `Switch.Group`.
+
+Clicking the label will toggle the switch state, like you'd expect from a native checkbox.
+
+```jsx
+import { useState } from 'react'
+import { Switch } from '@headlessui/react'
+
+function NotificationsToggle() {
+ const [enabled, setEnabled] = useState(false)
+
+ return (
+
+ Enable notifications
+
+
+
+
+ )
+}
+```
+
+### Component API
+
+#### Switch
+
+```jsx
+
+ Enable notifications
+ {/* ... */}
+
+```
+
+##### Props
+
+| Prop | Type | Default | Description |
+| ---------- | ----------------------- | --------------------------------------- | -------------------------------------------------------- |
+| `as` | String \| Component | `button` | The element or component the `Switch` should render as. |
+| `checked` | Boolean | | Whether or not the switch is checked. |
+| `onChange` | `(value: boolean): void` | | The function to call when the switch is toggled. |
+
+##### Render prop object
+
+| Prop | Type | Description |
+| ------ | ------- | ----------------------------------- |
+| `checked` | Boolean | Whether or not the switch is checked. |
+
+
+#### Switch.Label
+
+```jsx
+
+ Enable notifications
+
+ {/* ... */}
+
+
+```
+
+##### Props
+
+| Prop | Type | Default | Description |
+| ---------- | ----------------------- | --------------------------------------- | -------------------------------------------------------- |
+| `as` | String \| Component | `label` | The element or component the `Switch.Label` should render as. |
+
+#### Switch.Group
+
+```jsx
+
+ Enable notifications
+
+ {/* ... */}
+
+
+```
+
+##### Props
+
+| Prop | Type | Default | Description |
+| ---------- | ----------------------- | --------------------------------------- | -------------------------------------------------------- |
+| `as` | String \| Component | `React.Fragment` _(no wrapper element)_| The element or component the `Switch.Group` should render as. |
diff --git a/packages/@headlessui-vue/README.md b/packages/@headlessui-vue/README.md
index f84fdc8..8f79d30 100644
--- a/packages/@headlessui-vue/README.md
+++ b/packages/@headlessui-vue/README.md
@@ -1037,3 +1037,160 @@ export default {
| `active` | Boolean | Whether or not the option is the active/focused option in the list. |
| `selected` | Boolean | Whether or not the option is the selected option in the list. |
| `disabled` | Boolean | Whether or not the option is the disabled for keyboard navigation and ARIA purposes. |
+
+## Switch (Toggle)
+
+[View live demo on CodeSandbox](https://codesandbox.io/s/headlessuivue-switch-example-8ycp6?file=/src/App.vue)
+
+The `Switch` component and related child components are used to quickly build custom switch/toggle components that are fully accessible out of the box, including correct ARIA attribute management and robust keyboard support.
+
+- [Basic example](#basic-example-3)
+- [Using a custom label](#using-a-custom-label)
+- [Component API](#component-api-3)
+
+### Basic example
+
+Switches are built using the `Switch` component. Optionally you can also use the `SwitchGroup` and `SwitchLabel` components.
+
+```vue
+
+
+
+
+
+
+
+```
+
+### Using a custom label
+
+By default the `Switch` will use the contents as the label for screenreaders. If you need more control, you can render a `SwitchLabel` outside of the `Switch`, as long as both the switch and label are within a parent `SwitchGroup`.
+
+Clicking the label will toggle the switch state, like you'd expect from a native checkbox.
+
+```vue
+
+
+ Enable notifications
+
+
+
+
+
+
+
+
+```
+
+### Component API
+
+#### Switch
+
+```jsx
+
+ Enable notifications
+
+
+```
+
+##### Props
+
+| Prop | Type | Default | Description |
+| ---------- | ----------------------- | --------------------------------------- | -------------------------------------------------------- |
+| `as` | String \| Component | `button` | The element or component the `Switch` should render as. |
+| `v-model` | `T` | | The switch value. |
+
+##### Slot props
+
+| Prop | Type | Description |
+| ------ | ------- | ----------------------------------- |
+| `checked` | Boolean | Whether or not the switch is checked. |
+
+
+#### Switch.Label
+
+```jsx
+
+ Enable notifications
+
+
+
+
+```
+
+##### Props
+
+| Prop | Type | Default | Description |
+| ---------- | ----------------------- | --------------------------------------- | -------------------------------------------------------- |
+| `as` | String \| Component | `label` | The element or component the `SwitchLabel` should render as. |
+
+#### Switch.Group
+
+```jsx
+
+ Enable notifications
+
+
+
+
+```
+
+##### Props
+
+| Prop | Type | Default | Description |
+| ---------- | ----------------------- | --------------------------------------- | -------------------------------------------------------- |
+| `as` | String \| Component | `template` _(no wrapper element)_| The element or component the `SwitchGroup` should render as. |