T
TanStack4mo ago
genetic-orange

Getting headers inside of an SSR component

import { useEffect, useState } from "react";

export function useShortcutKey() {
const [shortcutKey, setShortcutKey] = useState("Ctrl");

useEffect(() => {
const isMacOs = !!navigator?.userAgent?.match(/Macintosh;/);
setShortcutKey(isMacOs ? "⌘" : "Ctrl");
}, []);

return shortcutKey;
}
import { useEffect, useState } from "react";

export function useShortcutKey() {
const [shortcutKey, setShortcutKey] = useState("Ctrl");

useEffect(() => {
const isMacOs = !!navigator?.userAgent?.match(/Macintosh;/);
setShortcutKey(isMacOs ? "⌘" : "Ctrl");
}, []);

return shortcutKey;
}
is there a way to support this as an ssr component?
2 Replies
xenial-black
xenial-black4mo ago
You can get user agent from request header from the server
import { createIsomorphicFn } from '@tanstack/react-start';

const getUserAgent = createIsomorphicFn()
.client(() => navigator.userAgent)
.server(() => getRequestHeader("user-agent"))

export function useShortcutKey() {
const [userAgent] = useState(getUserAgent);

return !!userAgent?.match(/Macintosh;/) ? "⌘" : "Ctrl";
}
import { createIsomorphicFn } from '@tanstack/react-start';

const getUserAgent = createIsomorphicFn()
.client(() => navigator.userAgent)
.server(() => getRequestHeader("user-agent"))

export function useShortcutKey() {
const [userAgent] = useState(getUserAgent);

return !!userAgent?.match(/Macintosh;/) ? "⌘" : "Ctrl";
}
pardon me, I missed putting import { getRequestHeader } from '@tanstack/react-start/server' in my code
genetic-orange
genetic-orangeOP4mo ago
thanks you! thats a great help

Did you find this page helpful?