Did RSCs Really Turn React Into PHP?

Поделиться
HTML-код
  • Опубликовано: 25 июл 2024
  • 👉Code: github.com/jherr/rscs-vs-php/...
    👉 I'm a host on the React Round-Up podcast: devchat.tv/podcasts/react-rou...
    👉 Don't forget to subscribe to this channel for more updates: bit.ly/2E7drfJ
    👉 Discord server signup: / discord
    👉 VS Code theme and font? Night Wolf [black] and Operator Mono
    👉 Terminal Theme and font? oh-my-posh with powerlevel10k_rainbow and SpaceMono NF
    0:00 Introduction
    1:18 Server Side Developer Experience
    2:55 Client Side Developer Experience
    9:31 Is React Still Worth It?
    12:56 Performance Comparision
    15:45 Rust Rocks It
    17:33 Are You As Hypocritical As Me?
    18:32 Outroduction
  • НаукаНаука

Комментарии • 254

  • @jherr
    @jherr  Год назад +40

    It is important to note that my jQuery code and vanilla JS code are performing what amounts to dangerouslySetInnerHTML operations (in React terms). In the case where you don't know the provenance of the data, or you have not properly sanitized it, this can lead to an XSS vulnerability, though the code shown here does not have an XSS vulnerability because the user input is not reflected.
    Please take care if you choose to use the JavaScript in the PHP or Rust examples (which is not recommended) to sanitize the code, or to create DOM elements programmatically and only set their innerText to avoid potential for XSS attacks.

    • @VincentUchennaOk
      @VincentUchennaOk Год назад +2

      Not a fair comarison at all. Far from it. PHP is a bare server language. RSC+React is a library on top of "Javascript" which is a client language. Use laravel-breeze+alpinejs as a library ontop of PHP and see the difference. Thats what will be a fair comparison, not this..

    • @jherr
      @jherr  Год назад +5

      @@VincentUchennaOk Question for you, if I put both of these sites side by side and you were not able to bring up the inspector or view source, if you were able to only interact with it as a regular customer would, could you tell which was which? Would you know which was React and which was PHP? Would just a regular customer using the site care if it was created using React or PHP? From the customer perspective the two apps are the same. Thus, it is a fair comparison. Not all sites are huge mega-complex monstrosities. Not all sites need a framework to build them.

    • @VincentUchennaOk
      @VincentUchennaOk Год назад +2

      @@jherr That's not my point. I get the fact that they both look alike from a customer point of view. But in terms of technical comparison, it's far from fair. And I feel the pain from most PHP devs right now. Thank God for Laravel, etc.. and all those building tools to make the language most accessible like what nextjs is doing with React.
      And to look at it more critically, data is every company's business and power, so every Ceo would trust a safe and full featured backend server over a new tech like RSC, than compare frontend technologies. My point is this, every CEO will safely add new frontend tech to their reliable backend, than add new backend tech to their reliable frontend, always...
      It's inside out, not outside in..
      That's why is think this RSC might struggle to take root for long..

    • @wizamit
      @wizamit Год назад +1

      Exactly what I was thinking. Why are we comparing a meta framework with simple PHP and jQuery 😅
      Just use laravel + livewire.

  • @ing.jdplee
    @ing.jdplee Год назад +12

    The content of the table can be put in a and work with that so the headings dont need to be put each time.

  • @kevanschwitzer8585
    @kevanschwitzer8585 Год назад +4

    Great content, easy to listen to, and highly informative. One thing possibly worth emphasizing further -- Response times or throughput for hello world style cases shouldn't carry too much weight. In many (most?) apps, most of the heavily lifting will be dominated by things outside app code, the database being the most common. So unless maximum performance at pretty much any cost is your goal, something that emphasizes developer productivity for web apps often hits the sweet spot. (i.e., something like PHP for a web app vs. Rust, C, C++). Even from a perspective of placing a high value on performance (see judyrecords for example) it wouldn't be a good choice to write/re-write it in a lower level language to eek out 10ms.

  • @ricardodasilva9241
    @ricardodasilva9241 Год назад +67

    I think would be cooler to compare nextjs to laravel

    • @nimmneun
      @nimmneun Год назад +5

      Yup, Laravel adds quite the overhead. And maybe use php-fpm with e.g. nginx, since PHPs built-in Webserver is only meant for debugging etc. It's rather slow.

    • @king-manu2758
      @king-manu2758 Год назад

      I would love to see this too

    • @elamandeep
      @elamandeep Год назад +1

      I agree

    • @SpaghettiRealm
      @SpaghettiRealm Год назад

      @Shadow how about using fetch

    • @rajfekar4839
      @rajfekar4839 Год назад

      @Shadow use livewire component

  • @regibyte
    @regibyte Год назад +43

    Fantastic video Jack! Thanks a lot for taking your time to do this comparison.
    On a side-note, for heavy PHP users these days there is another library that really shines and it's alpinejs, it's lightweight, fast and integrates easily with php.

    • @jherr
      @jherr  Год назад +8

      I will check that out! Thank you!

    • @waleedmasoom6326
      @waleedmasoom6326 Год назад +3

      @@jherr on that note, the TALL stack is being implemented in my team (tailwind, alpine, laravel and livewire) and I'd be curious to hear about how livewire and alpine look/feel to someone so familiar with the React world such as yourself.

    • @elamandeep
      @elamandeep Год назад +1

      ​@@jherrplease compare laraval vs next js

    • @marcuss.abildskov7175
      @marcuss.abildskov7175 Год назад

      They got nothing to do with each other lol

    • @regibyte
      @regibyte Год назад +1

      ​@@marcuss.abildskov7175 you are right but at the same time, in this video Jack used NextJS and compared it to raw PHP, it doesn't make sense either to compare an SSR framework to a full language, but here we are anyway.
      NextJS offers so little to the development experience in comparison to everything laravel has to offer, it would indeed not be fair to compare both.

  • @wp_panther
    @wp_panther Год назад +19

    yay I'm just glad people are talking about Php again. I love it and I think it's one of the easiest languages to pick up if you want to start wrapping your mind around server-side!

  • @cloudkungfu
    @cloudkungfu Год назад +2

    I love that the investigation gets wayyyyyyy more in depth as the video progresses 😂 good stuff!

  • @hypergraphic
    @hypergraphic Год назад

    Great video! It is cool to see PHP again as it's what I cut my teeth on back in '08. At work I'm still just using plain old client side react with Vite for the dev server. Since all our features are behind a login, SEO doesn't really matter to us. Also, as cool as all the SSR stuff is, I struggle to see the advantage of switching. We have a lot of complex UI stuff and I wonder how RSC will change it.

  • @kohelet910
    @kohelet910 Год назад +2

    Really cool video ! I love those stats comparisons !
    Rust is really impressive. And I do agree, the more i use the app router, the more i feel frustrated by having small tiny bugs, and I don't always get why is that happening.

  • @tariksadiku4723
    @tariksadiku4723 Год назад +22

    I'm just a junior developer, but I also agree with the "we still don't know the best practices for the relationships between RSC and RCC". I believe, without clear instructions on how to handle these two, it might get messy really quick.

    • @marcuss.abildskov7175
      @marcuss.abildskov7175 Год назад

      React in a nutshell. Garbage library m

    • @najlepszyinformatyk1661
      @najlepszyinformatyk1661 Год назад +2

      @@marcuss.abildskov7175 BS

    • @edhahaz
      @edhahaz 6 месяцев назад

      Some other framework will figure it out eventually and react will clone it within 1year

  • @kal9421
    @kal9421 Год назад

    Fantastic video Jack! Thanks a lot for taking your time to do this comparison.
    I want to ask you if you can can give us an example about how to setup react server component with express or how to integrate react rsc with existing express app
    thanks !

  • @luizgrocco
    @luizgrocco Год назад +2

    Although it was a really nice comparison and a wonderful job at it as always from you Jack. I find it hard to really trust any of the data we got simply because a more complex app is needed to accurately measure many of the benchmarks performed in this video. If a base case App is all we care about, then framework builders should make their framework as simplistic as possible, since their out of the box "create--app" will probably be the most performant in that scenario. But then, in a large project, that will no longer be true because of all the extra stuff needed to make a good App. All in all, what I'm trying to say is that this video is likely a "micro-benchmark" scenario that should be taken with a grain of salt.
    Either way, great job! The video still highlights many ways of accomplishing the task and is a valuable source of information like always from you Jack, keep up the good work!

  • @heyjitendra
    @heyjitendra Год назад +7

    At the end Jack simply brought the absolute boss Rust lmao

  • @thesunabsolute
    @thesunabsolute Год назад +4

    The RSC patterns completely break down when you start to scale up an application. It becomes very difficult to remain consistent in how you use them. We ran into issues where we were just declaring "use client" on most components and only using the RSC as a data fetching layer. This led to issues with prop drilling from the top data component down to child client components. At that point, we just ditched the re-write project for 3 of our big Next apps. People hate getServerSideProps, and I get it, but I'd rather have that implementation over RSCs, as it sets a boundary, and the component receiving those props is just a client component. It just makes way more sense to me. I would look to something like Remix with its action/loader paradigm if I wanted to move away from NextJs, should they sunset pages and gSSP().

    • @jherr
      @jherr  Год назад

      Yeah the loader paradigm is sweet.

  • @kaas99
    @kaas99 Год назад

    Clean breakdown thanks! I agree with on not adopting App router coding pattern yet.

  • @parlor3115
    @parlor3115 Год назад +3

    Thank you for this. I will refer our PM and techlead to this video once I propose rewriting everything in Rust!

  • @2penry2
    @2penry2 Год назад

    Great illustration of why "view as a product of state" is such an attractive offering. Important lesson for new learners about where we came from and why Nextjs/React w server actions is a huge plus in terms of DX.

  • @arjobansingh1940
    @arjobansingh1940 Год назад

    Hey Jack,
    Great content, you are among the only few content creators who make videos about intermediate to advance topics. Kudos for that.
    Can I request a video regarding usage of React query in NextJs App directory?

  • @zakir.nuriiev
    @zakir.nuriiev Год назад +1

    Thanks a lot for an interesting comparison!

  • @garrickcrouch4530
    @garrickcrouch4530 Год назад +2

    Hey Jack thanks for all the vids. Super cool to see. One kind of weird comparison is using php dev server. Do you think it would be a much fairer comparison for all to use a proxy server like nginx and runtime/process manager more typical to how node and php are deployed in production services?
    NGINX -> PHP FPM -> some php stuffs
    NGINX -> node upstream server via PM2-> some node stuffs
    You could try an Open Swoole for PHPs server and probably got nearly the same speed of the Rust server form testing I've seen with it.
    THanks for the vids!

    • @jherr
      @jherr  Год назад +2

      Hmmm, good to know! I'll check that out.

  • @other_perfection
    @other_perfection Год назад +1

    thank you! great video as always

  • @mengfandy7365
    @mengfandy7365 Год назад +2

    Nice Jack, i love your channel :)

  • @tech3425
    @tech3425 8 месяцев назад +1

    Really well made video!

  • @nightshade427
    @nightshade427 Год назад +6

    Not sure about php, but it is very similar to asp webforms and postback, if you want async components it looks very similar to asp webforms with updatepanel postback, from 2005. The code and approach of react server components and server actions seems very similar.

  • @mahmoudmousa2405
    @mahmoudmousa2405 Год назад +10

    Thanks for making this video. It must have taken a lot of time.
    I still thinks React is going the wrong way. What NextJS is achieving now can be done with simpler code like you showed here.
    This can still be much better by using AlpineJS or Tubro

  • @yaanno
    @yaanno Год назад +1

    Thank you for including Rust (again)!

  • @Flash136
    @Flash136 Год назад +5

    The component model and state management of React is hard to beat. I'm still sticking w/ React, but for now I will have to use the pages dir because the app router is still too slow.

  • @CFXTBogard
    @CFXTBogard Год назад +3

    1. Thanks for adding my comment in your video. that make my morning
    2. at the end of the video, where you show the charts it would be nice that it indicates what result is better (Page Size (Kb)
    Lower is better), Response Time(s)
    Lower is better, Request Per second
    Higher is better)
    In that way it is clear what is the optimal value on the chart.
    Thanks!

  • @klutch4198
    @klutch4198 Год назад +1

    Thanks Jack!😊

  • @KyleRonning
    @KyleRonning Год назад

    I'm doing a DevShare presentation at work this week on React Server Components. We have a lot of PHP code at my work. This video is great. We should just sit and watch this instead!

  • @runonce
    @runonce Год назад +2

    Great vid! I was expecting to see "components" being listed as a huge advangtage to PHP, for me that is the killer feature of React. Also I wonder how would affect the results if you used a PHP framework like Laravel or Symfony.

    • @jherr
      @jherr  Год назад +1

      Yeah, that's true. You are correct. That would be the first and primary benefit. I guess I skipped over that to isomorphic rendering of said components.

  • @yashkhd1100
    @yashkhd1100 Год назад +13

    Excellent video Jack..!! I think there needs to be rethought in direction major JS frameworks are going. With cut throat competition in JS frameworks space they are just coming up with features which are not well thought out and more of a patchwork. Just look at syntaxes like "use client" and than there are special folders in NextJS with '(' syntax, all this I consider not very mature design. It works but it's not clean. Putting server functionality in client side frameworks is not adding much of a value. The whole JS full stack thing started with developers able to share models and some common functionality between both client and server so both always remain in sync and JS is the only option which is widely supported in both client and server. However, doesn't matter how much optimized JS runtime engines are at the end of the day JS is a "scripting language" and all variables/functions in JS is merely an "associative array". There is nothing much compiler/interpreter can do to get more performance. Just look at perf numbers...languages like PHP which is not known for performance are easily beating JS by miles. Matured systems like Java or .net core will easily beat JS and PHP by miles. In my opinion rather than overengineering this JS frameworks React should continue to improvise on client side and let server side systems handle their things for the better.

    • @2gbeh
      @2gbeh Год назад +1

      Agreed

  • @mehrdad-ai
    @mehrdad-ai Год назад +1

    love your honesty!

  • @saintgalgo
    @saintgalgo Год назад +2

    What would be the bundle size if instead of using a client component with a server action you just used a server component and filtered the json response using query params?

    • @jherr
      @jherr  Год назад +1

      I think I did a bundle size check pre-client component and the numbers were really close to with the client component. Not using client components does not mean a zero sized bundle. Not even close. It still includes React, and still does hydration. It just hydrates from the JSON payload instead of re-running the client components.

  • @bigmistqke
    @bigmistqke Год назад +1

    looking forward to the interview with ryan!

  • @BeyondLegendary
    @BeyondLegendary Год назад +12

    Impressive, very nice. Let's see Paul Allen's performance comparison.

    • @jherr
      @jherr  Год назад +1

      So the Microsoft Paul Allen? Or some other guy?

    • @BeyondLegendary
      @BeyondLegendary Год назад +1

      A movie character played by the B-lister Jared Leto.

    • @nathanpointer7844
      @nathanpointer7844 Год назад +1

      Love that meme

    • @codedusting
      @codedusting Год назад +1

      Lmao 🤣🤣🤣 you're commenting this in every one of Jack's videos.

    • @user-gp2vk8xn8t
      @user-gp2vk8xn8t Год назад +1

      ​@@jherr american physco movie starring Christian Bale

  • @nyambe
    @nyambe Год назад

    is this like server/api in nuxt 3?

  • @johnychinese
    @johnychinese Год назад +2

    Yep, I still use pages for any project and will continue to use. It just makes sense

  • @nightshade427
    @nightshade427 Год назад +3

    I think people were saying it's similar to modern php with Laravel and htmx/livewire. Not similar to old school php with jQuery.

  • @sammckay
    @sammckay Год назад +13

    Laravel with Livewire would have been a nice comparison for the PHP side. Nice video though

    • @lutfiikbalmajid
      @lutfiikbalmajid Год назад +1

      Livewire is always send request for every states action.

  • @bideshbanerjee5506
    @bideshbanerjee5506 Год назад +1

    Jack it's a request if possible can u make a video about making our own server component setup..and also explaining how RSC is working....🙏🙏🙏🙏

  • @deimiosxxx
    @deimiosxxx Год назад +13

    Dev speed is usually worth more money than performance. Once performance begins to be an issue you are making enough money with your app to hire primeagen to rewrite it for you in rust.

    • @Asis2036
      @Asis2036 Год назад

      Toms a genius

    • @davvidess
      @davvidess Год назад

      you mean you can hire Tom to rewrite in JDSL

  • @shayanalijalbani9894
    @shayanalijalbani9894 Год назад

    Should we use edge in next js real world projects can you make a video on it

  • @iammahabub
    @iammahabub Год назад +1

    It was legit & had a great discussion ❤

  • @Flash136
    @Flash136 Год назад +2

    5:46 TIL you can await and receive data from a server action.

  • @xanthe7045
    @xanthe7045 Год назад +1

    Wow! I guess it's about time i migrate my NextJs app to PHP :)

  • @ouss
    @ouss Год назад +7

    Tom uses PHP

  • @bm830810
    @bm830810 Год назад

    a comparison with sveltekit would also be interesting

  • @shayanalijalbani9894
    @shayanalijalbani9894 Год назад

    Can you make a video on your vs code setup

  • @robwatson826
    @robwatson826 Год назад +2

    That was a great video Jack, although as an avid PHP fan I was screaming at you for using jQuery so I'm glad you mentioned Vanilla JS towards the end.
    Very interesting to see that Rust server at the end too. I wonder if there's some future where we use Rust to deliver the SSR'd part of a page and React (or some other framework) on the front to handle the CSR?

    • @jherr
      @jherr  Год назад

      Hmmm, that would be tricky because you'd have to get the hydration setup exactly right. Basically the Rust templating code (or whatever) would have to exactly produce the same HTML to match what the JS code is going to do. So you have an even more drastic version of the two languages problem that we have with PHP and we "solved" with isomorphic rendering.

    • @robwatson826
      @robwatson826 Год назад

      ​@@jherr That's a very good point, maintaining 2 sets of code producing the same outputs is not a simple endeavour!

  • @walidmkw
    @walidmkw Год назад

    In long term, the state management would exist on rust too no ? A fullstack framework as nextjs is but with rust instead of node ?

  • @neociber24
    @neociber24 Год назад +1

    I like Rust but we don't have the DX of Javascript and React, I try using Yew and Leptos for SSR and reloading during development is too slow because we need to compile each time.

  • @deathdefier45
    @deathdefier45 Год назад

    I worked with PHP once for a project in December, figured out how to use it within a day or two just basic crud didn't know it was this performant.

  • @ejoojoo
    @ejoojoo Год назад

    add solid to the comparison

  • @boot-strapper
    @boot-strapper Год назад +3

    YOU DID IT, YOU TOOK MY RECOMMENDATION TO DO SOME RUST!!!!!!!!!!! wooooooooooooooooooo

  • @mmzzzmeemee
    @mmzzzmeemee Год назад

    Can you do a vid on incrementally changing components from using the pages dir to the app dir?

    • @jherr
      @jherr  Год назад +1

      Sadly I don't think anyone has really good best practices for that. Those are evolving day-to-day. And the App Router is still evolving.

  • @sarbull
    @sarbull Год назад

    what year is this?

  • @gordonfreimann
    @gordonfreimann Год назад +1

    i would LOVE to see same metrics with solidjs too with signals😢

    • @jherr
      @jherr  Год назад

      IMHO, probably going to end up somewhere between NextJS pages and PHP. There is an upward bound on the amount of speed you can get out of a Node server.

  • @skapator
    @skapator Год назад +5

    Sad but true, the decision for all is based purely on job market. Not tech. Unless PHP starts to get more views on youtube.

  • @johiny
    @johiny Год назад +1

    there are lots of ways of do somenthing in web development or in software in general, I guess you have to put in a weighing what you need, what you want, ex: performance, friendliness development, eco system, all that dependent on you and your team, and it can change overtime, I'm sure there is a good reason of why multiple companies started its projects with ruby on rails regardless it wasn't super popular, like everything in the life it depends.

  • @nubian_goat
    @nubian_goat Год назад

    I’ll still use app router since that’s the only thing I know 😅, would be amazing to learn that rust tho. Any tips for a good video on it ? ❤🎉

    • @jherr
      @jherr  Год назад +1

      Well, as it turns out this video is getting some Rust love. Someone has already given another implementation of the Rust example, this time using Axum, and it's up in the repo now.

  • @dracula5752
    @dracula5752 Год назад +1

    what theme you using for vscode? i think for smaller and simpler project php is simpler and good but for bigger projects you need react,vue. using php so nice to see on yt. nice video :)

  • @JLarky
    @JLarky Год назад

    Please compare to server rendering in Marko and Qwik :)

  • @Svish_
    @Svish_ Год назад

    You there's a `` tag for tables, right? 😛

  • @jcandeli
    @jcandeli Год назад

    This is a great video but as a side tangent, does it bother anyone else that he doesn't use a semantic Table element instead of Divs?

  • @nemanjazivaljevic1656
    @nemanjazivaljevic1656 Год назад

    Could you make a video about Rusts Sledgehammer framework?

  • @fcnealvillangca7943
    @fcnealvillangca7943 5 месяцев назад

    I actually plan to refactor my apps to HTMX and alphine, django and just make overkill todo app list with authentication in each front end framework with nextJS, Nuxt, Sveltekit, Etc Etc. incase future job applications wants a sample of those lol. the only constant in JS eco is the changes monthly. instead of correcting some lapses from previous push I ended up updating new version and breaking changes in frontend I'm so tired 😢

  • @MrEnsiferum77
    @MrEnsiferum77 Год назад +3

    RSC and RQ next video?

  • @venomweed
    @venomweed Год назад +1

    bro brought a bazooka to a knife fight i was not expecting rust ngl :p

  • @DanielOpitz
    @DanielOpitz Год назад

    Great video. Why does your PHP script fetches a json file over HTTP for every request? For much better performance, this json file could be fetched directly from a file without calling another webserver. The performance would then be much faster.

    • @jherr
      @jherr  Год назад

      The request of a JSON payload is meant to imitate a backend microservice.

    • @DanielOpitz
      @DanielOpitz Год назад

      @@jherr Ok, thanks for your feedback.

  • @adaliszk
    @adaliszk Год назад +1

    While the PHP example is fine, I feel like we would need an actual real-world example using a framework to make it apples to apples. As for Rust, rocket is great, although if your really want performance then actix is something mindblowing :)

    • @jherr
      @jherr  Год назад

      A viewer added an axum version and it's apparently 3X faster than rocket.

    • @alfieqashwa5257
      @alfieqashwa5257 Год назад

      Axum ❤

  • @orbitory7936
    @orbitory7936 Год назад

    Am I wrong in saying that you are comparing a full frontend framework with jquery which has no data binding? Like mentioned by others use alpine, htmx or at least some jquery plugin for data binding. But yes hard to beat RSC in react

  • @shabtikaplan
    @shabtikaplan Год назад

    So should we move back to PHP and use vanilla js for smaller projects?
    When no node js server is possible, do you recommend using react like WordPress does in their block editor?
    Finally, if you are building a php and vanilla js app, do you actually recommend fetching php served pages? Doesn't that take forever every time you make a change?

    • @RmNrIHRoZSBDQ1AK
      @RmNrIHRoZSBDQ1AK Год назад +1

      Do you need to serve thousands of requests per second for your smaller projects? If no, it doesn't matter.
      WP block editor serializes to html which is then directly rendered by the front-end. There's no relation between the block editor's use of React and what is displayed by the WP template.
      I would never. If you need an SPA, build a front-end client and REST API. If you just want static pages (e.g. blog), serve them rendered directly with PHP. Put Varnish cache in front if you need to handle russian bots.

    • @laztheripper
      @laztheripper Год назад

      The issue is the entire point of react and these types of libs was (at the time) to cut down on server costs, aka moving the work/rendering to the client.
      Literally the only reason why you would use nextjs or any of the "kit" solutions is if you absolutely *need* good SEO, which entails SSR for search engine discovery and indexing.
      For small or personal projects, that's not a concern and even past that, searches are starting to adapt to single page apps.
      In other words, use your favorite framework to make SPAs and a barebones backend to serve the files and return basic blobs of json.
      I can elaborate on my stack if you want, but if you do roughly as I mentioned you can run a 15$ a month vps that can handle roughly 1000x the traffic nextjs does.

    • @dealloc
      @dealloc Год назад

      WP "Gutenberg" is probably the worst experience of using React I have ever had-and I am not even talking about the outdated tooling, which I have replaced myself with a custom Vite plugin.

  • @gencomer
    @gencomer Год назад +1

    React, i choose you! :D

  • @ZakiWasik
    @ZakiWasik Год назад

    I think the ending of this video is a perfect segue into the video Theo did over on his channel: ruclips.net/video/2Z4fZtSKlcE/видео.html

  • @grinsk3ks
    @grinsk3ks Год назад

    In general the PHP approach is pretty slick and simple. The problem I have with it is DX and docs. They are highly inferior to JS frameworks. Furthermore the frontend feels "decoupled" in a bad way, since you have your code spread across many places. Template file, js, CSS, PHP controller, ...
    And then there's the highly discussed scaling issue. On every request, everything is bootstrapped and run. Sounds like a ton of overhead to me. In the plus side your server is basically idle when there is no request.
    I can confirm the large Drupal apps slow. That's why these projects tend to have a lot of caching.
    Laravel Livewire might be a solution to this. I didn't try it, but I doubt that it handles reactive rendering as well as a js framework

  • @perezident14
    @perezident14 Год назад

    What Pokémon is your favorite though? 🧐🧐🧐

    • @jherr
      @jherr  Год назад +1

      Paras. Hahahaha.

  • @sylensdrake9706
    @sylensdrake9706 Год назад

    laravel with inertia gives isomorphic rendering by doing everything in vue/react/svelte

  • @mgs_4k198
    @mgs_4k198 Год назад

    You can still get all of the React (or anyother SPA) library benefits if you create your APIs in PHP and use an SPA library on the front-end.

    • @jherr
      @jherr  Год назад

      Another fair point. You are on a roll!

    • @mgs_4k198
      @mgs_4k198 Год назад

      @@jherr I appreciate the distinctions you tried to make in this video, but I think often a times people promote this notion that "JavaScript apps are fast and php is slow" without really making an accurate comparison between the two.
      I've done a bit of work in both ecosystems. From my point of view the Laravel way offers a lot more than the full JS ecosystems.
      Also I don't think that the JS ecosystems are just naturally more performant. What is more important is just how you build your app.

    • @jherr
      @jherr  Год назад

      @@mgs_4k198 I think the video shows in all cases PHP being faster.

  • @user-ik7rp8qz5g
    @user-ik7rp8qz5g Год назад

    Perhaps filtering is not the best use case to illustrate server actions. I believe filtering, at least at low-medium scale, should be done fully on client. If we send all initial data on first request and keep it on client, there is no need to make additional requests and make server do extra work. And, depending on scale of our data, multiple searches could result in much bigger data transferred than full data set on initial load.
    For performance I can suggest looking into bun runtime. It can be used to make fast api server, but it is still in development, so it cannot run entire frameworks in its own runtime yet.

  • @jediampm
    @jediampm Год назад

    Hi Mr. Herrington, few things to say by being honest and transparent;
    1. When devs are comparing Nextjs and RSCs to PHP is in terms of DX, which means you are mixing business server logic ( sql queries, etc) in same file with view / presentation client layer (with interactivity + jsx). Since react release state in functional components was already bad, because you are also are mix business logic (interactivity logic) with presentation layer (jsx) in client side. In PHP you can and should do that separation where in NextJS at the moment you can not, similar like SvelteKit and NuxtJS do, by create a separated only for server logic.
    2.Make no sense comparing server only language (Vannila PHP) with js runtime nodeJS framework like NextJS (Which include a client side framework / lib like react), And what you made with PHP is not secure because of XSS and the same on jquery and vanilla js. Where NerxtJS since is a framework and using jsx, is safe.
    3.Why using php built in server when in real world you use server like Apache http or ngnix with PHP interpreter ? Also make no sense. And you should mention the version of PHP.
    4. Why not comparing Vanilla PHP ( like said in point 2 make not sense) with React client side instead of jquery or vanilla js?
    5. From start this comparison make no sense, however a transparent comparison would be using a php framework like Laravel or Symfony with and without react, which would be save to XSS in this case also. Beside when you bring rust to this, you dint with vanilla rust, you use frameworks too. So ya just another foot gun.
    So in this simple example, what is the point of using nextjs, when you can use vanilla PHP with Vanilla js which are pretty fast, slim and easy to use and even can save some money with hosting and in human resources. JS ecosystem are AWESOME . LOL.

    • @jherr
      @jherr  Год назад

      Outside of #3 I disagree, from the customer perspective all three of these web experiences are symmetric and therefor comparisons can be made fairly. Your argument seems to boil down to PHP isn't comparable to NodeJS because it's not JS.

    • @jediampm
      @jediampm Год назад

      @@jherr I think you didnt understand the point #1. And you are not comparing PHP vs NodeJS. Which itself, at least for, also make no sense comparing a language with a run time, Even worse you are comparing Vanilla PHP with a nodeJS framework, nextjs which include reactjs. like i mention in #2. Sorry but i am not the only one mention this, just read other comments. And read my #5 if you want to be fair.

    • @jherr
      @jherr  Год назад

      @@jediampm I hear you, but you aren't addressing my point that, within the confines of this simple app, from the customers perspective they are symmetric and therefor comparable.
      As for the security and XSS, what is the actual exploitable vector for an attack outside of a man in the middle attack.

    • @jediampm
      @jediampm Год назад

      @@jherr Why you mention customers, like people that use the app ? I am talking in devs perspective with DX in mind. comparing and making an app with vanilla way, only with pure PHP to a nodeJS framework make no sense , period. It like comparing nodeJS to NextJS, make no sense too.
      When i mention #5, i mean in terms of comparison, compare nextjs to Laravel + livewire, for example, so between frameworks. And when you use a frameworks also are avoiding XSS in this kind of examples. And you didnt mention why not PHP with React LOL.

    • @jherr
      @jherr  Год назад

      @@jediampm So a comparison is only fair when you have a similarly heafty framework to weigh down the client? The fact that the application still works and runs as expected to the customer means nothing?

  • @kirillvoloshin2065
    @kirillvoloshin2065 Год назад +1

    anyone else having Vietnam flashbacks from seeing jQuery?

  • @srinidhihebbar196
    @srinidhihebbar196 Год назад +1

    Why isn't qwik used anywhere in the comparisons???

    • @jherr
      @jherr  Год назад +2

      It has similar performance numbers to pages in terms of raw throughput. Better TTI though than React. Not as good as the vanilla JS version, since even with its aggressive lazy loading it's not going to be lower than 0.4Kb.

    • @srinidhihebbar196
      @srinidhihebbar196 Год назад +1

      @@jherr Nice work Jack. Appreciate your contents. 🤝

  • @rumble1925
    @rumble1925 Год назад +1

    React actually did always look like PHP but it was client side. The re-render of the page when you POST new data is what the virtual dom emulates but in a better and more efficient way. PHP isn't bad because of how you could render templates, it was bad because of PHP the language and finicky environment it ran on.

    • @jediampm
      @jediampm Год назад +1

      However in case of PHP as language, the fault is on Developer for not separating business logic from presentation layer. Where in case of React is a choice of the creator since the release of functional components with state you have that look of mix .
      It easy to point out the fault to the language instead of the dev choices. LOL

    • @rumble1925
      @rumble1925 Год назад +1

      @@jediampm I'm thinking more about how PHP was a language that had no real design direction and was just a haphazard pile of awkwardly implemented functions around C code. It's better now though but hard to get away from legacy code.

  • @WesleyHandy
    @WesleyHandy Год назад +1

    Rust and Vanilla JS seems like a killer combo, of course, if you know Rust

    • @jherr
      @jherr  Год назад +4

      FWIW, I really don't know Rust, I used a combination of ChatGPT, Stack overflow, API documentation and... engineering skill. To just kinda wing it. Turns out it wasn't entirely terrible. On the plus side that experience gave me a lot of confidence that AI is still just a tool and not a replacement. There is no way I could have done that without being an engineer with previous experience in C/C++, Go, Rust (a little), Java, etc.

  • @jonathangamble
    @jonathangamble Год назад +1

    Golang please!

  • @ricardomonge2769
    @ricardomonge2769 Год назад +1

    I would use the one that makes me more money

  • @MMH94MMH
    @MMH94MMH Год назад +2

    Nowadays it is no longer necessary to use jQuery, javascript has been greatly improved, I always prefer to write vanilla javascript than to include a lot of code that is not fully used.

    • @jherr
      @jherr  Год назад +1

      If you watched all the way to the end I use vanilla JS instead of jQuery. And I updated the code on the github repository to do it without using innerHTML and it's still really small.

  • @karim6514
    @karim6514 Год назад

    Go also rocks it, but simpler

  • @vipinchaudhary7915
    @vipinchaudhary7915 Год назад +2

    I would still prefer NextJS. Though, Rust looks fine, I am not a big fan of blowers.

    • @jherr
      @jherr  Год назад +1

      Blowers?

  • @codokit
    @codokit Год назад +2

    PHP is great

  • @nameless4014
    @nameless4014 Год назад +1

    Yes it did

  • @DjLeonSKennedy
    @DjLeonSKennedy 11 месяцев назад

    my proposition to use assembler, it should be quite fast

    • @jherr
      @jherr  11 месяцев назад

      It's all assembler eventually.

    • @DjLeonSKennedy
      @DjLeonSKennedy 11 месяцев назад

      @@jherr really?!

    • @jherr
      @jherr  11 месяцев назад +1

      @@DjLeonSKennedy C/C++ is really just portable assembler and once the JavaScript is JIT'ed it's just data to C++ JS/VM

    • @DjLeonSKennedy
      @DjLeonSKennedy 11 месяцев назад

      @@jherr thank you

  • @codernerd7076
    @codernerd7076 Год назад +25

    2 things you left out, general hosting cost and hard disk space needed... there is a massive difference right there spoiler PHP wins both!

    • @CFXTBogard
      @CFXTBogard Год назад +3

      The idea is to compare performance, not costs.

  • @MobiusCoin
    @MobiusCoin Год назад +1

    Really wish you used Alpine instead of jQuery. The comparison would've been a lot more analagous. Also... maybe even Laravel Livewire?

    • @jherr
      @jherr  Год назад

      Yeah, livewire is hella cool.

  • @elamandeep
    @elamandeep Год назад

    U have taken my comment seriously 😂

  • @JLarky
    @JLarky Год назад +4

    9:23 Thank you so much for this! I was hoping for SQL injection in the PHP version, but XSS voluntarily is good choice as well 🎉

    • @cristianbilu
      @cristianbilu Год назад +2

      How is that XSS?

    • @JLarky
      @JLarky Год назад +1

      @@cristianbilu thank you for this reply as well, brings so much joy to my little heart

    • @chrisgascoyne2958
      @chrisgascoyne2958 Год назад

      But who builds with vanilla php anyway? Symfony supremacy! :'D

    • @RmNrIHRoZSBDQ1AK
      @RmNrIHRoZSBDQ1AK Год назад +1

      Who cares? Data source is a json file distributed with the app. If you can rewrite that, setting html is the least of your worries. Also good luck finding a SQL injection in a static file ro DB lol.

    • @jediampm
      @jediampm Год назад +1

      ya. this why you should always use a framework, to avoid XSS and SQL injection

  • @alsherifkhalaf7385
    @alsherifkhalaf7385 Год назад

    What about Bun.Js ?

    • @jherr
      @jherr  Год назад +1

      Last I looked to get the speedups from Bun the server needed to use specific extension points in Bun, and nothing yet had done that. Could be wrong though.

    • @alsherifkhalaf7385
      @alsherifkhalaf7385 Год назад

      @@jherr maybe Bun will be ready next year

  • @pEeLL00
    @pEeLL00 Год назад

    I would not use jquery for such small examples. and I would expect Content-Encoding with gzip and compare gzipped size

  • @TheTmLev
    @TheTmLev Год назад

    Rocket web framework is not the best option right now, Axum or Actix Web are more revenant at the moment.