diff --git a/README.md b/README.md
index 1ab8d90..98a0567 100755
--- a/README.md
+++ b/README.md
@@ -77,6 +77,8 @@ Vue.use(VueCompositionAPI);
- [`useMedia`](./src/components/useMedia/stories/useMedia.md) — tracks state of a CSS media query.
[](https://microcipcip.github.io/vue-use-kit/?path=/story/sensors-usemedia--demo)
[](https://microcipcip.github.io/vue-use-kit/?path=/story/sensors-usemedia--advanced-demo)
+ - [`useMediaDevices`](./src/components/useMediaDevices/stories/useMediaDevices.md) — tracks connected hardware devices.
+ [](https://microcipcip.github.io/vue-use-kit/?path=/story/sensors-usemediadevices--demo)
- [`useMouse`](./src/components/useMouse/stories/useMouse.md) — tracks the mouse position.
[](https://microcipcip.github.io/vue-use-kit/?path=/story/sensors-usemouse--demo)
[](https://microcipcip.github.io/vue-use-kit/?path=/story/sensors-usemouse--advanced-demo)
diff --git a/src/components/useMediaDevices/index.ts b/src/components/useMediaDevices/index.ts
new file mode 100755
index 0000000..349f955
--- /dev/null
+++ b/src/components/useMediaDevices/index.ts
@@ -0,0 +1 @@
+export * from './useMediaDevices'
diff --git a/src/components/useMediaDevices/stories/UseMediaDevicesDemo.vue b/src/components/useMediaDevices/stories/UseMediaDevicesDemo.vue
new file mode 100755
index 0000000..ab8ab0d
--- /dev/null
+++ b/src/components/useMediaDevices/stories/UseMediaDevicesDemo.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
Prop
+
Value
+
+
+
+
+
devicesState
+
+
{{ JSON.stringify(devicesState, null, 2) }}
+
+
+
+
isTracked
+
{{ isTracked }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/useMediaDevices/stories/useMediaDevices.md b/src/components/useMediaDevices/stories/useMediaDevices.md
new file mode 100755
index 0000000..2bc5146
--- /dev/null
+++ b/src/components/useMediaDevices/stories/useMediaDevices.md
@@ -0,0 +1,71 @@
+# useMediaDevices
+
+Vue function that tracks connected hardware devices.
+
+## Reference
+
+```typescript
+interface UseMediaDevicesState {
+ deviceId: string
+ groupId: string
+ kind: string
+ label: string
+}
+
+function useMediaDevices(
+ runOnMount?: boolean
+): {
+ devicesState: Ref
+ isTracking: Ref
+ isTracked: Ref
+ start: () => void
+ stop: () => void
+}
+```
+
+### Parameters
+
+- `runOnMount: boolean` whether to run the connected media devices tracking on mount, `true` by default
+
+### Returns
+
+- `devicesState: Ref` the list of connected media devices
+- `isTracking: Ref` whether the function is tracking the connected media devices or not
+- `isTracked: Ref` whether the connected devices have been successfully tracked
+- `start: Function` the function used to start tracking the connected media devices
+- `stop: Function` the function used to stop tracking the connected media devices
+
+## Usage
+
+```html
+
+