← Back to context

Comment by dsego

2 hours ago

You can always make the server-side render partials based on a request header.

https://github.com/dsego/ssr-playground/blob/main/src/server...

That is what I did. I was using Astro which has full support for partial HTML via the router

  • I think I understand now, even the partial required submitting everything to the server, which can be skipped if you can have interactivity without unnecessary requests.

    • Exactly. The partial response was 100kb-200kb of HTML + the backend query time. Of course, depending on your filters. But a large chunk of that was just sending down the form on the left side, which I already had on page load, so that penalty was real.

      It was only the right side results of the experience that needed to be refetched when the form changed.

      But in HTMX, you are expected to just send the whole dang thing back for every change. Makes sense for a like-button, a dialog, or even a classic form submission.

      My refactor cut the HTML response by about 70kb and that made a big difference. The form became fully static and I had a simple Alpine data component that would just sync that state with the URL. Still used a GET on the form and still used the same partial endpoint. Just way less HTML to wait for.

      1 reply →