← Back to context

Comment by turtlebits

2 months ago

I dont get it. Yes it's a static site, but it's only text and you're sending 100kb+ of JS over the wire. Is there any reason why you need React?

you don't need to send 100kb+ of JS over the wire to build a static site in react: for example https://vike.dev supports static HTML-only output for a site built with React.

as for "why React", speaking just for myself it's really nice to just have one tool that can do everything (static HTML-only, static with JS, SPA, SSR) and not have to context switch or potentially even have to split my site into two projects just because I want to hop between one or the other approach. and React has the biggest mindshare and ecosystem.

  • I think you just proved the point by introducing yet another frontend framework to learn.

    And you absolutely don't want one tool to do everything. HTML/CSS is native and understanding it is a requirement for React. It also doesn't require Node and a build step.

    • I think all software engineers in the world who know HTML/CSS (like who doesn't?) beg to differ

      Really funny how some devs think they know the secrets of engineering simplicity and everyone else is a fool for not knowing what they know (HTML/CSS).

      9 replies →

    • > HTML/CSS is native and understanding it is a requirement for React.

      It's not necessary and the ROI is poor IMO, especially for CSS. Better to just use React for everything and not worry about the implementation details; yes those details will sometimes help you debug, just like knowing machine code will occasionally help you debug your compiled code, but it's not something to put a lot of your learning budget into.

      > It also doesn't require Node and a build step.

      The point is assuming you already have node and a build step. You already know React. So just use it for everything. Everyone who thinks they can "just write HTML/CSS" ends up introducing Hugo or Gatsby or whatnot (or, worse, writing their own "simple" Makefiles and shell scripts) and gradually adding more and more features until it's just as complex as React. Just use React.

      9 replies →

  • > you don't need to send 100kb+ of JS over the wire to build a static site in react

    It is telling that the blog of the fw creator ships 500kb of JS/CSS/HTML to display text on a screen.

    > it's really nice to just have one tool that can do everything (static HTML-only, static with JS, SPA, SSR)

    WebComponents (+lit-html)

    • Pretty much none of that is blocking first paint. Disable JS and see that my site works just fine. I have interactive examples on some pages but all the extra stuff is just “nice-to-have”.

      Also I’m not a framework creator.

    • Yep. 411 KB of JS (126 KB minified). 525 KB of fonts! 40KB of HTML. 1.1MB (704 KB minified) total for approximately 4.3 KB of actual text.

      That's a crap:content ratio of 256:1

      3 replies →

First of all, this is not an argument against the model. I could easily remove all JS and it would still work. I’m keeping it as a choice, not as a consequence of the model.

I have interactive examples on some pages. I’m planning to have more of them and more complex ones. Very little of the infra for this is actually render-blocking — try disabling JS and see that my site loads just fine.

All data and interactive stuff is loaded after the text and doesn’t block the first paint.

If anything, running a webpage test shows that the CSS requests are blocking the first render a bit. Maybe I should inline them or something.

If you load external content on build (e.g. external blog pages, prices from an external store, etc), then you'll need some way to template that into your HTML. I'm not a huge React fan but I do like JSX compared to other templating languages.

  • Then use JSX without React?

    • What do you mean?

      JSX compiles to jsx(“div”, props, children) function calls so you need a runtime (which can be small) to render that into strings.

      At which point, who cares if you’re using react to do it? It’s a good zero dep implementation of a jsx fn.

      3 replies →

Basically at any time they could turn it into an SPA, but tbf you don't need RSC for that.

Think a about the case, that you have a shop, and you need the stock to disable the add to cart button. You can do a API request for every page visit. Or, use something like ISR to revalidate stock on the server and rerender the page every 10min.