Ask HN: What tech choices make “new” Reddit so unbearably slow?
I never visited Reddit much, but occasionally web searches take me there for tech support questions. Every time I visit in the past year or so I'm shocked at how slow the interface is, and don't even understand how its possible to make web sites so unresponsive to user input. It's as bad as visiting a local news site that is laden with ads and several auto-playing videos, but it doesn't seem to be running that much ad content.
How does one make such a bad web app, and what technology choices should I avoid to make sure I don't end up with a mess like this?
163 comments
[ 3.8 ms ] story [ 218 ms ] threadIt's possible to detect the difference between the request types if you examine the actual data on them, but the common privacy extensions don't usually examine the requests on that level.
With things like this and the trend towards first-party CNAME records for adtech partners, I think this is the next step in the adblocker arms race: content-sensitive request firewalls.
I'm not sure exactly what adblockers will hook where, but I'm sure if necessary we'll see people LD_PRELOAD'ing and injecting DLLs into their browser to cut this shit out.
What do you see?
- You click on a post. Comments don't load. Click the 'reload' button repeatedly, comments still won't load. Hard page refresh fixes the problem, but if you were in a modal, you've lost the context to where you were in your subreddit post list.
- Click on a post. It doesn't exist anymore (mod removed, etc). What's odd about this, is the post's body is loaded, because in the list view, you see a preview of the body. But in the modal, it won't even show that. The information is already loaded in the browser, but it won't display it.
- Searching: results temporarily display as "no results found", then load. This sounds like a simple one to fix. They logic must say "if 0 posts, show a 'no results' message". Except, we're waiting for the API response. It's a bit presumptuous to say our query resulted in no data, if we didn't even receive the response yet.
Using server-side rendering might help get the initial page loaded faster.
The endpoints themselves also seem to be very slow. I clocked a page taking 800ms to just return the bare html (vs. about 90 ms for hacker news).
So far it just does read-only behavior, but in comparison to the Reddit mobile web app, it does enough network traffic to replicate the same view: (1) fetch the front page, (2) fetch your list of subscriptions.
If there was a way to incorporate mod controls and refresh just for the right pane, this would be a GODSEND for monitoring active threads.
I think there is also an illusion of unresponsiveness at play here. With a traditional interface, the browser doesn't refresh until the main content is already ready, whereas with the new framework, the new page is eagerly displayed, before the content is retrieved. So you have a period of noticeable lack-of-content and this is perceived as slowness.
A bunch of fake paragraphs that just resolve to "F" are an aggravating user experience.
Whoa, that's some strong language!
> never what the layout suggests.
I suppose that the current fashion's major problem is that the silhouettes are too sharply defined. Probably, one way to fix it is to have multiple of them with some offset, so that the silhouette suggest the kind of media (text) that would eventually be displayed, without also suggesting how they would be formatted.
> aggravating user experience.
That's a legitimate criticism for the choice of placeholder, but not pertinent to the current topic. My claim was that the lack of actual text presented to the user makes the user more conscious of the delay.
[0]: https://www.reddit.com/r/reactjs/comments/9e77jz/whats_every...
(But is new reddit slower than old reddit, in the first place?)
I'll stick to old reddit so they pay the bill (literally) for their ineptitude.
Extremely. I try to avoid complaining about the work of others, but it's genuinely so bad I have to wonder why any front-end developer at reddit has a job.
What makes you think that whatever is wrong with Reddit is due to lack of talent? It almost never is.
Still, If we want to be pedantic and literal (i.e. assume I'm talking about the Marxist definition) it still holds true, as class is not defined by compensation but by the role of the individual within the production process.
Server-side rendering still means the browser has to parse & execute a ton of JS after the initial SSR-rendered page is loaded which is still going to be slow unless you’re running a big CPU with lots of RAM.
It's not a bad approach really it's just ungodly slow sometimes in places it really doesn't make sense to be so slow such as going to the next post for the 15th time still resulting in a cold load of the 15th post content and comments.
I.E. I'd guess it's a business focus issue, not specifically the tech stack used.
Logging in does allow you to view it on the web, but that's still a pretty horrible thing to do!
https://www.webpagetest.org/result/191208_BD_0e906d662819138...
1. Google search turns up a reddit result.
2. Click link to AMP page.
3. Scroll to read comments and click another link to open real reddit to view all comments.
4. Get to real reddit domain and watch a long loading screen.
5. Click away 2 notifications saying you should use mobile app.
6. To read a child comment, click again to read below. Page reloads above the parent comment causing you to search the page again to see child comment.
Absolutely ridiculous but still I do this because most Google results are SEO garbage. Google disabled conversation only search. Reddit is unfortunately still the best way to get a real person's view on a topic that most likely not an ad.
Just like with digg, we need a new reddit.
I guess it improves their user session time metrics but as a user the experience sucks and I feel Ellen Pao and earlier CEO's eras would not have sold out the user experience the same way (though maybe that's just because they lacked the dev resources to do so)
Fuck that shitbag company.
Unless I get a reply from a reddit dev who can guarantee that it works on my phone, I’m just gonna stick with “it doesn’t work.”
I use the old.reddit chrome extension but I imagine most computer users do not.
Internet community communication should be free to see by the public regardless of the host. The commenter are providing content to other users but it is the host that owns it. Its just not right.
You see this sort of shit in a lot of places where employees can't be bothered to dogfood their own platform.
I hate the AMP page which is a poorer read experience, and to expand comments its now multiple clicks just to get back to reading the entire thread.
5. Resignedly click on “Use mobile app” because reddit.com is basically unusable on a small-screen iPhone.
6. App Store opens at the Reddit app page. I already have the Reddit app installed and, often, open. But reddit.com never sends me there. It always sends me to the App Store to download an app I already have.
I unblocked old Reddit from my ad blocker and would have paid a reasonable monthly subscription to eliminate ads entirely (hated Reddit gold solution though...). Their new site is full of trackers so they're back on the naughty block list.
The site isn't hard to make, but it is hard to get the users. If I could pay ~$5/month or something to get old Reddit without ads and with a completely open source stack, I'd do it in a heartbeat.
Also install this to always use the old subdomain.
https://addons.mozilla.org/en-US/firefox/addon/old-reddit-re...
Old Reddit: 51 requests 3.87 MB / 1.14 MB transferred Finish: 4.83 s DOMContentLoaded: 1.96 s load: 3.69 s
New Reddit: 185 requests 13.70 MB / 7.44 MB transferred Finish: 12.99 s DOMContentLoaded: 2.38 s load: 7.80 s
Key Takeaways:
Use less Requests. Every request can fail, or have latency too it which can slow down pageload in general. Use less JavaScript, while necessary for some stuff it can easily bloat your website. Also, don't load shitloads of CSS, keep it simple. Think about fonts, do you really need several of those from external servers or do system fonts and defaults do a good enough job?
This is also an anti-pattern, since you should make sure that user generated content can't bloat your website too much.
My stats in incognito mode: 375 requests (94 XHR) 58 mb transfered (of which 64 resources (of which 11 XHR))
The only reason I'm still there now is because the old version is still accessible.
And encountering the mobile site from a mobile search is incredibly painful when just trying to view some simple information. Should not require an app or a purposely-hostile mobile experience to simply view text on a webpage.
Makes me wonder why, to protect their amazing IP, or was the code base just getting too embarrassing to look at?
I can just picture the board meetings where some poor soul did a presentation of the "new reddit", and one of the bozos saying "That's great, but how will users know that we have a mobile app? Can you add a banner to annoy them into using the app that they don't need? There's a company that promises the greatest analytics in the world ever. You can add their tracking pixel, right? We were wondering about tracking the user's mouse movements. You can do that, right? We hear that JavaScript is the big thing right now. Are you sure we have enough of it?"
DEVELOPER: Sigh.
I think it came from a genuine place. You may not agree, and I understand your perspective, but I think there's two things Reddit believes that explain everything you've complained about.
First, that their app is a better mobile experience. And I'd agree, actually, but I understand why someone would disagree. From their perspective it's an easy download and it's native app and it's way better.
Secondly, the best way to build something good is to have more data. This involves tracking people. I think most people have two opposing options: tracking people sucks, and making product decisions in a vacuum is wrong. It's a tough balance.
I think most decisions are done without malice and without "suits" involved.
Also what is the point of a native app for a website? Doesn't the browser do a better job already? Are they not just using a webview?
"But Our Company is different, and that's why we need %useless_feature_they_saw_in_another_app_unrelated_to_industry% to help hook users in."
Admittedly this thinking was a lot more common in the earlier half of the decade, but I've still seen it at other orgs.
"Board meeting" was probably the wrong choice of words. I have in my career been a part of the kind of meeting I describe, but they weren't actual board meetings, I suppose.
I do agree that Reddit probably thinks their mobile app experience is better. The reason I don't think they have a good excuse is because their mobile site is a prime example of self-sabotage. If they actually wanted people to use it, they would have had just about any redditor tell them that the experience is crap and that it should be fixed. Instead, it comes off like they're intentionally making the web experience bad(or at least neglecting it) in order to convince people to install the mobile app. The way their little popup that they frequently show at the bottom of the screen presents itself even suggests that the native app is the proper way to view Reddit. It's bollocks because Reddit is completely text and image centric; if the web can't do its fundamental job to display those two things, then may God have mercy on our souls.
Don't get me wrong, because I don't think that those in charge at Reddit are doing this things out of ill intent. A bunch of people with good will can convince each other of bad ideas, especially the further removed they are from the front lines of engineering.
Many modern webpages are data extraction machines, which is why things got worse in many places. The design is still functional but the main function changed — where it was previously focused on the user and the content it is now clearly all about analytics and ads.
I’d like to say I can’t blame them, because the money needs to come from somewhere, but I am not sure if this is the long term sustainable decision they will praise themselves for when they look back onto things in a decade.
I disagree. In the past decade companies have been collecting more data than ever and software actually became a lot worse than what we used to have. Now it’s all about catering to idiots (the lowest common denominator) and wasting user’s time.
It’s been two years since I last used the native iOS Reddit client, even though I think the responsive web version is embarrassingly bad, because of one reason alone: battery life.
I doubled my screen-on battery life by abandoning the native client.
Maybe in the two year interval they found a way to not be battery vampires but I’m not particularly in the mood to give them the benefit of the doubt.
Keep in mind that just about two literal years ago, the mobile experience was pretty much exactly the same as it is today, if not worse.
I imagine I’m not alone in this perspective: the “smooth, slick, native” app is worse than the stuttering, crashing, mobile web version. Period. Because I value my battery life.
The best way to build something good is to have talent, intuition and ideas.
There are people creating wonderful things from a single idea without a minute of market research, and there are people just navigating blindly driven by a bunch of metrics they try to optimise separately.
Usually the latter are mediocre optimizations of mature products, and they often reduce its value for the user.
One day I suppose Reddit will ban third-party apps for the same reason Twitter did: they're more usable than the official one and feed less surveillance back.
It is still worse than other reddit apps.
>Secondly, the best way to build something good is to have more data. This involves tracking people. I think most people have two opposing options: tracking people sucks, and making product decisions in a vacuum is wrong. It's a tough balance.
There is a difference between analytics that just track usage, and full blown tracking - but nowadays storing data is cheap so why not gather everything and then filter the rest for analysis...
The problem is that analytics, or i should say profiled user data is profitable to sell. Maybe not directly, but allow advertisers to serve ads to very specific users.
the main purpose of their app is to open third party links. that can't be a better experience in any native app imho
> the best way to build something good is to have more data. This involves tracking people.
This just leads to faster horses. The best way to build something good is to use it
I never really thought reddit would degrade in performance like this, I immediately went back to old.reddit.com and went on with my life. I still don't get why every rewrite of a website I've ever used almost always ends up being ridiculously bloated.
Tild.es is okay but it has very few users. Because reddit has so many users I can find good discusion on just about any topic that I'm currently looking into, etc.
At least that's my subjective impression from some of the youngsters I've interacted with on that site.
subreddits can be insanely useful sources of information, but the less serious ones are still enjoyable. Not to mention there are picture-heavy subreddits like /r/malefashion | /r/malefashionadvice.
You're right though, and there's no reason not to have them. I like the expandable-thumbnail interface presented by RES.
I want a new internet.