I’m an experienced backend developer. To me, the backend world seems super simple compared to the frontend world.

It seems like there are a million options and I don’t have the experience to say what’s good and what’s not. I’m hit with major choice paralysis, basically.

I don’t have any special requirements - I “just” want to build a pretty standard, responsive, modern-looking UI. Ideally without too much boilerplate, in a framework that “feels good”, in a way that might at some point attract other contributors as well, if I get to the point of open sourcing.

Of course I could just reach for the most popular thing i.e. React, but that doesn’t seem to be the “hip” thing to use nowadays (or maybe I’m wrong? What do I know, I’m a backend dev).

But even if I choose a framework, there’s a million other libraries out there to choose as well. For instance, which UI library to choose? What about observability and state management and authentication and so on?

Sorry if this is a bit ranty. I am honestly just looking for an experienced frontend developer to point me in some direction (i.e. some set of frameworks/libraries; a “stack” if you will), so I can get out of this choice paralysis.

What would be your go-to stack for a new frontend project today?

  • tyler@programming.dev
    link
    fedilink
    arrow-up
    9
    ·
    4 days ago

    I’m also a backend dev that hates how many frameworks there are. At my last company i built a small tool and chose svelte. I’m glad i did. It is so easy for a backend dev to learn in comparison to react or angular or vue. I wouldn’t touch those three with a 50 ft poll in this day and age. There’s several good articles on why in the [email protected] community a few days ago.

    https://programming.dev/post/39156162

    https://programming.dev/post/39374784

    I would choose HTMX, Astro, Quik, or Sveltekit. I really like svelte, and it’s been at the top of stack overflow’s “beloved” chart for several years now. It really is a joy to use compared to react or angular (at least for a backend dev like me). I know they’re not nearly as popular, but using react is like using J2EE, you don’t need it, like 99.99% of the time.

    • dejected_warp_core@lemmy.world
      link
      fedilink
      arrow-up
      5
      ·
      4 days ago

      I’ll jump on the bandwagon and say that while I haven’t used Svelte or Quik, I have used React, NextJS, and a lot of older tech like AngularJS, ASP, PHP, JSP, JQuery, YUI, vanilla JS, …

      I agree. React is over-engineered, and tries to solve the same thing Angular does: optimize for the most efficient DOM updates possible. As a result, your code is compressed into hard-to-debug pretzel shapes. Its cousin, NextJS, confuses front and backend in such a way that you’d need to be experienced with the separation before being able to navigate it. Neither is starter tech by any stretch of the imagination.

      I’ve dabbled a bit with HTMX. I really like this one since it more closely resembles the dynamic web we had before JS and heavy-clients took over. You wind up with a lot more chatter between the browser and server, but each of those conversations can be engineered (more or less) in isolation from the rest of the app. Meanwhile, you avoid round-trips that update the entire page - the very thing that these other stacks try so hard to avoid. You can build an HTMX application one component at a time, instead of all-or-nothing. This makes troubleshooting a lot easier, so it’s likely an easier place to start.

    • SorteKanin@feddit.dkOP
      link
      fedilink
      arrow-up
      2
      ·
      4 days ago

      Svelte(Kit?) does look pretty nice. I guess I’ll try it out, but even then there are many UI libraries and other libraries that need decisions. It seems like in the frontend world, I never run out of choices 😅.

      • tyler@programming.dev
        link
        fedilink
        arrow-up
        2
        ·
        4 days ago

        With svelte I’ve only found like two “component” libraries and I’m not sure I’m going to continue to use them. Essentially they just are drop in components so you don’t have to write them yourself. But svelte really seems to like it when you just write the css yourself. I’ve been using tailwind with it and I honestly think I’m going to stop, because it’s harder than just writing normal css that covers either a specific component or the whole app.

        • SorteKanin@feddit.dkOP
          link
          fedilink
          arrow-up
          1
          arrow-down
          1
          ·
          4 days ago

          Interesting, my impression is very much that the days of writing “pure CSS” is at an end, and that UI libraries and CSS frameworks like Tailwind is the way forward. But that is just my impression.

          • Kissaki@programming.dev
            link
            fedilink
            English
            arrow-up
            8
            ·
            4 days ago

            Tailwind is an example of those frameworks fighting against/crossing the native web technologies referenced further up with the links to webdev posts.

            The idea of shifting CSS declaration into the DOM element class attribute seems flawed to me. You lose what CSS provides natively.

          • matsdis@piefed.social
            link
            fedilink
            English
            arrow-up
            4
            arrow-down
            1
            ·
            4 days ago

            My impression is that writing “pure CSS” has been replaced by writing !important selectors that undo all of your component library’s auto-generated CSS, and then write your own CSS selectors on top, after trying to figure out the theming system for half a day… /rant

          • tyler@programming.dev
            link
            fedilink
            arrow-up
            2
            ·
            4 days ago

            Those articles I linked have a good discussion of it, but pure css has come a very very long way and a lot of these frameworks aren’t even necessary anymore. You just bloat the browser, and for little good reason. Tailwind is nice to use if you don’t know much CSS, but still know some, since you can just look at a giant list of “what does this do” and choose one that looks good. But yeah, I think I’m going to cut back on my usage of Tailwind massively, it’s just annoying a lot of the time.

          • kewjo@lemmy.world
            link
            fedilink
            arrow-up
            1
            ·
            3 days ago

            if you want fast web pages there’s nothing faster than pure CSS and HTML. those are both running native machine code in the Web browser directly.

            JavaScript (with or without frameworks) gets slower the more things you do with it as it only works in a single event loop. this means one function you wrote that takes a long time blocks everything else from finishing until it completes, even the browser rendering and interactions. that’s why really bloated pages feel like they’re lagging and you can’t click buttons or scroll.

            imo do as much in CSS and HTML and use native web components for reusable components that you can drop anywhere in your HTML. if you want it to feel like an application, since you have backend experience you could use web assembly but treat this as a single application, it’s not really meant to replace html/JavaScript

    • Cyno@programming.dev
      link
      fedilink
      arrow-up
      1
      ·
      3 days ago

      I haven’t used them much recently but aren’t vue and svelte very similar in terms of difficulty and philosophy?

      • tyler@programming.dev
        link
        fedilink
        arrow-up
        1
        ·
        3 days ago

        I’ve heard that the original Vue was like Svelte, but I’ve heard that later Vue versions drastically switched to something like the React model. I’ve never used Vue though, so don’t listen to me about that. Really anything going in the React direction is bad in my mind.