We use the old JS method of implementing analytics. (I know, we should be using Launch! But we're not there yet!) 🙂
We're creating a new SPA mini-function on the site, and I need to be able to track each iteration of the screens. Previously for SPAs we have imported a part of the URL into the s.pagename, but for this SPA the URL will not change between screens.
I'm not quite sure what your question is here. Are you looking for alternatives to the page name because the URL doesn't change? Are you looking for more information on how to track SPA content in general, or do you have that covered based on prior experience?
If it's the former, I'm assuming each screen can be assigned a unique name or value that can be used in place of the URL when building s.pageName. This could be a custom field in your CMS, something dynamically extracted from the DOM.
If you're asking how to trigger the analytics calls, I'd suggest tapping into whatever mechanism is used to change screens. When that action/event occurs, update your analytics variables and fire the page call.
If your question is about something more specific, please provide details in a follow-up and I'll offer any advice/suggestions I can.
If I have understood correctly, you are looking for ways to capture the page name because the URL is not changing. So, I will suggest you to create a custom event & fire that event when the screen changes. Also, capture the variables and events and then fire s.t() or s.tl() call.