Comment by bossyTeacher
20 days ago
It's overly verbose, unintuitive and in 2025, having a virtual dom is no longer compulsory to write interactive web apps. If you want to write modern web apps, you can use Svelte. If you want to write web apps truly functionally, you can use Elm. React is the jQuery of our times. It was really helpful in the Angular era but we are living at the dawn of a new era now.
Recommending Elm in 2025 is nonsense and I say it as an Elm lover.
As a non Elm lover, Why is that? I think you could freeze every JS frontend framework in time right now and use them for the next decade. JS is very backwards compatible.
It's the ones that do some kind of server connection that introduce vulnerabilities and need active development.
It's stuck in time, has no support, only core devs can expose newer DOM apis (and when I say newer I mean released in the last 6/7 years). Very hard to hire for, not LLM friendly.
1 reply →
How is it overly verbose?
I find it very intuitive, with the exception of useEffect.
React's hello world:
```js
<div id="root"></div>
<script>
import React from 'https://esm.sh/react@19';
import ReactDOM from 'https://esm.sh/react-dom@19/client';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<h1>Hello, world!</h1>); </script>
```
---
HTML's hello world:
```html
<h1>Hello, world!</h1>
```
---
JS's hello world:
Nothing, it was already done in HTML
React:
import { useState } from "react";
function Counter() { const [count, setCount] = useState(0);
}
---------- Svelte:
<script> let count = 0; </script>
<button on:click={() => count += 1}> Count: {count} </button> --------------- React: function Editor({ initialText }) { const [text, setText] = useState(initialText);
} --------------------- Svelte:
<script> export let initialText; let text = initialText;
</script>
<textarea bind:value={text} />
No one's going to mention VueJS?
1 reply →
Seeing Svelte 3/4 code always warms my heart. The ergonomics of `$:` are amazing.
Svelte looks good at first until you realize that to get the best support and features you're basically required to use the meta framework SvelteKit which sucks.
Well yes but that's not related to React: Svelte = React.