Svelte 最低浏览器版本要求如何查:整体支持矩阵与特性例外表怎么看
如果你的 Svelte 应用需要跑在客户或目标用户环境里,第一件事是确认目标浏览器版本是否达到 Svelte 的最低要求。Svelte 仓库在 Browser support 文档页 给出了两份表:一份是覆盖 Svelte 运行时的整体最低版本矩阵,另一份是少数需要更高版本浏览器的特性例外表。本文说明这两份表的位置、每格数值的含义,以及这些数字是如何自动生成、需要时如何重新生成的。
两个表在哪里
文档页 05-browser-support.md 本身只有几句说明,两张实际的数据表通过 @include 引入自 .generated/ 目录下的生成文件:
- browser-support.md —— 整体最低版本矩阵;
- browser-support-features.md —— 特性例外表。
两个生成文件顶部都有注释 generated in packages/svelte/scripts/generate-browser-support.ts. do not edit,即表格由脚本生成、不允许手改。文档页同时说明了适用范围:这张表只覆盖 Svelte 本身,不包含 SvelteKit、其他 Svelte 库或你自己的代码。做兼容性判断时,如果项目用了 SvelteKit 或第三方 Svelte 库,需要另行核对它们各自的声明。
整体支持矩阵怎么读
文档页第一句说明:表中的最低版本是"derived from the browser APIs used by Svelte's internal code",即根据 Svelte 内部代码用到的浏览器 API 推导出来的。当前检出的表内容为:
| Browser | Minimum version |
|---|---|
| Chrome/Edge | 87 |
| Firefox | 83 |
| Safari | 14 |
| Opera | 73 |
| Opera (Android) | 62 |
| Samsung Internet | 14.0 |
| Android WebView | 87 |
| Internet Explorer | not supported |
读法上只有三点需要注意:
- 每个浏览器的值是"最低版本",低于该版本不做保证;
- Internet Explorer 一行是
not supported,属于明确不支持项,不是缺数据; - 表尾注释 "This equates to a Baseline target of 2020",表示这组最低版本等价于 Baseline 2020 目标。判断某个目标环境是否达标时,按浏览器逐行对照即可。
特性例外表怎么读
文档页的 Exceptions 一节写明:"A few Svelte features require a higher minimum browser version. You'll only need to take the following table into consideration if you use these specific features."——只有当你的代码确实用到表中列出的特性时,才需要额外看这张表。当前检出的例外表:
| Feature | Chrome/Edge | Firefox | Safari |
|---|---|---|---|
$state.snapshot |
98 | 94 | 15.4 |
bind:devicePixelContentBoxSize |
— | 93 | not supported |
flip from svelte/animate |
— | 126 | — |
表中每个单元格的含义由生成逻辑决定(见 render_conditional_table):
- 具体版本号:使用该特性时,对应浏览器的最低要求提高到该版本;
not supported:该浏览器任何版本都不支持该特性。例如bind:devicePixelContentBoxSize在 Safari 一栏如此标注,因为 Safari 从不暴露ResizeObserverEntry.devicePixelContentBoxSize,该绑定在 Safari 上会读到undefined;—(灰色短横线):该特性在该浏览器上不需要高于整体矩阵的版本。例如bind:devicePixelContentBoxSize的 Chrome 一栏显示—,是因为它依赖的 ResizeObserver 选项在 Chrome 84 起可用,低于整体下限 87,不构成额外要求。
三个特性对应的说明文档分别在 [02-state.snapshot` 一节](https://gitcode.com/GitHub_Trending/sv/svelte/blob/b2c22ab66d0978dfa14bb92196a6ab45ad0031a4/documentation/docs/02-runes/02-state.snapshot`、`bind:devicePixelContentBoxSize` 或 `animate:flip`,出现哪个就把对应行的版本要求纳入你的最低版本判断。
表里的数字怎么来的
两份表都不是手写的,由 generate-browser-support.ts 重新生成,配套的检测逻辑在 browser-support.detector.js。脚本注释描述了完整管线:
- 用 rollup 以 production export 条件打包每个面向浏览器的运行时入口(Node-only 的
./compiler、./server、./internal/server子路径被排除),再用 TypeScript 编译器 API 走查产物,标记出用到的 web-features 特性 ID; - 枚举所有面向用户的特性——每个
bind:*、每个公开子包的导出、编译器RUNES数组中的每个 rune,以及transition:、animate:、use:、{@attach}、{@html}、custom elements 等指令的编译 fixture,逐个编译、打包、走查; - 某个特性 fixture 的最低 Baseline 年份高于运行时整体下限时,才会在例外表中输出一行;
- 通过
web-features数据把 Baseline 年份换算成各浏览器的具体版本号,缺少数据时回退到baseline-browser-mapping按年解析。
脚本中还有一组 BEHAVIORAL_IGNORE(structured-clone、CSS zoom 读取、device-pixel-content-box 选项),对应"运行时确实引用、但只有特定代码路径会走到"的 API——这些路径就是例外表存在的理由,并且脚本会校验这些条目仍然被检测器命中,防止配置过期。
重新生成表格并验证
如果你检出的仓库中运行时代码已变化、而文档表格可能滞后,可以在仓库的 packages/svelte 目录下运行文档记录的脚本(package.json 中的 generate:browser-support):
pnpm install
pnpm generate:browser-support
前提与副作用:该脚本会 import rollup、@rollup/plugin-virtual、@rollup/plugin-node-resolve、web-features、baseline-browser-mapping 等依赖,所以需要先 pnpm install 装好工作区依赖;运行时会写入两个生成文件 browser-support.md 与 browser-support-features.md,并重建、清理脚本自建的 _baseline 临时目录。执行成功后控制台输出 Done.,此时再用 git diff 对照两个生成文件即可确认版本数字是否发生变化。
边界
- 表格范围只有 Svelte 本身:SvelteKit、其他库和你自己的代码不在其中;
- 例外表只列 Chrome/Edge、Firefox、Safari 三列,其他浏览器的特性例外不在这张表里;
- 表头数字随 Svelte 运行时使用的 API 变化而可能变化,以你所用 Svelte 版本对应的仓库中生成文件为准,不要照抄本文中的具体版本号到别处长期复用。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0631
MiniCPM5-2BMiniCPM5-2B 是一款面向端侧、本地部署和资源受限场景的 2B 稠密 Transformer,能够达到同尺寸开源模型 SOTA 水平。Markdown00
video-shotcraftAI宣传片skill,使用 Remotion 制作电影级产品视频:提供106 张镜头配方卡和可复用的视频魔板。适用于 Claude Code 与 Codex以及所有其他智能体Markdown00
HivisionIDPhotos⚡️HivisionIDPhotos: a lightweight and efficient AI ID photos tools. 一个轻量级的AI证件照制作算法。Python09
DragonOSDragonOS is an operating system developed from scratch using Rust, with Linux compatibility. It is designed for **Serverless** scenarios. 使用Rust从0自研内核,具有Linux兼容性的操作系统,面向云计算Serverless场景而设计。Rust00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00