Remix.run Logo
unchar1 4 days ago

We did an A/B test of an old SPA app, and a modern re-write using SSR and server-rendered pages.

By every performance metric, the new app was faster.

But we kept getting user feedback that the new site was "clunky" and "slow", even though we saw that the p90 was much lower on the new site. Most of our users asked us to enable a toggle to let them go back to the old "fast" site.

I'm not sure if this is a universal experience, but I think a lot of other sites that tried the CSR -> SSR move had similar experiences. It's just harder to talk about, since it goes against the usual narrative.

bob1029 4 days ago | parent | next [-]

SSR can feel worse than SPA if you don't get the end-to-end latency under a certain threshold. If your SSR pages are taking upward of 100ms to render on average, it's going to start to feel like shit once you factor in the network latency.

My design goal for modern SSR pages is 500 microseconds render time on the server. A modern CPU can crank through several gigabytes of UTF8 text per second. There really isn't any excuse from a technology perspective. SSR pages being perceived as clunky & slow boils down to a skill / people / organizational problem. The computers and associated networks can definitely do it well.

nfw2 3 days ago | parent [-]

Every single action should have no perceivable latency between the action and the feedback that the action was received. You can implement that with SSR but it is clunky and also requires a lot of JS generally.

gizzlon 3 days ago | parent [-]

> should have no perceivable latency between the action and the feedback that the action was received.

Huh, according to who? I think a small delay is totally fine.

Often better than the SPA's that tried to fix this non-problem and introduced much worse problems.

Edit: For example HN: I press update and there's a small delay.. So what? Most sites and SPA's have a much worse user experience than this.

nfw2 2 days ago | parent | next [-]

Because past delays of about 100ms, users lose the sensation of directly manipulating the page. The feel of a page is part of it's aesthetic.

Also, immediate feedback reduces anxiety and mistakes (for example duplicate submissions).

https://www.researchgate.net/publication/391230228_Cognitive...

https://www.nngroup.com/articles/response-times-3-important-...

gizzlon 2 days ago | parent [-]

Looked at the first one, and that's in a game setting? And they test 600 ms??

edit: The second one is more useful IMO. It's hard to get under 100 ms with a roundtrip, but < 300 ms should be doable, right? So you do lose the sense that you are directly manipulating data. In most cases I think that's a good trade-off. Exceptions would be things like Google docs, but that's also because it's a well made app I trust to actually sync my data without loss. Unlike most SPAs..

nfw2 a day ago | parent [-]

300ms for network latency both ways, with server potentially doing its own network calls for data to fulfill the request, interpolating the html, and then browser rerendering client seems like a stretch

2 days ago | parent | prev [-]
[deleted]
nfw2 2 days ago | parent | prev [-]

I am curious to identify what your users are perceiving that isn't be being captured by your metric. If it is accurate and not just rhetoric that MOST of your users are asking for a rollback for purely performance reasons, that is a very extreme outcome.

Are your p90 metrics testing:

- navigation after first load?

- users who are going to the app after it is cached on their browser?

Are your actions going through server actions or rest apis? Do you have metrics on those?