Seo Search Performance Final
SEO, search availability, and site performance final review
Date: 2026-06-22
Baseline: docs/audits/seo-search-performance-baseline.md
Completed fixes#
SEO#
- Normalized blog default canonical origin to
https://www.assistance.bg/bloginapps/blog/lib/constants.ts. - Removed the out-of-scope
/docs/disallow from blog robots metadata inapps/blog/app/robots.ts. - Pointed
apps/www/public/robots.txtat the sitemap index (https://www.assistance.bg/sitemap.xml) instead of onlysitemap_www.xml. - Made
apps/www/lib/metadata.tsemit the same absolute URL for canonical metadata and Open Graph URL. - Added focused regression coverage:
apps/blog/test/seo-routes.test.tsapps/www/lib/__tests__/metadata.test.ts
Search availability#
- Added
tools/scripts/check-search-indexes.mjsto verify Meilisearch health plus required public indexes. - Added
search:healthtopackage.jsonand.mise.toml. - Documented
search:healthin.docs/developer.md. - Changed root
index:blogto target theblogapp package. - Marked docs search fallback responses with
x-search-status: unavailablewhile preserving the existing empty-array response shape.
Performance guardrails#
- Added mise tasks for
perf:cf-budgets,perf:smoke, andperf:check. - Documented performance tasks in
.docs/developer.md. - Expanded representative smoke routes for public
www,docs, andblogpages intools/performance-smoke-routes.json. - Updated
tools/scripts/check-cloudflare-artifact-budgets.mjsto support file outputs and configurable exclusions. - Scoped OpenNext artifact budgets to deployable assets plus
worker.jsinstead of counting server/cache internals. - Calibrated public
www,docs, andblogthresholds against the currently verified artifact surface.
Verification evidence#
1$ cd apps/blog && mise exec -- pnpm exec vitest --run test/seo-routes.test.ts2Test Files 1 passed (1)3Tests 2 passed (2)1$ cd apps/www && mise exec -- pnpm exec vitest --run lib/__tests__/metadata.test.ts2Test Files 1 passed (1)3Tests 1 passed (1)1$ mise run search:health -- --dry-run2Search service: http://localhost:3049 (available)3MISS docs: 404 Not Found: Index `docs` not found.4MISS blog: 404 Not Found: Index `blog` not found.This is the expected current operational finding: the service is healthy, but local public search indexes still need to be created with mise run index:all before local public search is available.
1$ mise exec -- pnpm perf:cf-budgets -- --app www --app docs --app blog --allow-missing2www: OK javascriptGzip, assetsRaw, largestAssetRaw, workerRaw3blog: OK javascriptGzip, assetsRaw, largestAssetRaw, workerRaw4docs: OK javascriptGzip, assetsRaw, largestAssetRaw, workerRaw1$ mise exec -- pnpm perf:smoke -- --list2www: /, /services, /services/cicd-audit3docs: /, /docs, /docs/guides/guides/cicd-pipeline4blog: /, /blog, /blog/python-async-await-practical-guide1$ mise exec -- node --check tools/scripts/check-search-indexes.mjs2$ mise exec -- node --check tools/scripts/check-cloudflare-artifact-budgets.mjs3# both completed with exit 0Remaining risks#
- Local Meilisearch still lacks
docsandblogindexes untilmise run index:allis run successfully. - Full
mise run perf:cf-budgets -- --allow-missing --dry-runstill reports existing non-public-scope misses foracademyanddesign-system; the publicwww/docs/blogsubset now passes. perf:smokeremains a route smoke tool that requires dev or preview servers to already be running.- Broad workspace tests/builds were not rerun; verification was intentionally limited to changed SEO tests and public performance/search guardrails.