Closed as not planned
Description
Recently I've been experimenting with the FastBoot PR, and below is my attempt at capturing the work that I think remains to enable FastBoot across the site.
Enable FastBoot for some static pages
As we previously discussed, the existing PR allows us to land support on a single static page to try this out in production:
-
/policies
- added in Enable Fastboot with USE_FASTBOOT environment variable set to 1 #1900
Groundwork for enabling FastBoot on dynamic pages
Some tasks that I think will be necessary support more dynamic cases:
- Find a way to show the
<noscript>
message only on pages that haven't been converted yet. - Tweak <noscript> text and placement #2101 tweaks the message and placement, but leaves the message present on all pages. - Ensure a complete set of headers is sent, based on what we do in the backend middleware. - Move security-related HTTP response headers from Rust to nginx.conf #2100
- For a logged in user, their cookie should be included in the request to the backend.
- When JS is enabled, after the pre-rendered HTML is loaded and Ember boots, a new set of requests are sent from the client to the backend. -
ember-data-storefront
added in Don't make duplicated requests through Ember Data #2087 - Requests to routes (
/does-not-exist
) or resources (/crates/does-not-exist
) that don't exist, should respond with status 404 instead of 200. - Update FastBoot logs to align with our typical log format, as described in Tracking issue for Ember FastBoot #1811 (comment) and Enable Fastboot with USE_FASTBOOT environment variable set to 1 #1900 (comment)
- Pass User-Agent header to backend - fixed in adapters/application: Pass
User-Agent
header to backend in fastboot mode #2048
Page specific bugs
Following are bugs I observed while testing with JS off:
-
/
- Data doesn't load - fixed in Make / work under FastBoot #1937 -
/login
- TypeError: window.open is not a function -
/logout
- completely blank page -
github_login
,/authorize/github
- Unclear how the login workflow should work without JS, or if we should even support that -
/crates/test-crate
,/crates/test-crate/0.1.5
- "Authors" and "Owners" sections are not populated -
/crates/*/download
- I think this endpoint can be removed, it doesn't have an associated route file in the frontend - `/crates/*/{docs,repo} - Doesn't actually redirect when the metadata is set - added in Make /install work under FastBoot #1912
-
/me/*
,/dashboard
- redirects to/
-
/{categories,keywords,users,teams}/does-not-exist
- results in a 500 server error -
/search
- doesn't load any search results -
/install
- a redirect which doesn't work with JS disabled, would be nice to do an HTTP redirect - added in Make /install work under FastBoot #1912