This is for a hobby project, so rewriting it to do server side rendering etc. is not an option.
This is for a hobby project, so rewriting it to do server side rendering etc. is not an option.
Rewrite it to do server side rendering.
Sorry if this seems facetious, but if you want it to be accessible, it needs to be server-side rendered.
Some crawlers have some (limited) JS-rendering abilities; notably Googlebot; but it's not full. Some crawlers may use a fully-fledged Chrome-headless but latency would make this uncommon.
In general, JS-dependent SPAs have always been a terrible terrible idea for anything public facing that needs to be crawled (they're fine for web applications, not for web pages).
I also might consider serving some other non-game pages statically, like the leaderboard, user profiles, etc.
I doubt you will need to rewrite it if you use React or VueJS (or any other big framework) as they have SSR support.
For React it seems that Gatsby is very popular: https://www.gatsbyjs.org/
Depending on the complexity of your hobby project it might even be feasible to write a simple script that runs node, outputs HTML files for each of your pages, and uploads them to online storage.
You might look into GitHub Pages too, although I'm not familiar with its capabilities: https://pages.github.com/