diff --git a/bincio/serve/server.py b/bincio/serve/server.py
index 3b992a4..b2a01e3 100644
--- a/bincio/serve/server.py
+++ b/bincio/serve/server.py
@@ -229,6 +229,11 @@ async def register(request: Request) -> JSONResponse:
(dd / handle / "activities").mkdir(parents=True, exist_ok=True)
(dd / handle / "edits").mkdir(parents=True, exist_ok=True)
+ # Update root manifest so the new user's shard is discoverable immediately
+ # (Astro dev re-evaluates getStaticPaths() on each request from this file)
+ from bincio.render.cli import _write_root_manifest
+ _write_root_manifest(dd)
+
token = create_session(_get_db(), handle)
resp = JSONResponse({"ok": True, "handle": handle})
_set_session_cookie(resp, token)
diff --git a/site/src/pages/u/[handle]/athlete/index.astro b/site/src/pages/u/[handle]/athlete/index.astro
index 16bd3d9..137186d 100644
--- a/site/src/pages/u/[handle]/athlete/index.astro
+++ b/site/src/pages/u/[handle]/athlete/index.astro
@@ -21,18 +21,29 @@ const athleteUrl = `${mergedBase}athlete.json`;
---