diff --git a/api/article-og.ts b/api/article-og.ts
index 97ae71a6..a1617534 100644
--- a/api/article-og.ts
+++ b/api/article-og.ts
@@ -231,26 +231,38 @@ export default async function handler(req: VercelRequest, res: VercelResponse) {
return res.status(200).json(debugInfo)
}
- // If it's a regular browser (not a bot), serve index.html with base tag
- // The rewrite preserves the URL, so SPA routing will handle /a/{naddr}
+ // If it's a regular browser (not a bot), serve HTML that loads SPA
+ // Use history.replaceState to set the URL before the SPA boots
if (!isCrawlerRequest) {
- const fs = await import('fs')
- const path = await import('path')
- // eslint-disable-next-line no-undef
- const indexPath = path.join(process.cwd(), 'dist', 'index.html')
-
- try {
- let indexHtml = fs.readFileSync(indexPath, 'utf-8')
- // Add base tag to ensure assets load from root
- indexHtml = indexHtml.replace('