I developed a memory game called Kobadoo as a Single-Page Application (SPA) using ReactJS. Since the very beginning I tried to monetize the game by displaying ads, but it was not that easy. Despite the good traffic Kobadoo had, all my applications to Adsense were consistently rejected by Google with the cryptic argument "Valuable Inventory: No content".
My first guess was that the landing page needed even more text. I had at that time two or three paragraphs describing the game, and I ended up adding two more with the hope that it would help Adsense find better contextual ads. However, this change made no effect and the application was rejected again.
Then, after reading some articles stating the poor SEO performance of ReactJS applications, I decided to implement Server-Side Rendering (SSR) with NextJS, which is a proven technique to rank better on search engines. Sadly, Google rejected once again my application with the same explanation.
Disappointed, I decided to use a different ad network with lightweight approval processes, but the CPM was so low that, after some months, I chose to make a final attempt to get approved on Adsense.
I created a blog on Blogger with three articles that helped Kobadoo improve its SEO. Two weeks later I submitted a new application on Adsense including both, kobadoo.com and blog.kobadoo.com. A few days later I got, finally, an approval email from Google.
So my best advice to anyone stuck with the same problem is: create a blog under the same domain and fill it with good content.