[HN Gopher] Angular without SSR is faster than Next.js with SSR
       ___________________________________________________________________
        
       Angular without SSR is faster than Next.js with SSR
        
       Author : Alex3917
       Score  : 56 points
       Date   : 2022-06-27 15:18 UTC (7 hours ago)
        
 (HTM) web link (alexkrupp.typepad.com)
 (TXT) w3m dump (alexkrupp.typepad.com)
        
       | nicoburns wrote:
       | Article can be summarised by this quote (which I very much agree
       | with):
       | 
       | > It's very clear from this data that choice of framework is not
       | the primary driver of site performance; just manually looking at
       | the source code for some of these sites, it's clear that it's
       | things like unnecessary dependencies, outdated dependencies,
       | sites running development mode in production, etc.
       | 
       | Personally, I use React, not because it's faster than Angular,
       | but because it's much more pleasant to work with.
        
         | andai wrote:
         | For many years I believed that better gear would make me a
         | better artist. I learned the hard way that this just ain't so.
         | 
         | I think the same idea applies in this context.
        
           | tshaddox wrote:
           | Sounds like very different ideas. I'm pretty sure having a
           | work environment and tools that are more pleasant to work
           | with will indeed make you a better artist.
        
             | jacksnipe wrote:
             | If you're having trouble learning to paint, but you're
             | trying to learn with a fork, then you should start by
             | replacing the fork.
             | 
             | If you're having trouble painting because your paintbrush
             | isn't made of squirrel hair, then you just need to learn to
             | fucking paint.
        
               | cphoover wrote:
               | Does squirrel hair make a good paintbrush? Never knew.
        
         | bonestamp2 wrote:
         | I prefer to use Angular for the same reason you prefer to use
         | React. It really is personal opinion, both are good and mature
         | frameworks/libraries.
        
       | FinalBriefing wrote:
       | I've found that SSR is generally quite slow. If you're using it,
       | you'd want a CDN or some other caching layer in front of your
       | server so you don't need to render each page server-side.
        
         | jsguy wrote:
         | The main reasons (IMHO) to have SSR are:
         | 
         | * SEO capabilities * Faster response for first page load
         | 
         | And for both of those, a CDN is useful, if not essential -
         | you're missing out on a lot of performance boost if you don't.
         | 
         | Other reasons to have SSR include things such as unfurling,
         | where a CDN isn't essential, but still nice to have.
        
         | TylerE wrote:
         | What about stuff like Phoenix LiveView, which can push dozens
         | of updates per second per client to hundreds of clients
         | simultaneously?
        
           | doliveira wrote:
           | I actually find it sad that this passes as "impressive" these
           | days
        
             | fxtentacle wrote:
             | Agree. Back in he day, people were discussing how to put
             | 10k connections into a single core FTP server.
        
             | TylerE wrote:
             | I mean, this is on a single core, not a cluster.
        
               | switchbak wrote:
               | According to Wikipedia: "The term C10k was coined in
               | 1999", and we've been discussing the C10M problems for
               | years now.
               | 
               | Clearly this is doing a lot more work than serving static
               | content, but .... dozens per second? Even per-core,
               | that's a shockingly low number.
        
               | TylerE wrote:
               | Did you miss the hundreds of clients bit? So we're
               | talking several thousand responses per second per core. I
               | think that's fairly impressive, and VERY different from
               | an FTP server connection that isn't really doing much
               | most of the time.
        
               | doliveira wrote:
               | Even then, the heavy lifting of pushing the dozens of
               | updates is mostly in the kernel, isn't it?
               | 
               | Don't get me wrong, it's pretty good and just the fact
               | that you're pushing these stats reflects quite well on my
               | (external) impression of Phoenix: most don't even bother
               | to try and just resort to "hardware is cheap".
               | 
               | It's just that this should be the default. Reminds me of
               | this tweet from @SwiftOnSecurity:
               | 
               | > Once you understand your computer has 16 cores running
               | at 3GHz and yet doesn't boot up in .2 nanoseconds you
               | understand everything they have taken from you.
        
           | anonyfox wrote:
           | Well it's a completely different technology compared to JS'
           | spa/ssr approach, but in most cases (latency is not too bad)
           | vastly superior: perceived and real performance is
           | ,,instant", the code amount is smaller, less and more robust
           | libraries involved.
           | 
           | Disadvantage: the individual components are not as nicely
           | packaged up with markup/css/logic in a single file and must
           | be hooked up to the global socket explicitly.
        
           | ksbrooksjr wrote:
           | The obvious downside to Liveview is that all of the UI state
           | resides on the server. Every UI update therefore requires a
           | full roundtrip request to the server, and so reducing latency
           | is of paramount importance. That's why fly.io is so heavily
           | invested in the Phoneix ecosystem, because their service is
           | predicated on the idea of distributing your app globally to
           | reduce latency. A React/Angular/Vue spa on the other hand can
           | make decisions about how to update the UI without contacting
           | the server. In fact, many PWAs these days are actually
           | designed to work completely offline.
        
             | cultofmetatron wrote:
             | > Every UI update therefore requires a full roundtrip
             | request to the server,
             | 
             | while this is certainly the easiest path, you don't HAVE to
             | put all your ui states on the server. its trivially easy to
             | plugin alpinejs for small ui state stuff that is all client
             | side.
             | 
             | Another huge benefit, the js escape hatch lets you create a
             | bidirectional bridge between your custom js and your user's
             | liveview instance.
        
               | ksbrooksjr wrote:
               | Yeah you can definitely pull in Alpine for UI updates
               | that don't require any server side interaction, but then
               | your app's logic is fragmented between different
               | frameworks (Alpine and LiveView).
               | 
               | It's definitely doable, and I know the PETAL stack
               | (Phoenix Elixir Tailwind Alpine) is super popular, but
               | it's nice (and perhaps less error prone) to have all of
               | your UI logic handled by a single framework. This
               | consolidation of UI code under a single framework was one
               | of the killer features of SPAs initially. Prior to that
               | lots of sites were built with a server side templating
               | framework with jquery sprinkled in for client side UI
               | updates.
        
       | friedman23 wrote:
       | Angular could be the fastest framework in existence and that
       | would still not be a good reason to use it.
        
         | bgun wrote:
         | This comment has the same energy as people who still use a
         | dollar sign when spelling "Microsoft".
        
       | tracerbulletx wrote:
       | I think it would be entertaining to have a recurring competition
       | where teams sign up to compete on a few metrics like performance,
       | number of total features completed, and maybe some kind of code
       | review. Everyone would be given the same project spec and list of
       | features, and have the choice of one of a few different
       | frameworks per contest. So you'd end up with like 10 teams of
       | various quality using react, and 10 using angular, and 10 using
       | Vue or whatever the contest definition is.
        
         | solardev wrote:
         | > I think it would be entertaining to have a recurring
         | competition where teams sign up to compete on a few metrics
         | [...]
         | 
         | Pretty sure this competition exists. Isn't it called
         | "JavaScript"? ;)
        
       | onion2k wrote:
       | I have a theory that pretty much every developer saying "X is
       | best for Y" is simply believing what a developer relations
       | engineer or evangelist has said to them at a conference (or they
       | read on a blog post, or heard 5th hand from a dev they know).
       | What they fail to realise is that people who work in dev rel jobs
       | _are paid to promote a product._ Next.js is wildly popular
       | because the dev rel team are excellent devs who produce fantastic
       | content, but they 're paid to promote Vercel and Next, and they
       | do it well, but they don't mention where it _isn 't_ a good fit.
       | Consequently every frontend dev claims Next is the answer to
       | everything, and then builds a site that doesn't work very well
       | because it doesn't fit Next's model.
       | 
       | I'm singling out Next but it's not limited to that framework. I
       | like Next. I use it. I spent weeks working out if it could do
       | what I need before I started. The problem isn't Next, it's
       | applying Next where it doesn't fit. This is true for _everything_
       | that has paid promoters. You have to do your homework. You can 't
       | blindly trust what the internet says.
       | 
       | When the dev industry stops conflating the opinion of someone
       | paid to promote a product with stop cold facts that apply to
       | everything then things will improve.
        
       | Beldin wrote:
       | > _people have been promoting the idea that the way to fix slow
       | Angular sites is to rewrite them in Next.js, and the data very
       | clearly does not support this._
       | 
       | Then again, the data also doesn't refute this. It simply shows
       | angular sites on average score better than nextjs; it does not
       | give any info about the speedup (if any) of rewriting the slowest
       | of angular sites in nextjs.
       | 
       | For that, you'd need data on a bunch of slow angular sites before
       | and after their conversion to nextjs.
        
       | pictur wrote:
       | what are the advantages of using angular right now? in terms of
       | documentation, it doesn't look like an atomic reactor compared to
       | the past. more like simplified
        
         | InsaneOstrich wrote:
         | It's very opinionated compared to the alternatives and it has a
         | "batteries included" kind of approach. There's a "right" way to
         | do things and you don't need to pull in a lot of third party
         | libraries for basic functionality. The native typescript
         | support is really nice too.
        
           | jeremycarter wrote:
           | I've worked on react apps where some features use different
           | routers, state stores and component syntax. Angular gives you
           | 2 ways to solve problems and keeps things consistent and on
           | the rails.
        
         | trhoad wrote:
         | I worked with React almost exclusively for ~5 years. I got so
         | fed up with everyone reinventing the wheel on every project,
         | coming to Angular (late) was a massive breath of fresh air. I
         | now spend more time building valuable features rather than
         | discussing changing state management libraries and people
         | banging on about hooks all day long. YMMV, and I'm certainly in
         | the minority, but I'd probably choose Angular over React for
         | any new projects now, personal or professional. The only thing
         | I really miss is that JSX is much more ergonomic and the
         | devtools for React are a bit better.
        
         | aluminum96 wrote:
         | In my opinion, the biggest advantage of Angular is how
         | batteries-included it is. Everything just works out of the box,
         | and project configuration is very standardized. The framework
         | owns everything from common UI components (Angular Material) to
         | your build process (Angular CLI) to non-core packages (router,
         | forms) to state management (RxJS).
        
         | jeremycarter wrote:
         | Angular has great support. It is the front end to some
         | absolutely huge apps like Google AdWords, Google Cloud Platform
         | etc. Angular shines when you have 10+ devs working on the
         | project. It's not slow, flexible and the boilerplate module
         | code will be removed in the next version. Basically you just
         | have to give it a go, so many people trash technology without
         | giving it a unbiased go.
        
           | steve_adams_86 wrote:
           | Having used Angular 1 then migrating to 2, and then trying it
           | again very recently I wonder if a lot of people were burned
           | by early Angular and unwilling to try it again.
           | 
           | It's leaps and bounds ahead of what it was in terms of end
           | user and developer experience. The tooling is dramatically
           | improved. If you asked me 6 months ago what my position on
           | Angular was, I probably would have said something like "I
           | haven't used it recently, but older version were pretty
           | awful. Bad DX, incredibly slow builds, huge bundle size,
           | etc". Today I think it's pretty compelling for the right
           | projects.
           | 
           | Like anything that doesn't just fade away, there's a reason
           | people still use it. There are some talented and intelligent
           | people driving it forward. I'm not eager to use it, but I was
           | really glad to see how much it has improved.
        
             | wdb wrote:
             | Yes, Angular 1 wasn't great and I haven't looked back
        
             | zdragnar wrote:
             | The code quality of angular 4/5/6 and the add-on packages
             | was so bad, I wouldn't want to lock myself into that
             | ecosystem ever again. I don't remember exact numbers, but
             | I'm pretty sure that about half the bugs that project had
             | were due to angular, poorly designed Rxjs interactions, or
             | angular flex-layout.
        
           | wdb wrote:
           | Google Cloud Platform Console is really slow for me. Always
           | painful experience to use especially switching products.
           | Wouldn't say that's a good advertisement for Angular
        
             | Alex3917 wrote:
             | > Google Cloud Platform Console is really slow for me.
             | 
             | While this definitely isn't because of Angular, I will note
             | that it's currently deployed in development mode.
        
         | aluminum96 wrote:
         | I'm going to reply twice, because I'm a true believer (TM).
         | 
         | Another set of advantages comes from how declarative Angular
         | is. With React and JSX, everything is super imperative
         | (setState, loops to generate dom, etc). In Angular, RxJS gives
         | you a really powerful reactive model for your state, directives
         | give you a much more declarative way of describing application
         | behavior, and the limited template microsyntax encourages you
         | to put the complexity in your typescript, not in templates.
        
         | Alex3917 wrote:
         | > What are the advantages of using angular right now?
         | 
         | A low total cost of ownership compared to other frameworks
         | because:
         | 
         | - The code for every Angular project is structured the same way
         | 
         | - The code for components (and directives, services, etc.) is
         | generally very readable
         | 
         | - Everything is easy(ish) to test
         | 
         | - 280k Stack Overflow questions, vs 95k for Vue and 19k for
         | Next
         | 
         | And ease of hiring due to 170k Angular developers in the US
         | (per Sales Navigator), as opposed to 50k for Vue.js and 48k for
         | Next.js
         | 
         | And in general Angular seems much easier to learn. If you spend
         | 20 hours watching the Udemy course then you pretty much know
         | it, whereas I regularly see job ads looking for folks with 6+
         | years of React experience. Now obviously you always hear about
         | job ads looking for folks with 10 years of experience with some
         | technology that's been around for two years, and yet I rarely
         | come across Angular job ads that implicitly assume it takes
         | multiple years to learn how to use the framework correctly.
        
           | acdha wrote:
           | > - 280k Stack Overflow questions, vs 95k for Vue and 19k for
           | Next
           | 
           | > And ease of hiring due to 170k Angular developers in the US
           | (per Sales Navigator), as opposed to 50k for Vue.js and 48k
           | for Next.js
           | 
           | Listing large numbers without commentary is a bit of a red
           | flag unless you can point to how you analyzed the raw data --
           | e.g. does more questions mean more happy users or more
           | problems which people can't figure out on their own? Does
           | that developer figure exclude the people who said "I used
           | Angular 1, hated it, and switched to React"? That last is
           | related to the conspicuous absence of React, which has higher
           | numbers in both categories.
        
       | ramoz wrote:
       | @alex3917 summarizes in comments below, and what are also similar
       | reasons why I believe modern angular will "overtake" modern
       | react/frameworks like next.
       | 
       | Angular in 2022 is simpler than react. It's what react was in
       | 2015 when Angular 1.x was a complicated and annoying beast.
       | 
       | Now, Angular is simple and pleasant; while my scaled, hooks
       | infested, react apps make me feel like I'm handicapping myself.
        
       | ec109685 wrote:
       | This is such a misleading headline. It compares the speed of a
       | basket of sites that happen to use Angular in some capacity with
       | a separate list of sites that happen to use Next.js and makes a
       | broad sweeping conclusion about framework speed?
       | 
       | I wonder how reliable this is for SSR as well (and sites that opt
       | into SSR might actually have more complicated sites, so skewing
       | the numbers):
       | https://gist.github.com/Alex3917/fec45e5c2114c2c13b41b30e198...
        
         | dawnerd wrote:
         | You can't even assume a nextjs page is SSR without being on the
         | dev team.
        
       ___________________________________________________________________
       (page generated 2022-06-27 23:00 UTC)