\n\n### Expected behavior\n\nI hope to use SVG and other methods instead of using masks to display icons, which can avoid frequent redrawing\n\n### System Info\n\n```Text\n\"vitepress\": \"^1.6.4\",\n```\n\n### Additional context\n\n\u003Cimg width=\"2559\" height=\"1042\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/39db5990-f3ee-47bb-8bcf-49272a1918f4\" />\n\n### Validations\n\n- [x] Check if you're on the [latest VitePress version](https://github.com/vuejs/vitepress/releases/latest).\n- [x] Follow our [Code of Conduct](https://vuejs.org/about/coc.html)\n- [x] Read the [docs](https://vitepress.dev).\n- [x] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.",[3156],{"name":3157,"color":3158},"bug: pending triage","e99695",4917,"Bug: Frequent triggering of redrawing of navigation bar icons","2025-08-21T09:14:41Z","https://github.com/vuejs/vitepress/issues/4917",0.72474486,{"description":3165,"labels":3166,"number":3170,"owner":3146,"repository":3147,"state":3148,"title":3171,"updated_at":3172,"url":3173,"score":3174},"### Is your feature request related to a problem? Please describe.\n\nI want to add a script which type is 'importmap' into top of head, but all solution is failed. The official custom head config, will add script into end of head, this causes 'importmap' to fail to work.\n\n### Describe the solution you'd like\n\n* add 'importmap' config in .vitepress/config\r\n* or, let head config to support position top/end\n\n### Describe alternatives you've considered\n\n_No response_\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [X] Follow our [Code of Conduct](https://vuejs.org/about/coc.html)\n- [X] Read the [docs](https://vitepress.dev).\n- [X] Read the [Contributing Guidelines](https://github.com/vuejs/vitepress/blob/main/.github/contributing.md).\n- [X] Check that there isn't already an issue that asks for the same feature to avoid creating a duplicate.",[3167],{"name":3168,"color":3169},"stale","ededed",4168,"Support add importmap script into head","2025-03-02T18:08:39Z","https://github.com/vuejs/vitepress/issues/4168",0.7315874,{"description":3176,"labels":3177,"number":3178,"owner":3146,"repository":3147,"state":3179,"title":3180,"updated_at":3181,"url":3182,"score":3183},"### Is your feature request related to a problem? Please describe.\r\n\r\nPWA Support\r\n\r\n### Describe the solution you'd like\r\n\r\nI would like to include `vite-plugin-pwa` on `vitepress`: \r\n- `vite-plugin-pwa` exposes a virtual module to interact with the service worker from the client ui: this virtual module will register the service worker and when new content available will notify the client via `ref` on the ui.\r\n- since `vitepress` is build on top of `Vite`, we can use the `rollup plugin intercomunication api` exposed also by the plugin to regenerate the service worker once the `cli` finish rendering the pages.\r\n- on the `Layout` component, `vitepress` will include the `ReloadPrompt.vue` component, this component will import the virtual module for vue.\r\n\r\nThis way, you from `vitepress`, won't need to add the support for PWA, just use a vite plugin for it.\r\n\r\nI'm a collaborator of `vite-plugin-pwa` repo.\r\n\r\n### Describe alternatives you've considered\r\n\r\nI'm using `vitepress` with `vite-plugin-pwa` to create the docs site for `vite-plugin-pwa`, I regerenerate the service worker after `vitepress cli` finish: since the plugin will execute before `vitepress` rendering page starts, the html files won't be on the service worker precache, and so I need to process it again.\r\n\r\nYou can see [the node script](https://github.com/antfu/vite-plugin-pwa/blob/main/docs/package.json#L7) and [the pwa module](https://github.com/antfu/vite-plugin-pwa/blob/main/docs/scripts/build.ts) on `vite-plugin-pwa` repo. \r\n\r\n### Additional context\r\n\r\nI have a working example on my fork on local, if you think it would be a good idea, I can push to my fork a working example.\r\n\r\nI can also make a PR for it.\r\n\r\n### Validations\r\n\r\n- [X] Follow our [Code of Conduct](https://vuejs.org/coc)\r\n- [X] Read the [docs](https://vitepress.vuejs.org/).\r\n- [X] Read the [Contributing Guidelines](https://github.com/vuejs/vitepress/blob/master/.github/contributing.md).\r\n- [X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.",[],356,"closed","Add PWA Support via `vite-plugin-pwa`","2023-01-21T16:20:29Z","https://github.com/vuejs/vitepress/issues/356",0.6254012,{"description":3185,"labels":3186,"number":3190,"owner":3146,"repository":3147,"state":3179,"title":3191,"updated_at":3192,"url":3193,"score":3194},"### Is your feature request related to a problem? Please describe.\n\nThere are situations where information about the build process is required before vitepress finish, which cannot be done from a Vite plugin. For example, adding a PWA including the generated pages in the service worker manifest.\r\n\r\nThe current problem is that we have to include scripts after the vitepress build so that it loads the PWA plugin manually and regenerates the PWA on the distribution folder and it is a very repetitive arduous job.\r\n\n\n### Describe the solution you'd like\n\nAdding a `build-end` hook providing the Vite config and the routes generated by Vitepress.\r\n\r\nFor example, using `Astro` integrations, you can just add a `astro:build:done` hook, `Astro` just call this hook once SSG process finish and before finishing the build process (provides some info about the SSG result like routes and urls):\r\n\r\nhttps://docs.astro.build/en/reference/integrations-reference/#quick-api-reference\r\n\r\nI can make a PR for the build end hook.\n\n### Describe alternatives you've considered\n\n_No response_\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [X] Follow our [Code of Conduct](https://vuejs.org/about/coc.html)\n- [X] Read the [docs](https://vitepress.vuejs.org).\n- [X] Read the [Contributing Guidelines](https://github.com/vuejs/vitepress/blob/main/.github/contributing.md).\n- [X] Check that there isn't already an issue that asks for the same feature to avoid creating a duplicate.",[3187],{"name":3188,"color":3189},"build","377ba8",706,"provide build end hook","2023-01-21T14:32:35Z","https://github.com/vuejs/vitepress/issues/706",0.6627336,{"description":3196,"labels":3197,"number":3198,"owner":3146,"repository":3147,"state":3179,"title":3199,"updated_at":3200,"url":3201,"score":3202},"### Is your feature request related to a problem? Please describe.\n\nWhen the user configures build hooks, the theme's build hooks are overwritten.\r\n\r\n当用户配置 build hooks 时, 会覆盖掉主题的 build hooks.\n\n### Describe the solution you'd like\n\nFor example, when there is a `transformHead` in the theme, the user adds a `transformHead` in their configuration to override the processing of the theme and has to handle it as follows: Is it possible to place this processing inside `vitepress`?\r\n\r\n以为 `transformHead` 为例, 当主题里存在 `transformHead` , 用户在自己配置里添加 `transformHead` 会覆盖掉主题的处理, 不得不像下面那样处理, 能否将这种处理放置在 `vitepress` 内部处理呢?\r\n\r\n``` ts\r\n// user config\r\nimport Config from 'vitepress-theme-xxx';\r\n\r\n{\r\n async transformHead(content) {\r\n const { transformHead } = await Config()\r\n if (transformHead) {\r\n\t transformHead(content)\r\n }\r\n // do something\r\n }\r\n}\r\n```\r\n---\r\n\r\nIt seems that useRouter's `onBeforeRouteChange` will also exist in `vitepress`, and overrides will also exist when multiple internal components declare onBeforeRouteChange\r\n\r\n\n\n### Describe alternatives you've considered\n\n_No response_\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [X] Follow our [Code of Conduct](https://vuejs.org/about/coc.html)\n- [X] Read the [docs](https://vitepress.dev).\n- [X] Read the [Contributing Guidelines](https://github.com/vuejs/vitepress/blob/main/.github/contributing.md).\n- [ ] Check that there isn't already an issue that asks for the same feature to avoid creating a duplicate.",[],3109,"When the user configures build hooks, the theme's build hooks are overwritten","2023-10-28T00:04:01Z","https://github.com/vuejs/vitepress/issues/3109",0.70960796,{"description":3204,"labels":3205,"number":3207,"owner":3146,"repository":3147,"state":3179,"title":3208,"updated_at":3209,"url":3210,"score":3211},"### Describe the bug\n\nOn https://vitepress.dev/guide/mpa-mode, the documentation says:\n\n> all pages are rendered without any JavaScript included by default\n\nBut that's not the case, this block of code is unconditionally included\n\n```html\n\u003Cscript id=\"check-mac-os\">document.documentElement.classList.toggle(\"mac\",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));\u003C/script>\n```\n\nI don't think there is a way to disable this functionality, outside of doing cursed stuff like\n\n```javascript\nconst head = []\nhead.push = () => {}\n\ndefineConfig({\n ...,\n head,\n})\n```\n\nWhich I imagine isn't exactly supported.\n\n### Reproduction\n\nCreate a website with `mpa: true` and \"Custom Theme\" theme.\n\n### Expected behavior\n\nThere shouldn't be any JavaScript.\n\n### System Info\n\n```Text\nSystem:\n OS: Linux 6.12 cpe:/o:nixos:nixos:25.11 25.11 (Xantusia)\n CPU: (12) x64 AMD Ryzen 5 7640U w/ Radeon 760M Graphics\n Memory: 4.19 GB / 30.66 GB\n Container: Yes\n Shell: 5.2.37 - /nix/store/1q9lw4r2mbap8rsr8cja46nap6wvrw2p-bash-interactive-5.2p37/bin/bash\n Binaries:\n Node: 22.14.0 - /nix/store/c8jxsih8yy2rnncdmx2hyraizf689nvp-nodejs-22.14.0/bin/node\n npm: 10.9.2 - /nix/store/c8jxsih8yy2rnncdmx2hyraizf689nvp-nodejs-22.14.0/bin/npm\n npmPackages:\n vitepress: ^1.6.3 => 1.6.3\n```\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [x] Check if you're on the [latest VitePress version](https://github.com/vuejs/vitepress/releases/latest).\n- [x] Follow our [Code of Conduct](https://vuejs.org/about/coc.html)\n- [x] Read the [docs](https://vitepress.dev).\n- [x] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.",[3206],{"name":3157,"color":3158},4766,"MPA claims to be no-JS-by-default, but isn't, and there is no real way to make it no-JS","2025-05-29T08:35:15Z","https://github.com/vuejs/vitepress/issues/4766",0.7188144,{"description":3213,"labels":3214,"number":3215,"owner":3146,"repository":3147,"state":3179,"title":3216,"updated_at":3217,"url":3218,"score":3219},"### Is your feature request related to a problem? Please describe.\n\nNo\n\n### Describe the solution you'd like\n\nThe custom container are a very useful feature and it can be configurable in the .vitepress/config.js file with color for \r\nname,border, border-dark, background, background-dark in the config file with these 5 options i think it will make a better for a better blog points.\n\n### Describe alternatives you've considered\n\nHaving the lack of customization for the custom container boxes. I am aware that you can create components to do the same things but the \"::: name :::\" syntax is better to view in markdown as well as more read able than having it wrapped inside a html tag.\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [X] Follow our [Code of Conduct](https://vuejs.org/about/coc.html)\n- [X] Read the [docs](https://vitepress.vuejs.org).\n- [X] Read the [Contributing Guidelines](https://github.com/vuejs/vitepress/blob/main/.github/contributing.md).\n- [X] Check that there isn't already an issue that asks for the same feature to avoid creating a duplicate.",[],1246,"Adding Custom Containers from the config.js file ","2023-01-21T14:26:51Z","https://github.com/vuejs/vitepress/issues/1246",0.7223052,{"description":3221,"labels":3222,"number":3223,"owner":3146,"repository":3147,"state":3179,"title":3224,"updated_at":3225,"url":3226,"score":3227},"### Is your feature request related to a problem? Please describe.\n\n-\n\n### Describe the solution you'd like\n\n-\n\n### Describe alternatives you've considered\n\n_No response_\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [X] Follow our [Code of Conduct](https://vuejs.org/about/coc.html)\n- [X] Read the [docs](https://vitepress.dev).\n- [X] Read the [Contributing Guidelines](https://github.com/vuejs/vitepress/blob/main/.github/contributing.md).\n- [X] Check that there isn't already an issue that asks for the same feature to avoid creating a duplicate.",[],3164,"When running vitepress, how to point the vite attribute in defineConfig to the viete.config.js file","2023-11-10T00:04:13Z","https://github.com/vuejs/vitepress/issues/3164",0.72334844,{"description":3229,"labels":3230,"number":3234,"owner":3146,"repository":3147,"state":3179,"title":3235,"updated_at":3236,"url":3237,"score":3238},"### Is your feature request related to a problem? Please describe.\n\nNope.\n\n### Describe the solution you'd like\n\nProvide a config option, like `lastUpdated`.\n\n### Describe alternatives you've considered\n\n_No response_\n\n### Additional context\n\nNot very familiar with Node and Vite. I tried to do it on my own, but failed with 'process is not defined'. Any help?\n\n### Validations\n\n- [X] Follow our [Code of Conduct](https://vuejs.org/about/coc.html)\n- [X] Read the [docs](https://vitepress.dev).\n- [X] Read the [Contributing Guidelines](https://github.com/vuejs/vitepress/blob/main/.github/contributing.md).\n- [X] Check that there isn't already an issue that asks for the same feature to avoid creating a duplicate.",[3231],{"name":3232,"color":3233},"question","5D5FAE",3001,"Support to show page contributors","2023-10-01T00:04:52Z","https://github.com/vuejs/vitepress/issues/3001",0.72706354,["Reactive",3240],{},["Set"],["ShallowReactive",3243],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fxKsHJsJVT-UZDTePrr_SCSRruiOcBKo4oRyQxLCNhLg":-1},"/vuejs/vitepress/1322"]