
Ask HN: What tech choices make “new” Reddit so unbearably slow? - epistasis
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&#x27;m shocked at how slow the interface is, and don&#x27;t even understand how its possible to make web sites so unresponsive to user input. It&#x27;s as bad as visiting a local news site that is laden with ads and several auto-playing videos, but it doesn&#x27;t seem to be running that much ad content.<p>How does one make such a bad web app, and what technology choices should I avoid to make sure I don&#x27;t end up with a mess like this?
======
throwaway13337
The user experience on mobile is hilariously bad.

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.

~~~
teamspirit
Or use old.reddit.com. It's annoying to have to delete 'www' and replace with
'old' every time. I don't stay signed in, otherwise there's an option to only
use old.

~~~
throwaway13337
That doesn't work on mobile with no extensions and googling something that
turns up a reddit result.

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.

~~~
duffpkg
Use i.reddit.com on mobile

------
manigandham
Here's roughly the latest architecture from QCon 2017 [1][2]. Overall it's
because of a bloated React frontend even though there's little to no
reactivity on most pages. It could all be replaced with some standard JS and
CSS animations. Too many API calls pulling too much data for what's being
shown and firing serially as components are loaded instead of getting it in
batches for the entire page.

The site lacks basic optimizations like virtual scrolling to keep the browser
from crashing after a few pages of content. There are also entire npm packages
being pulled in instead of any tree-shaking, or browser-specific polyfills.

The backend is cached by cassandra even though content is highly static and DB
servers are fast enough for their denormalized and partitioned schemas. It's
basically just a few tables used as key/value for each entity type represented
on the site.

