Skip to content

New Vite SVG logo renders incorrectly in WebKit #23588

Description

@ChisakaKanako

Describe the bug

The official Vite light and dark SVG logos can render inconsistently in WebKit when displayed at small icon sizes.

Affected official assets:

These assets were introduced by #21339.

In WebKit 27 on macOS 27, rendering either SVG at approximately 24px height can produce:

  • A soft or blurry appearance
  • Color bleeding around the lightning mark
  • Incorrect dark edges or outlines
  • Incorrect interpolation around transparent regions

Chrome 153 renders the same files correctly.

The screenshot below shows the worst-case WebKit rendering: the logo is completely incorrect. In ordinary cases, WebKit is usually not this severe, but it still appears noticeably blurrier than Chrome.

WebKit issue screenshot from the downstream VitePress report:

Vite logo WebKit rendering issue

The official SVG files contain:

  • 15 elements
  • 15 effects
  • 1 element
  • viewBox: 0 0 87 15

These filter and mask effects appear to be rasterized differently by WebKit and Chromium.

This also affects downstream consumers. VitePress documented the same issue and applied a raster fallback in vuejs/vitepress#5466.

Reproduction

https://htmlpreview.github.io/?https://gist.githubusercontent.com/ChisakaKanako/07226c8cc5558efd1ea7c64cfb553236/raw/index.html

Note: htmlpreview.github.io may occasionally fail to render the HTML. The issue can also be tested directly with the official vite-light.svg and vite-dark.svg files at approximately 24px height.

Steps to reproduce

  1. Open the reproduction URL in WebKit 27 on macOS 27.
  2. Display the official Vite light/dark SVG logos at approximately 24px height.
  3. Compare the rendering with Chrome 153 at the same size.
  4. Observe the blur, color bleeding, and incorrect edges in WebKit.

System Info

System:
  OS: macOS 27.0 (26A428)
  CPU: Apple M4
  Memory: 16 GB
  Shell: zsh 5.9

Browsers:
  WebKit: 27.0
  Chrome: 153.0.8010.53

Used Package Manager

npm

Logs

Official Vite logo SVG structure:

  • filters: 15
  • feGaussianBlur: 15
  • masks: 1
  • viewBox: 0 0 87 15

Downstream workaround and screenshots:
vuejs/vitepress#5466

Confirmed solution:

Alternative SVG fix:

  • Flatten or remove the Gaussian Blur filters and mask from the official SVG so it can render consistently without a raster fallback.

Validations

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions