Pues justo llevo unos meses trabajando con Svelte y viniendo de Vue las cosas me parecen mucho más simples en Svelte. Ojo que se viene tocho.
En Vue al final tienes un objeto muy grande y terminas escribiendo mucho código (hablo de Vue 2). Por ejemplo crear un contador en Vue sería algo tal que así:
<template>
<div class="counter">
<button @click="increment">Increment</button>
{{ counter }}
</div>
</template>
<script>
export default {
data: () => ({
counter: 0
}),
methods: {
increment() {
counter++;
}
}
};
</script>
Mientras que en Svelte queda mucho más reducido:
<script>
let counter = 0;
function increment() {
counter += 1;
}
</script>
<button on:click={increment}>Increment</button> {counter}
También mola mucho que en Svelte los componentes puedan tener varios elementos al mismo nivel en el HTML, ya que en Vue siempre tiene que haber un elemento del que cuelguen el resto de elementos del DOM (en Vue 3 ya está solucionado).
De Svelte me gusta también que para usar otro componente solo haga falta meter un import, ya que en Vue además del import te tienes que acordar de declararlo en la sección components del componente, lo que hace que los componentes tengan más código.
Respecto a cosas que me gustan menos en Svelte, por ejemplo las propiedades reactivas. En Vue simplemente creas funciones dentro de computed que sabes que se van a actualizar cuando cambie alguna variable interna, mientras que en Svelte no queda tan claro y la sintaxis es más rara.
Por ejemplo para propiedades reactivas simples pues queda muy bien porque queda en una línea:
<script>
let count = 0;
$: doubled = count * 2;
</script>
Pero para cosas más complicadas tienes que andar creando arrow functions y por lo menos a mí me pasa que nunca sé si se va a actualizar o no.
Y eso es un poco todo, al final no llevo mucho usándolo, solo para componentes muy simples, todavía no he probado su router ni cosas más complejas. Respecto a React no te puedo decir porque nunca lo he usado.