Är Svelte fortfarande något att ha 2025?
TL:DR; Ja, Svelte är hur trevligt som helst. Använd det om ni gillar det.
Svelte har under flera år funnits litet i kulisserna, och väljs ofta bort för andra alternativ.
- React är den stora industristandarden, ett säkert val som är mest framtidssäkert.
- Angular är enterprise och .NET-favoriserat, och många äldre kodbaser i .NET för myndigheter och större system har Angular.
- Vue är utvecklarnas egna val, särskilt i Laravel-communityt och bland grupper som ogillar React.
- Lit är för alla purister som hejar på Web Compontents och vill pusha Native Web API:s.
- Solid, och ett gäng andra, är som React fast mer hipster.
Kvar är Svelte. Det är varken industristandard, enterprise, utvecklarnas ögonsten eller av intresse för purister eller hipsters. Det är dock ett verktyg som funnits ett tag och som varit battle-testat sedan länge. Svelte är med andra ord en tråkig teknologi.
Av strategiska skäl har inte heller jag gjort något ambitiöst i Svelte. Tills nu, när jag ville göra en simpel PWA för intern uppföljning.
Kraven var följande:
- En applikation med 3 vyer.
- Lokal persistent data (inget backend för att synka).
- Varje vy har en sorterad lista med kryssrutor, för att bocka av när momentet är utfört.
- En sammanfattningsvy med andel avklarade moment i varje vy.
- Ett initiellt data-state med alla kryssrutor urkryssade.
Givet minsta motståndets lag så följde jag Vites scaffolding.
npm create vite@latest
cd new-dir
npm run dev
Jag valde Svelte med TypeScript, då jag har självbevarelsedrift och därmed väljer att koda klient-gränssnitt med typning. TypeScript är enkelt, och precis som Svelte, tråkigt.
Ungefär 90 minuter senare hade jag den första versionen i produktion, med en påskyndad design men fullt funktionell. Den lades till på hemskärmen och kunde börja användas direkt.
Det är inget annat än två tummar upp vad gäller OOB-produktivitet.
Några saker jag vill nämna:
- Svelte har plockat russinen ur flera kakor. Deras komponenter ser ut som Vue-komponenter, och deras logik-block ser ut som Moustache. De ger även Knockout cred för hur Signaler skickas. Hemtrevligt.
- Vanilla Svelte har en simpel global state manager inbakat. Inget extra krävs. Skönt att slippa skotta Props mellan led av komponenter.
- Man hade kunnat låna mer av JSX i standardutförandet.
- Sveltes dokumentation är kanonbra.
- Runes. Tufft namn, om än vagt beskrivande.
Så, när borde Svelte användas? Enligt mig:
- För en prototyp, POC eller annan sak som behöver göras snabbt och sen kastas bort när det utjänat syftet.
- För något mindre komplext, t ex en rik widget eller en enkel webbaserad applikation (likt min).
- Alltid, givet att du och övriga i teamet föredrar Svelte över andra alternativ.
Jag skulle inte använda Svelte i följande situationer:
- Är det viktigt för dig och ditt team att pusha för Web API:er och ligga i framkant är Lit mer lämpligt, då output blir Web components.
- Är det en produkt som ska leva länge och ägas av många, är React ett mer strategiskt val för rekrytering och kompetensspridning.
- Kan teamet redan något annat och är nöjd med/för investerade i det, är det inte motiverat att introducera något nytt - inte ens Svelte.
(Jag har medvetet valt att inte nämna SvelteKit här. Det är en annan sorts best, som snarare tävlar med Next, Nuxt och Remix. Det var inget som var intressant för mig denna gång.)