A faster check. A good place to finish.
svelte-check-rs is no longer maintained. Official svelte-check now offers native TypeScript checking and incremental caching, closing the gap that inspired this project.
Use official svelte-check# How we got here
I started svelte-check-rs in January 2026, before official svelte-check offered TSGO or incremental compilation. On my own workloads, early versions made checks more than ten times faster. That changed how often I could run them and how quickly I could get back to building. I shared the project hoping it would do the same for other Svelte developers.
Since then, official svelte-check has added native checking and incremental caches. Its implementation explicitly credits svelte-check-rs and svelte-fast-check as inspirations. It is rewarding to see those benefits become part of the official tooling.
Rust retains a speed advantage in our final benchmarks, but the practical gap has narrowed. Maintaining a separate parser, transformer, source mappings, and ecosystem integrations no longer makes sense for that remaining benefit. We recommend official svelte-check going forward.
# Moving forward
Replace the svelte-check-rs development dependency and commands in your scripts, CI, and agent instructions with official svelte-check. Keep your existing SvelteKit sync step and review flags against upstream’s current documentation.
For native checking and caching, upstream offers --tsgo --incremental. Follow its TypeScript dependency instructions and check the documented limitations, including Svelte files outside the tsconfig root. The newer --tsgo-experimental-api mode has different tradeoffs and is experimental.
Run the official checker and review its diagnostics before relying on the migrated command. The tools do not always report the same results; our real-application benchmark records that difference.
The archived repository preserves the source, releases, and technical documentation under the MIT license.
# Thank you
A special thank you to Guillermo Rauch, who shared svelte-check-rs when it first launched. Having something I’d built reach him—and seeing him help introduce it to the wider community—was an honor. I’m grateful that he took the time to support it.
Small projects depend on people willing to give them a chance and spread the word. Guillermo’s support helped this one reach more people, and everyone who tried it, contributed, or shared what they learned helped it grow. Seeing the work eventually help inform improvements in Svelte’s official tooling makes this a particularly meaningful place to leave it.
Thank you to the Svelte and language-tools maintainers, the TypeScript native compiler team, and the wider community that made this work possible. Future checking improvements belong with the official project.
# Final benchmarks
Our final measurements from September 2026, preserved for reference. These results informed the decision to sunset the project.
Recorded timings
Methodology & reproduction
- measured
- 2026-09-05 · median of 5 runs · 1 priming run, plus 1 untimed edit for iterative · rotating order
- cold
- checker caches removed before each run; dependencies, OS cache, and generated Kit types retained
- warm
- caches preserved, no source changes
- iterative
- repeated changes to a typed TypeScript export's value, after an untimed priming edit; separate CLI processes
- TS7 mode
svelte-check --tsgo --incremental- versions
- svelte-check 4.7.6 · svelte-check-rs 0.11.2
- env
- Apple M4 Max · 48 GiB · macOS 27.0 · Node 24.20.0 · Bun 1.4.0
- scope
- Public fixtures verify TS and Svelte error probes, then require zero diagnostics. The private app has different diagnostic results. Experimental API mode is not measured.
- reproduce
- Commands, pinned dependencies, raw samples, and limitations