SSR can be tricky, mostly because every framework does things its own way. Loaders, lifecycles, hydration, serialization all behave a little differently depending on where you are, so wiring up something like i18next is rarely a copy-paste between frameworks. i18next has solid SSR support, but how you connect it still depends on the framework you're using.

This post focuses on TanStack Start specifically:

Detecting the user's preferred language on the server.

Initializing separate i18next instances for server and client.

Safely passing an i18next instance across the server-to-client boundary without things quietly breaking.