Post

Announcing tsv - a formatter, parser, and future linter + more for Svelte + TypeScript/JS/HTML/CSS in Rust. - tailored to Svelte, no irrelevant bloat - emphasis on performance, no JS bridging - non-configurable, so hidden dir-specific state never changes behavior github.com/fuzdev/tsv tsv.fuz.dev

github.comGitHub - fuzdev/tsv: formatter, parser, and future linter + more for TypeScript, Svelte, and CSS, written in Rustformatter, parser, and future linter + more for TypeScript, Svelte, and CSS, written in Rust - fuzdev/tsv

0 reposts15 likes

I'll be announcing more of the Fuz projects soon. fuz_css and fuz_ui are probably most relevant to people interested in tsv -- feedback is welcome, unlike tsv they're not AI generated, I built them over 7 years and I think I'm near the point where they won't have continuous breaking changes

This first release took 7 months and ~1800 manual commits. Fixtures are all original - I used Prettier's only after it formatted my codebases and Svelte's, and avoided many bugs and quirks in the process. I used machine agents but I put considerable effort into the design choices and quality.

Yeah no formatting options is a locked decision, currently has 4 overrides from Prettier's defaults, these may change and discussions are open: useTabs: true printWidth: 100 singleQuote: true bracketSpacing: false My preference is for explicit punctuation and less ambiguity like around `{`.

rsvelte uses oxc, tsv has its own parser today tsv is ~6% slower formatting TS and oxfmt bundles+delegates to Prettier, so tsv's wasm is 9x faster formatting Svelte & 13x for CSS, natively 12x/17x oxlint bridges to JS for ESLint plugins, and oxfmt is planning Prettier plugins - tsv won't for perf

tsv is focused on Svelte+TS+CSS (can output Svelte's AST), oxc is a Biome-like generic language platform tsv won't support config options so filesystem state doesn't affect how it operates rsvelte started with a Svelte compiler, tsv's is deferred for now size-wise this means tsv is much smaller

tsv also addresses numerous quirks in Prettier whereas oxfmt went for compatibility, this limits tsv's appeal but long-term gives it more freedom to innovate another goal is tsv is to produce optimal artifacts -- `tsv` will have everything but e.g. the parser and formatter can be used a la carte