I haven't seen any papers on SPA-ecomm integration as a recommended path. In my mind, I'm not sure of the benefits of SPA owning it rather than AEM with GraphQL route. I'd probably do more research later.
Alternate route per Adobe's own CIF -- Integrations
Integration pattern
The AEM Venia Store front is a mixed page application in which AEM owns the glass and Magento powers the commerce backend in a headless way. Both server-side rendering and client-side rendering are used in the storefront. Server-side rendering is used to deliver static content and client-side rendering is used to deliver dynamic content.
Product and Catalog pages are relatively static and are rendered server-side using AEM Core Components such as Product Detail and Product List on generic templates created in AEM. These components get data from Magento via GraphQL APIs.
These pages are created dynamically, rendered on the server, cached on the AEM dispatcher and then delivered to the browser.
For more dynamic attributes such as Inventory or Price, on the other hand, client-side components are used. Client-side components or Web components fetch data directly from Magento via GraphQL APIs and the content is then rendered on the browser.
Similar references:
Building a GraphQL content API to consume AEM content | Kornel on Digital
Gen 2 Headless with GraphQL | BORN