There is a workaround which solved the same issue for me:
See: https://github.com/revive-adserver/revive-adserver/issues/725
Basically:
Run this code after you change the view in SPA.
reviveAsync.{your-data-revive-id}.apply(reviveAsync.{your-data-revive-id}.detect());
I made a Vue Component which calls this function in it's mount hook.
<template>
<div>
<ins :data-revive-zoneid="zoneId" :data-revive-id="reviveId" data-revive-target="_blank"></ins>
<component is="script" src="https://revive.sonares.org/www/delivery/asyncjs.php" async></component>
</div>
</template>
<script>
export default {
name: 'ReviveAd',
props: {
zoneId: Number,
reviveId: String
},
mounted() {
this.reviveRefresh()
},
methods: {
reviveRefresh() {
console.log("revive refresh")
if (window.reviveAsync) window.reviveAsync[this.reviveId].apply(reviveAsync[this.reviveId].detect())
}
}
}
</script>