© 2026 Hedgehog Software, LLC
utils/app.ts
const getBaseUrl = () => { if (typeof window !== "undefined") return ""; // browser should use relative url if (process.env.VERCEL_URL) return `https://${process.env.VERCEL_URL}`; // SSR should use vercel url return `http://localhost:${process.env.PORT ?? 3000}`; // dev SSR should use localhost }; function getEndingLink() { if (typeof window === "undefined") { return httpBatchLink({ url: `${getBaseUrl()}/api/trpc`, }); } const client = createWSClient({ url: "ws://localhost:3001", }); return wsLink<AppRouter>({ client, }); } /** A set of type-safe react-query hooks for your tRPC API. */ export const api = createTRPCNext<AppRouter>({ config({ ctx }) { return { transformer: superjson, links: [ loggerLink({ enabled: (opts) => process.env.NODE_ENV === "development" || (opts.direction === "down" && opts.result instanceof Error), }), getEndingLink(), ], queryClientConfig: { defaultOptions: { queries: { staleTime: 180000, cacheTime: 180000, retry: false, }, mutations: { retry: false, }, }, }, }; }, ssr: false, });