appwrite / console

The Console that makes Appwrite tick from the browser 🖥
https://appwrite.io
BSD 3-Clause "New" or "Revised" License
332 stars 142 forks source link

🚀 Feature: improve login page core web vitals #722

Open benmccann opened 10 months ago

benmccann commented 10 months ago

🔖 Feature description

Prerender the login page for improved core web vitals

🎤 Pitch

While investigating SvelteKit applications in the wild, I found that AppWrite consoles are written in SvelteKit and fail core web vitals. E.g. here's one such URL: https://auth.lucas-cm.com.br/login

A big contributor to this is that SSR is disabled, so just a blank page loads initially.

This could best be avoided by prerendering the login page.

(Alternately, the largest image on the page could be preloaded and you could render some image, background image, or text while the JavaScript is being fetched rather than leaving the page blank, but this would be more work, a worse user experience, and probably still worse on core web vitals)

👀 Have you spent some time to check if this issue has been raised before?

🏢 Have you read the Code of Conduct?

benmccann commented 10 months ago

If we prerender we'll need to replace the usage of $page.search with something like new URL(location).searchParams

It appears to me that this is deployed using Docker, so the best solution is probably to switch to adapter-node and remove ssr = false. Running adapter-node would probably be much more lightweight than running something like Apache or nginx inside the Docker container.

@TorstenDittmann I see ssr = false was added in https://github.com/appwrite/console/commit/c8065121fdb72095a44daf66c12c0c89fc208b4f, but I'm not sure why. Do you see any issues with removing ssr = false and switching to adapter-node?