React I Love You, but You're Bringing Me Down

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Build time-series-based applications quickly and at scale.
  • Zigi - The context switching struggle is real
  • Sonar - Write Clean JavaScript Code. Always.
  • Scout APM - Truly a developer’s best friend
  • Svelte

    Cybernetically enhanced web apps

    Mithril or Svelte should be all you need. If you're coming from React, I'd recommend trying Mithril first. I've been using it heavily for 5 years now and I'll likely stick with it for at least another 15. It smokes React in every category, but still has an optional JSX integration if that's what you're comfortable with.

    https://mithril.js.org/

    https://svelte.dev/

  • CPython

    The Python programming language

    > hooks need to be named "useX"

    This is just dynamic dispatch dispatch based on the name. Here's an example in Python that does it for methods that start with "do_"

    https://github.com/python/cpython/blob/96739bccf220689a54ef3...

    > have restrictions on where to be called

    This is because hooks are just next() calls on an iterator. Is it magic and entirely because the devs thought it was more beautiful than having to pass a key like state = useState("state", 0)? Absolutely. Does it transcend JS, no.

       hooks = [1, 2, 3, 4]

  • InfluxDB

    Build time-series-based applications quickly and at scale.. InfluxDB is the Time Series Data Platform where developers build real-time applications for analytics, IoT and cloud-native services in less time with less code.

  • SvelteKit

    The fastest way to build Svelte apps (by sveltejs)

    I was using React earlier for many years, but nowadays Svelte and SvelteKit (file based routing). I feel I am more productive (might be an illusion), but at least I am less frustrated.

    More here:

    https://kit.svelte.dev/

  • modern-todomvc-vanillajs

    TodoMVC with Modern (ES6+), Vanilla JavaScript

    > React takes us forward in the sense that most of us don't want to go back to direct DOM manipulation

    There was recently a demo of what a Todo MVC app might look like if written in vanilla JS with today's apis. It looks fairly decent; I could see myself going back to something like that:

    https://frontendmasters.com/blog/vanilla-javascript-todomvc/

  • mantine

    React components library with native dark theme support

    Using an opinionated library can help with some of these issues. Personally, I love https://mantine.dev.

  • RxJS

    A reactive programming library for JavaScript

    React is low level. Svelte and Solid are low level too.

    You are dealing with particular values and wiring everything meticulously.

    Whenever I write stuff using https://rxjs.dev, writing React feels the same.

    Using ExtJS years ago felt higher level than React.

  • React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

    Concurrent react actually makes your app less concurrent: https://github.com/facebook/react/issues/21668

    5yrs in progress, it’s still not documented let alone fixed. I tried to look at the code, and they make giant PRs and are experimenting with priority queues and bitmasks, which seemed pretty off in the weeds to me.

  • Zigi

    The context switching struggle is real. Zigi makes context switching a thing of the past. It monitors Jira and GitHub updates, pings you when PRs need approval and lets you take fast actions - all directly from Slack!

  • Mithril.js

    A JavaScript Framework for Building Brilliant Applications

    Mithril or Svelte should be all you need. If you're coming from React, I'd recommend trying Mithril first. I've been using it heavily for 5 years now and I'll likely stick with it for at least another 15. It smokes React in every category, but still has an optional JSX integration if that's what you're comfortable with.

    https://mithril.js.org/

    https://svelte.dev/

  • react-redux-realworld-example-app

    Exemplary real world application built with React + Redux (by khaledosman)

    Yeah unfortunately the author hasn't kept making these articles.

    You can see the React+Redux implementation here:

    https://github.com/khaledosman/react-redux-realworld-example...

  • Yeah unfortunately the author hasn't kept making these articles.

    You can see the React+Redux implementation here:

    https://github.com/khaledosman/react-redux-realworld-example...

  • react-18

    Workgroup for React 18 release.

    > it also only bales out during the DOM update phase; not during the calls to render() and then reconciliation(?)

    It's exactly the opposite.

    React splits work into two parts: the "render phase", where it loops over components and asks them to describe the UI they want (returning JSX/elements); and the "commit phase", where it has determined the changes that _need_ to happen to the DOM.

    The render phase is the part that can be split into many pieces. React can render a few components, see that 5ms has elapsed, and yield to the browser, then pick up where it left off and render a few more components. Or, it could render some components, pause, see a high-priority user event happen like typing into an input, and set aside the partially completed render pass to go re-render based on the input update. Then, after the input render is done, it can pick up where it left off with the other partial render, "rebase" it onto the current UI contents, and continue from there.

    The commit phase is _always_ synchronous, start to end, and that's where the actual DOM updates are applied.

    Some more details:

    - https://blog.isquaredsoftware.com/2020/05/blogged-answers-a-...

    - https://github.com/reactwg/react-18/discussions/55

    - https://reactjs.org/blog/2022/03/29/react-v18.html#what-is-c...

  • lit

    Lit is a simple library for building fast, lightweight web components.

  • Quasar Framework

    Quasar Framework - Build high-performance VueJS user interfaces in record time

    > From what I recall, quasar managed to update very quickly.

    This is true, at least there now is Vue 3 support, just checked: https://quasar.dev/

    Though I can't edit the original post anymore. Oh well, thanks for clearing that up.

  • mam_mol

    $mol - fastest reactive micro-modular compact flexible lazy ui web framework.

  • Sonar

    Write Clean JavaScript Code. Always.. Sonar helps you commit clean code every time. With over 300 unique rules to find JavaScript bugs, code smells & vulnerabilities, Sonar finds the issues while you focus on the work.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts