Skip to content

feat(i18n): preload SSR translations and localize SEO metadata - #166

Merged
mkayander merged 1 commit into
mainfrom
cursor/ssr-i18n-seo-8f0a
Aug 9, 2026
Merged

feat(i18n): preload SSR translations and localize SEO metadata#166
mkayander merged 1 commit into
mainfrom
cursor/ssr-i18n-seo-8f0a

Conversation

@mkayander

Copy link
Copy Markdown
Owner

Summary

Continues Instant Navigations groundwork after #165 by closing the SSR i18n gap on playground and profile, and localizing SEO metadata that was still hardcoded in English.

Changes

  • loadI18nServerProps / withI18nServerSideProps / localeFromContext — shared helpers in getI18nProps.ts for Pages Router SSR pages (mirrors existing static getI18nProps pattern).
  • createTranslationFunctions — server-side LL helpers for parameterized SEO strings in getServerSideProps.
  • Playground (pages/playground/[[...slug]].tsx) — preloads locale bundle on SSR; landing/project SEO titles and descriptions use SITE_SEO_* / PLAYGROUND_SEO_* keys.
  • Profile (pages/profile/[userId].tsx) — wraps gSSP with withI18nServerSideProps; <title> and meta description use LL.PROFILE() / LL.SITE_SEO_DESCRIPTION().
  • Home (pages/index.tsx) — replaces hardcoded English <title> with LL.SITE_SEO_TITLE() / LL.SITE_SEO_DESCRIPTION().
  • App pilot home — metadata now reads the same SEO keys via pilotPageMetadataFromTranslation.
  • TestsgetI18nProps.test.ts for locale resolution and SSR wrapper behavior.
  • DocsInstant-Navigations-TODO.md checklist updated.

New i18n keys (en only; other locales fall back via spread-from-en)

  • SITE_SEO_TITLE
  • SITE_SEO_DESCRIPTION
  • PLAYGROUND_SEO_TITLE
  • PLAYGROUND_PROJECT_SEO_DESCRIPTION

Verification

  • pnpm lint — pass
  • pnpm test — 442 tests pass

Still blocked (unchanged)

  • Next 16.3.x bump until Vercel Pages i18n API routing is fixed
  • Public App cutover / cacheComponents / unstable_instant until locale routing leaves next.config i18n
Open in Web Open in Cursor 

- Add loadI18nServerProps, withI18nServerSideProps, and localeFromContext
- Preload i18n in playground and profile getServerSideProps
- Add SITE_SEO_* and PLAYGROUND_SEO_* keys; use LL on home and profile
- Localize playground landing SEO via createTranslationFunctions on server
- Align App pilot home metadata with shared SEO translation keys
@vercel

vercel Bot commented Aug 9, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
dstruct Ready Ready Preview Aug 9, 2026 9:00pm

@mkayander
mkayander marked this pull request as ready for review August 9, 2026 21:02
@cursor

cursor Bot commented Aug 9, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@mkayander
mkayander merged commit 2b6fb72 into main Aug 9, 2026
6 checks passed
github-actions Bot pushed a commit that referenced this pull request Aug 9, 2026
# [1.381.0](v1.380.0...v1.381.0) (2026-08-09)

### Features

* **i18n:** preload SSR translations and localize SEO metadata ([#166](#166)) ([2b6fb72](2b6fb72))
@github-actions

github-actions Bot commented Aug 9, 2026

Copy link
Copy Markdown

🎉 This PR is included in version 1.381.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants