--- title: usePrompt unstable: true --- # unstable_usePrompt [MODES: framework, data]

This API is experimental and subject to breaking changes in minor/patch releases. Please use with caution and pay **very** close attention to release notes for relevant changes. ## Summary [Reference Documentation ↗](https://api.reactrouter.com/v7/functions/react_router.unstable_usePrompt.html) Wrapper around [`useBlocker`](../hooks/useBlocker) to show a [`window.confirm`](https://developer.mozilla.org/en-US/docs/Web/API/Window/confirm) prompt to users instead of building a custom UI with [`useBlocker`](../hooks/useBlocker). The `unstable_` flag will not be removed because this technique has a lot of rough edges and behaves very differently (and incorrectly sometimes) across browsers if users click addition back/forward navigations while the confirmation is open. Use at your own risk. ```tsx function ImportantForm() { let [value, setValue] = React.useState(""); // Block navigating elsewhere when data has been entered into the input unstable_usePrompt({ message: "Are you sure?", when: ({ currentLocation, nextLocation }) => value !== "" && currentLocation.pathname !== nextLocation.pathname, }); return (
); } ``` ## Signature ```tsx function usePrompt({ when, message, }: { when: boolean | BlockerFunction; message: string; }): void ``` ## Params ### options.message The message to show in the confirmation dialog. ### options.when A boolean or a function that returns a boolean indicating whether to block the navigation. If a function is provided, it will receive an object with `currentLocation` and `nextLocation` properties. ## Returns No return value.