Skip to main content

useFlashSession

The useFlashSession hook reads session data and subsequently clears it in server components.

Example code

src/component.server.jsx
import {Form, useFlashSession} from '@shopify/hydrogen/experimental';

export default function Login() {
const loginError = useFlashSession('loginError');

return (
<Form action="/login">
{loginError ? <div>Invalid user!</div> : null}
<input type="text" name="username" />
<input type="password" name="password" />
<button type="submit">Login</button>
</Form>
);
}

export async function api(request, {session}) {
const data = await request.formData();
const username = data.get('username');
const password = data.get('password');

const userId = await getUser(username, password);

if (!userId) {
await session.set('loginError', 'INVALID_USER');
return new Request('/login');
} else {
await session.set('userId', userId);
return new Request('/account');
}
}

Return value

The useFlashSession hook returns data from the session. It also clears that data so that it will be gone the next time that it's read.

Considerations

The useFlashSession hook is best used for form validation in the Form component.