GithubHelp home page GithubHelp logo

Time to first byte about inertia-laravel HOT 9 CLOSED

inertiajs avatar inertiajs commented on August 17, 2024 4
Time to first byte

from inertia-laravel.

Comments (9)

sebastiandedeyne avatar sebastiandedeyne commented on August 17, 2024 2

There is a loading indicator :D Inertia ships with nprogress under the hood, but you need to add it's CSS to your application yourself.

from inertia-laravel.

reinink avatar reinink commented on August 17, 2024 1

Thanks for the interest in Inertia folks!

I think if you want that kind of behaviour, then you're probably better off with a classic SPA that uses an API.

Inertia.js is designed to mimic a classic server-side app, where when a request comes in, you load the necessary data from the database (or elsewhere) and then pass it to the view, and then the view is rendered immediately.

There is a wonderful simplicity to this approach, and Inertia is targeting people who value that. In my applications I strive to have each page load happen within 100-300ms, which completely removes the need to show loading indicators to the user.

Hope that makes sense!

from inertia-laravel.

adriandmitroca avatar adriandmitroca commented on August 17, 2024 1

@reinink

Perhaps it could be useful to have some kind of preloader built in, as I can imagine that a majority vast of users could experience issue with the speed.

from inertia-laravel.

georgehanson avatar georgehanson commented on August 17, 2024

It sounds good in theory. But this would surely rely on the consumer of Inertia having to manually add the JSON response into the controller, which I think is a bit out of scope.

from inertia-laravel.

rodrigopedra avatar rodrigopedra commented on August 17, 2024

In my opinion, this approach would only bring any benefits if you lazy-load the data somehow. If you are calculating (accessing DB, etc) to populate the $data variable you would end doing those calculations twice, as you would have two requests.

Why not having two separated routes? One for rendering the page and the other only to retrieve the data?

something like this

// /page
return Inertia::render('Page');

// /api/page
return $data;

As you would make an ajax request from the page component anyway, the api route can be separated.

Just a suggestion, sorry if I misunderstood your idea.

from inertia-laravel.

connecteev avatar connecteev commented on August 17, 2024

I second this. I installed both https://github.com/reinink/client-side-rendering-in-laravel and https://github.com/inertiajs/pingcrm
and it turns out pingcrm (built on infinityjs) is a lot slower to load each page.
Maybe it's because the pingcrm codebase needs to load more data, i'm not sure. Is it possible to make infinityjs / pingcrm as snappy as the client-side-rendering-in-laravel codebase?

from inertia-laravel.

reinink avatar reinink commented on August 17, 2024

Yeah, I don't agree that the vast majority of users could experience issues with speed.

You can build insanely fast apps with Inertia, you just need to make sure your controller responses are fast. (Which is the same thing you need to do when creating an API.)

Inertia works with code splitting, so you can already send the minimal JS bundle size possible. Yes, prefetching is cool, and maybe something we'll consider in the future, but I refuse to believe it's a requirement to create fast applications.

People have been building wicked fast server-side rendered applications for years. Inertia is basically the exact same approach, except EVEN FASTER, since you don't need to do full page reloads.

from inertia-laravel.

adriandmitroca avatar adriandmitroca commented on August 17, 2024

You are entirely right and it is hard to disagree, however, since this is entirely client-side rendered application you don't have built-in browser loading indicator, where you can't tell if website is currently loading new page or not, missing a native browser feature.

In my opinion, it would be a good practice and definitely valuable from UX perspective to have any kind of loading indicator built in, no matter how fast website is (plus there are always can be some more time-consuming parts in the app)

from inertia-laravel.

reinink avatar reinink commented on August 17, 2024

Yeah, lol, we need to update the docs to tell folks to include the nprogress css. 🤦‍♂

Even better, I want to remove nprogress entirely, and just build it into Inertia directly. See here: inertiajs/inertia#10

from inertia-laravel.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.