feat(docs): replace local lunr search with Algolia DocSearch - #81894
Merged
Merged
Conversation
The local-search plugin shipped a ~16 MB client-side lunr index that every visitor downloaded and hydrated before their first result — slow on any connection, painful on poor ones, and another lazy-loaded chunk that died during deploy skew windows. DocSearch answers from Algolia's servers: no client index, instant results at any docs size. - themeConfig.algolia with public search-only credentials (admin key is not in the repo); contextualSearch keeps en/zh-Hans results separated via the crawler's docusaurus_tag facets - drop @easyops-cn/docusaurus-search-local from package.json + lockfile - index live and verified: 9,404 records, query 'telegram' returns 374 hits with correct URLs
Contributor
૮ >ﻌ< ა ci reviewran on c8afafa
|
| Package | Before | After |
|---|---|---|
| ➖ @easyops-cn/autocomplete.js | 0.38.1 |
— |
| ➖ @easyops-cn/docusaurus-search-local | 0.55.2 |
— |
| ➖ cheerio (nested under @easyops-cn/docusaurus-search-local) | 1.2.0 |
— |
| ➖ entities (nested under @easyops-cn/docusaurus-search-local) | 7.0.1 |
— |
| ➖ fs-extra (nested under @easyops-cn/docusaurus-search-local) | 10.1.0 |
— |
| ➖ htmlparser2 (nested under @easyops-cn/docusaurus-search-local) | 10.1.0 |
— |
| ➖ @emnapi/core | 1.11.2 |
— |
| ➖ @emnapi/runtime | 1.11.2 |
— |
| ➖ @emnapi/wasi-threads | 1.2.2 |
— |
| ➖ @napi-rs/wasm-runtime | 0.2.12 |
— |
| ➖ @node-rs/jieba | 1.10.4 |
— |
| ➖ @node-rs/jieba-android-arm-eabi | 1.10.4 |
— |
| ➖ @node-rs/jieba-android-arm64 | 1.10.4 |
— |
| ➖ @node-rs/jieba-darwin-arm64 | 1.10.4 |
— |
| ➖ @node-rs/jieba-darwin-x64 | 1.10.4 |
— |
| ➖ @node-rs/jieba-freebsd-x64 | 1.10.4 |
— |
| ➖ @node-rs/jieba-linux-arm-gnueabihf | 1.10.4 |
— |
| ➖ @node-rs/jieba-linux-arm64-gnu | 1.10.4 |
— |
| ➖ @node-rs/jieba-linux-arm64-musl | 1.10.4 |
— |
| ➖ @node-rs/jieba-linux-x64-gnu | 1.10.4 |
— |
| ➖ @node-rs/jieba-linux-x64-musl | 1.10.4 |
— |
| ➖ @node-rs/jieba-wasm32-wasi | 1.10.4 |
— |
| ➖ @node-rs/jieba-win32-arm64-msvc | 1.10.4 |
— |
| ➖ @node-rs/jieba-win32-ia32-msvc | 1.10.4 |
— |
| ➖ @node-rs/jieba-win32-x64-msvc | 1.10.4 |
— |
| ➖ @tybys/wasm-util | 0.10.3 |
— |
| ➖ comlink | 4.4.2 |
— |
| ➖ encoding-sniffer | 0.2.1 |
— |
| ➖ immediate | 3.3.0 |
— |
| ➖ klaw-sync | 6.0.0 |
— |
| ➖ lunr | 2.3.9 |
— |
| ➖ lunr-languages | 1.20.0 |
— |
| ➖ mark.js | 8.11.1 |
— |
| ➖ parse5-parser-stream | 7.1.2 |
— |
| ➖ undici | 7.28.0 |
— |
| ➖ whatwg-encoding | 3.1.1 |
— |
| ➖ whatwg-mimetype | 4.0.0 |
— |
How to fix:
Add the ci-reviewed label after verifying the version changes are expected.
⚠️ Warnings
OSV vulnerability scan · View job
64 known vulnerabilities found in pinned dependencies.
- CVE-2026-59873 in package-lock.json
- CVE-2026-67213 in package-lock.json
- CVE-2026-67213 in website/package-lock.json
- CVE-2026-71436 in package-lock.json
- CVE-2026-71436 in website/package-lock.json
- CVE-2026-24842 in package-lock.json
- CVE-2026-71437 in package-lock.json
- CVE-2026-71437 in website/package-lock.json
- CVE-2026-13697 in package-lock.json
- CVE-2026-13697 in plugins/platforms/photon/sidecar/package-lock.json
- GHSA-55q2-fjhq-7xh7 in package-lock.json
- GHSA-55q2-fjhq-7xh7 in website/package-lock.json
- CVE-2025-71329 in website/package-lock.json
- GHSA-5p4m-2wfm-xmqj in package-lock.json
- GHSA-5p4m-2wfm-xmqj in website/package-lock.json
- CVE-2026-71554 in uv.lock
- CVE-2026-50159 in package-lock.json
- CVE-2026-50159 in website/package-lock.json
- CVE-2026-18446 in website/package-lock.json
- CVE-2026-26960 in package-lock.json
How to fix:
Review the findings in the Security tab. Update the affected dependencies if a patched version is available.
Contributor
Related: #81736 improves the existing local-search index, while this PR replaces that path with Algolia DocSearch. These are competing docs-search approaches for maintainer choice. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Docs search now runs on Algolia DocSearch — no more 16 MB client-side lunr index downloaded and hydrated by every visitor before their first result.
Follows #81744 (deploy-skew asset retention): that fix stopped search from hard-404ing, this one removes the remaining slowness and takes search off our lazy-loaded JS entirely. Results now come from Algolia's servers: instant at any docs size, on any connection.
Changes
website/docusaurus.config.ts: drop the@easyops-cn/docusaurus-search-localtheme entry; addthemeConfig.algolia(public search-only credentials — the admin key is not in the repo).contextualSearch: truescopes results to the active locale via the crawler'sdocusaurus_tag/langfacets.website/package.json+ lockfile: remove@easyops-cn/docusaurus-search-local(Algolia support is built into the classic theme; no new dependency).Validation
telegram→ 374 hits, correct URLs, both localessearch-index.jsongone from build outputbuild/andbuild/zh-Hans/Crawler note: the initial test crawl (300-URL cap) already produced 9,404 records covering both locales; Algolia's scheduled crawl maintains the index from here. Optional follow-up in crawler config: exclude the ~500 auto-generated per-skill catalog pages from indexing (same noise-reduction the local plugin's
ignoreFilesdid).Infographic