diff --git a/beta/public/images/docs/react-devtools-usedebugvalue.png b/beta/public/images/docs/react-devtools-usedebugvalue.png
new file mode 100644
index 00000000..85404431
Binary files /dev/null and b/beta/public/images/docs/react-devtools-usedebugvalue.png differ
diff --git a/beta/src/content/apis/react/useDebugValue.md b/beta/src/content/apis/react/useDebugValue.md
index 4880b090..fc65bc6b 100644
--- a/beta/src/content/apis/react/useDebugValue.md
+++ b/beta/src/content/apis/react/useDebugValue.md
@@ -1,22 +1,125 @@
---
-title: useDebugValue
+title: useContext
---
-
+
-This section is incomplete, please see the old docs for [useDebugValue.](https://reactjs.org/docs/hooks-reference.html#usedebugvalue)
+`useDebugValue` is a React Hook that lets you add a label to a custom Hook in [React DevTools.](/learn/react-developer-tools)
-
+```js
+useDebugValue(value, format?)
+```
+
-
+
-`useDebugValue` can be used to display a label for custom hooks in React DevTools.
+---
+
+## Usage {/*usage*/}
+
+### Adding a label to a custom Hook {/*adding-a-label-to-a-custom-hook*/}
+
+Call `useDebugValue` at the top level of your [custom Hook](/learn/reusing-logic-with-custom-hooks) to display a readable debug value for [React DevTools.](/learn/react-developer-tools)
+
+```js [[1, 5, "isOnline ? 'Online' : 'Offline'"]]
+import { useDebugValue } from 'react';
+
+function useOnlineStatus() {
+ // ...
+ useDebugValue(isOnline ? 'Online' : 'Offline');
+ // ...
+}
+```
+
+This gives components calling `useOnlineStatus` a label like `OnlineStatus: "Online"` when you inspect them:
+
+![A screenshot of React DevTools showing the debug value](/images/docs/react-devtools-usedebugvalue.png)
+
+Without the `useDebugValue` call, only the underlying data (in this example, `true`) would be displayed.
+
+
```js
-useDebugValue(value)
+import { useOnlineStatus } from './useOnlineStatus.js';
+
+function StatusBar() {
+ const isOnline = useOnlineStatus();
+ return {isOnline ? '✅ Online' : '❌ Disconnected'}
;
+}
+
+export default function App() {
+ return ;
+}
```
-
+```js useOnlineStatus.js active
+import { useSyncExternalStore, useDebugValue } from 'react';
+
+export function useOnlineStatus() {
+ const isOnline = useSyncExternalStore(subscribe, () => navigator.onLine, () => true);
+ useDebugValue(isOnline ? 'Online' : 'Offline');
+ return isOnline;
+}
+
+function subscribe(callback) {
+ window.addEventListener('online', callback);
+ window.addEventListener('offline', callback);
+ return () => {
+ window.removeEventListener('online', callback);
+ window.removeEventListener('offline', callback);
+ };
+}
+```
+
+
+
+
+
+We don't recommend adding debug values to every custom Hook. It's most valuable for custom Hooks that are part of shared libraries and that have a complex internal data structure that's difficult to inspect.
+
+
+
+---
+
+### Deferring formatting of a debug value {/*deferring-formatting-of-a-debug-value*/}
+
+You can also pass a formatting function as the second argument to `useDebugValue`:
+
+```js [[1, 1, "date", 18], [2, 1, "date.toDateString()"]]
+useDebugValue(date, date => date.toDateString());
+```
+
+Your formatting function will receive the debug value as a parameter and should return a formatted display value. When your component is inspected, React DevTools will call the formatting function and display its result.
+
+This lets you avoid running potentially expensive formatting logic unless the component is actually inspected. For example, if `date` is a Date value, this avoids calling `toDateString()` on it for every render of your component.
+
+---
+
+## Reference {/*reference*/}
+
+### `useDebugValue(value, format?)` {/*usedebugvaluevalue-format*/}
+
+Call `useContext` at the top level of your [custom Hook](/learn/reusing-logic-with-custom-hooks) to display a readable debug value:
+
+```js
+import { useDebugValue } from 'react';
+
+function useOnlineStatus() {
+ // ...
+ useDebugValue(isOnline ? 'Online' : 'Offline');
+ // ...
+}
+```
+
+[See more examples above.](#usage)
+
+#### Parameters {/*parameters*/}
+
+* `value`: The value you want to display in React DevTools. It can have any type.
+* **optional** `format`: A formatting function. When the component is inspected, React DevTools will call the formatting function with the `value` as the argument, and then display the returned formatted value (which may have any type). If you don't specify the formatting function, the original `value` itself will be displayed.
+
+#### Returns {/*returns*/}
+
+`useDebugValue` does not return anything.
-
diff --git a/beta/src/sidebarReference.json b/beta/src/sidebarReference.json
index 0965531d..6ea09fa3 100644
--- a/beta/src/sidebarReference.json
+++ b/beta/src/sidebarReference.json
@@ -87,8 +87,7 @@
},
{
"title": "useDebugValue",
- "path": "/apis/react/useDebugValue",
- "wip": true
+ "path": "/apis/react/useDebugValue"
},
{
"title": "useDeferredValue",