> 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).
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).