1\.
[https://www.youtube.com/watch?v=nUcO7n4hek4](https://www.youtube.com/watch?v=nUcO7n4hek4)

2\. [https://www.infoq.com/presentations/reddit-architecture-
evol...](https://www.infoq.com/presentations/reddit-architecture-evolution/)

------
piinbinary
It seems that the content isn't included in the HTML in the page. Instead, the
HTML loads some JS in a second network request. That JS is compiled and run,
and makes a third network request to fetch the content.

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).

~~~
spiffytech
It's more than that, though. I've been working this weekend on a basic Reddit
frontend ([https://reddit.spiffy.tech](https://reddit.spiffy.tech)) and it
feels much faster to load the front page there on my phone than the mobile
Reddit web app.

~~~
zamadatix
Any way to see what the frontend looks like without giving a weekend project
full access to my Reddit account? :)

~~~
spiffytech
I've updated it to allow anonymous browsing. The github is also here if you
want to self-host:
[https://github.com/spiffytech/LurkerForReddit](https://github.com/spiffytech/LurkerForReddit)

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.

------
randycupertino
New Reddit is horrific. If they ever get rid of old reddit it will cure me of
my reddit addiction for good.

~~~
sys_64738
Exactly this. Old reddit is good for you but bad. Just disable old reddit
already. Liberate me!

~~~
buboard
how come reddit has become such a bad habit? it works ok for me as a general
purpose forum, as long as i avoid the major political subs

~~~
DuskStar
Because every major sub is also a political sub, now.

~~~
Coffeewine
To build on this point, even the discussions which aren’t literally US
politics are predominantly incredibly negative. To a degree that’s the
internet these days, but Reddit exhibits it quite strongly.

~~~
tomjen3
That is also a HN thing, sadly. At least on reddit, it is easier to find a
different community.

------
ravenstine
I'd bet this has less to do with developer incompetence or frameworks and more
with the Peter principle(maybe even the Dilbert principle) inevitably causing
orgs to be run by boobs who hand wave about features and redesigns under
ridiculous timelines.

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._

~~~
gkoberger
Hmm, I don't disagree a lot of factors affect decisions like this, but...
That's not really how board meetings work.

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.

~~~
sgc
The breakdown of this generous interpretation to me is that everyone knows
people _really_ don't want a ton of apps on their device, specifically for
privacy/security reasons. I visit no other site that force feeds their app to
the extent reddit does. If they can't set a cookie and fuck off for a long
while, forget it. I will never install it because of this, and if ff mobile
with desktop requests did not exist, I would no longer visit their site on
mobile.

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?

~~~
boring_twenties
There are third-party apps for reddit that are pretty good, including Slide
which is GPL and available on F-Droid.

~~~
sgc
Third party is a bird of a different feather. The point is to modify the site
to make it more useable, ala RES. But I have res on ff mobile and that is
enough for me.

~~~
boring_twenties
I use RES with FF on the desktop but on the phone an app like Slide is easily
10x better, IMO.

------
dna_polymerase
I just visited a SubReddit, turned off all my anti-tracking and adblock
extensions and compared:

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?

~~~
ravenstine
Not that JS files need to be ginormous, but the application files should be
cached by the browser. The technical problem isn't so much the bandwidth use
but the terrible architecture and design.

~~~
therealdrag0
I think OP is excluding cached files, I did it in incogneto mode and got 58 mb
of transfer from 300 requests...

~~~
dna_polymerase
Cache was disabled for the test, however, the experiment was just really quick
and not representative. I opened a random subreddit that had no image or video
posts, so your mileage may vary depending on the sub chosen.

This is also an anti-pattern, since you should make sure that user generated
content can't bloat your website too much.

------
mharroun
Honestly reddit needs to fire their entire product, ui/ux, and front end
teams. The recent decisions made by all of them have made me avoid reddit like
the plague and fill me full or range when I even do attempt to use it.

~~~
0xdeadb00f
From what it looks like to m they're tying to transition to a more Facebook-
like experience.

~~~
easytiger
In short the "card" advert ui rather than the text article advert ui is vastly
more convertible

------
buboard
More general tangential question: How come, just as when google is saying that
every website is mobile-first now, the SPA frameworks have become so popular?
The tons of JS and HTTP requests they require are clearly ill-suited for
someone browsing in their phone in a subway. How did that happen?

~~~
dehrmann
Part of it is developers on fast PCs with good internet connections. Slow?
It's fast for me.

------
sergiotapia
I recommend using the old.reddit.com subdomain, it's better and less
javascripty.

Also install this to always use the old subdomain.

[https://addons.mozilla.org/en-US/firefox/addon/old-reddit-
re...](https://addons.mozilla.org/en-US/firefox/addon/old-reddit-redirect/)

------
alistproducer2
According to this[0] its react and redux

[0]:
[https://www.reddit.com/r/reactjs/comments/9e77jz/whats_every...](https://www.reddit.com/r/reactjs/comments/9e77jz/whats_everyones_opinion_on_the_reddit_redesign/)

~~~
gravity13
Not that I think react+redux was a particularly great choice for reddit (given
that it's mostly just static content), that post doesn't justify your
conclusion that this is the bottleneck at all...

(But is new reddit slower than old reddit, in the first place?)

~~~
kick
_(But is new reddit slower than old reddit, in the first place?)_

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.

~~~
vmasto
I don't work at Reddit but I take personal offense when someone so unfairly
criticizes the "working class" of a software house like that (ie the non
manager level software engineers).

What makes you think that whatever is wrong with Reddit is due to lack of
talent? It almost never is.

~~~
kick
Working class? Check the compensation levels of engineers at reddit.

~~~
usr1106
I am sure those making the decisions earn more.

------
dewey
On my MBP from 2014 the website is basically unusable, so the only time I
actually use Reddit is via a third party iOS app that I can only recommend:
[https://apolloapp.io](https://apolloapp.io)

~~~
rexf
It's amazing to me how bad the reddit.com desktop browser experience is. I
have no affiliation with Apollo, but the 3rd party native app makes Reddit
actually usable.

------
baroffoos
It could have to do with all the tracking the new reddit does. Just open the
network tab and see it firing off network requests as you move the mouse.

~~~
Deimorz
And to make it worse, they started sending that tracking data through
"functionality" endpoints to make it difficult or impossible for extensions
like uBlock Origin to block without breaking the site. I believe it would pick
a random endpoint out of a few possible choices, but as one example, it would
sometimes use the same endpoint as voting, so that couldn't be blocked without
also preventing you from being able to vote.

It'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.

~~~
kyboren
> It's possible to detect the difference between the request types if you
> examine the actual data on them

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.

------
cyberpip
Design by committee that goes against the initial spirit of the site in hopes
of increasing monetization in spite of user grievances. It's a race to the
bottom and they simply want to get as much money out of the site as possible
at the expense of user experience because someone, or some people, decided the
cost (user experience) was worth the benefit (monetization).

I want a new internet.

------
x__x
I have a feeling they will completely remove old.reddit in 2020, citing fake
security risks and there will be a medium sized digg like exodus

~~~
scubadude
In 2010, there was an alternative in reddit, and people left digg. What's the
alternative to reddit now? There is nothing.

~~~
munmaek
tild.es is the best alternative but last I checked it was text only.

~~~
Tarq0n
That sounds like a feature to me.

~~~
munmaek
It is, but a vast swath of useful stuff on reddit is related to images. That
crowd will still need to go somewhere. Whatever replaces reddit will need to
allow image links as well as text posts and content links if it wants to get
serious usage like reddit.

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.

~~~
boring_twenties
I think the crowd that favors images mostly uses the new redesigned reddit
without complaining.

At least that's my subjective impression from some of the youngsters I've
interacted with on that site.

~~~
munmaek
That may be true to an extent, but there is a huge difference between wanting
high-density, fast loading websites, and wanting to get rid of
image/video/non-text links altogether.

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.

~~~
boring_twenties
There are better examples of picture-heavy subreddits than that ;)

You're right though, and there's no reason not to have them. I like the
expandable-thumbnail interface presented by RES.

------
cellularmitosis
Even more tragic is seeing what has happened with the imgur-reddit situation.
Tapping on an image in the reddit iOS app takes literally 4 or 5 seconds to
display.

------
taurath
[https://imgur.com/a/QAT5BiV](https://imgur.com/a/QAT5BiV)

Above is profilers of the 2 apps.

There's a MASSIVE amount of JS that has to start and run. Note 1.2s of
scripting for full load on old, with 4.6s of scripting on new. Rendering also
triples in size because they're using a lot more CSS.

Note also that the "rich" sidebars in themselves have an extremely long load
time and pop in.

They do this because they made bad technological decisions, and took an off
the shelf low-content SPA-style framework to make what is mostly a static
site. Its also quite likely that they haven't done much tuning. They probably
were tasked with making widgets and new features over anything having to do
with performance, and especially the ad delivery network.

------
nkrisc
It fails constantly in Firefox Android as well. Very common that a page just
gets stuck on the loader and never renders any content. I find it fails less
often in Chrome. Maybe they develop and test on chrome and ship it!

~~~
leadingthenet
> Maybe they develop and test on chrome and ship it!

Nowadays, it's basically a given. And people scoff when we bring up browser
monoculture.

~~~
nkrisc
One of these days I'll debug it and see what exactly is failing. It's just I'm
never near a computer when I'm looking at Reddit on my phone. But I also can't
really be bothered to do entry level QA for them for free.

------
robbya
I think a lot of the issues stem from focusing on the mobile app, and not
prioritizing performance of the web app (or possibly, deprioritizing the web
app and expecting users to migrate to the mobile app).

I.E. I'd guess it's a business focus issue, not specifically the tech stack
used.

~~~
dpau
reddit has been intentionally making the web experience horrible with multiple
popups and hiding comment threads, pushing users to use the app and log in. so
it makes sense that overall performance is also bad. for a better experience
use the app! ugh

~~~
crote
In addition to that, they also seems to be testing a version which completely
disables access to some content to users which are not logged in - it simply
says that you can only view it in the app.

Logging in does allow you to view it on the web, but that's still a pretty
horrible thing to do!

------
cyberjunkie
I'm just grateful that old.reddit.com is still live! I also dread the day they
decide to shut it.

------
dehrmann
Unless it's performing better for session length or something, my question is
how did something with significantly worse load time get past beta?

------
chillacy
Maybe fire up the dev console in your browser and run profiling? Or check out
webpagetest, which has metrics like "time to first paint"

[https://www.webpagetest.org/result/191208_BD_0e906d662819138...](https://www.webpagetest.org/result/191208_BD_0e906d662819138957a2d36f3bf45fd5/)

~~~
Mountain_Skies
Reddit's performance is wildly inconsistent. Profiling might be useful but
then again, it might just tell you some particular server you're connected to
is experiencing some random quirk that only manifests itself now and then. And
of course there is only so much you can tell from the client side about issues
if they've server side.

------
turndown
Clearly the rewriting of the entire site, the old site loads so nicely.

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.

------
grezql
SPA and all those javascript libs

------
louis_pasteur
Add an extension or user-script that turns all "www.reddit.com/ _" links on
your web pages to "old.reddit.com/_". The old reddit is the one used by most
nerds and those who initially joined reddit for its spirit.

If you don't want to add the extension, you can also visit the preferences
section and there is also an option called "Make new reddit experience the
default" which you need to untick. Try it and see for yourself!

------
kierenj
I really don't see it - can you give an example? I just tried the homepage and
first few links on reddit.com and old.reddit.com.

What do you see?

~~~
JMTQp8lwXL
Tons of glitches.

\- 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.

------
qwerty456127
By the way, isn't there an open-source desktop-native client for reading (and
searching through) Reddit?

------
utf_8x
How to use reddit in 2019: put "old." before every url... (e.g.
[https://old.reddit.com/r/all](https://old.reddit.com/r/all)), you get the
good old version that works fine IMO...

------
thorin
Maybe the same things that google mail used to "enhance" their site

------
p0nce
The new website is so bad I just stopped going to reddit.com, or commenting

------
dehrmann
I haven't specifically looked into it, but 10+ years of optimization went into
the old reddit, and a lot of that was at a time when LTE and HTTP2 didn't
exist.

------
gtirloni
Roughly only 20% of the top comments (excluding mine) try to address the
question OP asked. 80% is mostly venting about the new UI.

~~~
buboard
only a very small % of people here work for reddit so as to be qualified to
answer

~~~
gtirloni
Being a web app, everything we need is delivered to the browser or can be
inferred.

------
Havoc
Reddit has always been a steam hot pile. At least they now managed to get
their servers to be overloaded monthly rather than daily

------
theklub
I only use old.reddit

------
sdan
They're using Python and webpack. Not sure what they were using before and
unsure if Python is really dragging them down, but I like their design
(although watching videos on mobile and going through posts on desktop is
extremely gimmicky and buggy).

~~~
duncan-donuts
I think they recently adopted react. They used to be pure python/pyramid (if I
recall correctly). Idk why things are so slow now. They also were open source
for a long time but closed it like 2 years ago.

~~~
rejschaap
> They also were open source for a long time but closed it like 2 years ago.

Makes me wonder why, to protect their amazing IP, or was the code base just
getting too embarrassing to look at?

