Comments (9)
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.
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.
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.
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.
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.
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.
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.
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.
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)
- Should Inertia middleware call session()->setPreviousUrl? HOT 6
- - HOT 1
- redirection to /dashboard after login does not work HOT 1
- Prevent a webpage from navigating away HOT 1
- Release notes for 1.0 could make it more clear that "Fix URL generation (#592)" is a breaking change HOT 5
- Ziggy2.0 and Laravel11 and Breeze for Inertia + React, TypeScript and SSR starter kit throws error on initial setting HOT 2
- assertInertia() fails when testing Inertia visits HOT 1
- Inertia components/hooks wrapped with redux Provider stopped working HOT 2
- client-side validation libraries HOT 1
- SSR high CPU usage HOT 1
- Serve Connection Reset HOT 1
- Default Layout HOT 1
- adding to HandleInertiaRequests->share array no longer works in version 1.2.0 HOT 5
- Running inertia:start-ssr continuosly fails with message 'Node.js v18.19.0' HOT 2
- Popups instead of redirects due to the first response to API request is randomly returned as "200 text/html" HOT 1
- Partial reload behaviour change in 1.1.0 causes lazy attributes not to be reloaded correctly HOT 2
- PreserveScroll not working without PreserveState for inertia form HOT 1
- How to update favicon, meta tags like descripiotn, keywords, openGraph(og) etc. HOT 1
- Using inertia component inside blade file HOT 1
- inertia returning encoded html in output for data-page HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from inertia-laravel.