- Help Center
- Troubleshooting
- SPA Errors
-
Getting Started
-
Configuration
- Targeting
- Split URL
- Product Testing
- Full Stack
- Experiment Management
- CSP Configuration
- Experiment Execution
- Reports
- Exit Popups
- GTM Integration
- Troubleshooting
- Performance Optimization
- Event-Triggered Changes
- Holdout Groups
- Split URL Pages
- URL Parameters
- DataLayer
- Menu Configurations
- Traffic Exclusion
- Experiment Scheduling
- Dynamic Element Changes
- Price Targeting
- Experience Scheduling
- Privacy
- Hash Changes
- Async Tracking
- Selective Installation
- CSS Selectors
- Vue.js Integration
- Page Content
- Multipage Split URL
- Organic Traffic
- Visual Editor
- Server-Side Testing
- Traffic Bucketing
- GDPR Warnings
- Statistical Confidence
- Browser Privacy
- Query Parameters
- Embedded Videos
- Tracking Code Execution
- Simultaneous Experiments
- Tags
- Deployments
- Disable Testing
- Locations
- Programmatic Bucketting
- Query Parameter Handling
- Convert Library
- Variation Previews
- Experiment Editing
- Opt-Out Script
- Data Reset
- Body Hiding
- Visit-Specific Variations
- Variation Styling
- Preview Issues
- Variation Editing
- Full-Site Testing
- Blinking Variations
- Cross-Domain Cookies
- Regex Support
- Conversion Tracking
- SPA Testing
- Project Setup
- Cross-Domain Tracking
- Geo-Targeting
- Analytics Tools
- Campaign Tags
- Previewing
- IDs
- Query String Targeting
- Bounce Rate Goals
- Bot Filtering
- Query String Variables
- Custom Audiences
- Redirects
- Baseline
- Tracking Code Location
- Secure Cookies
- AngularJS
- Cloudflare
- Code Installation
-
Track Goals
- Form Tracking
- Cookie Management
- iFrame Click Tracking
- Performance Optimization
- Revenue Tracking
- Interaction Goals
- Form Submissions
- Advanced Goals
- Lazy Loading
- Multi-Conversions
- URL Parameters
- Bounce Rate Goals
- DataLayer Integration
- Scroll Depth
- Social Interactions
- Page Views
- Marketo Forms
- Feature Analysis
- AJAX Forms
- Revenue Tracking via GTM
- Order Outliers
- Cumulative Revenue
- Goal Templates
- Adding Revenue Goals
- JS-Based Goals
- Goal Basics
- Google Analytics Goals
- Social Sharing
- Dynamic Goals
- Typeform Integration
-
Target Visitors
- Geolocation
- Interaction Goals
- Goal-Based Targeting
- Weather Targeting
- Cookie-Based Targeting
- Page Visits
- Audience Management
- Audience Segmentation
- Experiment Targeting
- Advanced Audience Creation
- Audience Templates
- Audience Creation
- Data Layer Integration
- Manual Activation
- JavaScript Conditions
- Device Targeting
- Language Targeting
- IP-Based Exclusion
- Visitor Management
- Page Tagging
- Cookies
-
Troubleshooting
- Google Warnings
- Visual Editor
- HTTPS Content
- Logs
- Support Options
- Bootstrap
- Cookie Blocking
- Change History
- Mobile Debugging
- AdWords
- Bot Exclusion
- Domain Issues
- Cloudflare Issues
- Monitoring
- Cloaking Penalties
- Goal Editor Issues
- Variations
- Snippet Performance
- Changes Not Saved
- Blocked Visual Editor
- Goal Testing
- Visual Editor Browsing
- Experiment Issues
- Installation Verification
- Data Leak Prevention
- Usage Limits
- Experiment Previews
- GA4 Revenue
- Chrome Debugger Logs
- SPA Errors
- Checkout JSON Error
-
Analyze Results
-
Integrations
- Google Analytics
- Cookie Consent Platforms
- Microsoft Clarity
- Plausible
- Marketo
- HubSpot
- Tealium
- Smartlook
- Klaviyo
- Salesforce CRM
- FullStory
- Snowplow Analytics
- Webflow
- GA4 Roles
- Amplitude
- Segment
- React
- BigCommerce
- WooCommerce
- Active Campaign
- Google Tag Manager
- Mixpanel
- Zapier
- Inspectlet
- Crazy Egg
- LanderApp
- Unbounce
- Instapage
- Drupal
- PrestaShop
- Magento
- Roistat
- Piano Analytics
- Heap Analytics
- Kissmetrics
- Mouseflow
- Adobe Analytics
- Clicky
-
Account Management
-
Developers
-
What's New
-
Common Questions
-
Shopify
Advanced SPA Configuration: Tracking Script Optimization Tips
Troubleshooting SPA Edge Cases with Convert Tracking Script: Performance Tips for Seamless Experiment Execution
THIS ARTICLE WILL HELP YOU:
- Get an overview of the edge cases in SPA
- Understand common SPA issues and solutions
- Know when to use these configs
- Get the implementation location
Purpose of This Guide
This document provides advanced configuration tips for handling edge cases in Single Page Applications (SPAs) when using the Convert tracking script. These solutions are only needed if you encounter specific performance issues with SPAs. The tracking script works seamlessly in most scenarios without these adjustments.
Common SPA Issues and Solutions
-
SPA Mutating Navigation Links on Click
- Issue: When navigation links are modified by a variation and subsequently trigger DOM mutations upon clicking, the navigation may appear broken or unresponsive.
- Solution: Introduce a delay in continuous activation to allow the navigation changes to stabilize before applying further updates.
_conv_q.push({
what: 'setParameters',
params: {
delayContinuousActivation: 100 // milliseconds
}
});
-
SPA Constantly Mutating the DOM
- Issue: In cases where the SPA produces constant, unnecessary DOM mutations, the tracking script may react too frequently. This could degrade performance, clutter the page, or even cause the page to freeze.
- Solution: Throttle the frequency of continuous activation to prevent excessive updates.
_conv_q.push({
what: 'setParameters',
params: {
throttleChanges: 100 // milliseconds
}
});
When to Use These Configurations
These solutions are meant for troubleshooting SPA-specific performance issues such as:
- Broken navigation links.
- Poor page performance, clutter, or freezing due to excessive DOM mutations.
Avoid applying these configurations unless you are encountering these specific problems. The Convert tracking script is optimized for SPAs and generally does not require additional setup.
Implementation Location
If needed, add the configurations to the Global JavaScript section of your Convert Project Configuration. Ensure they are tested thoroughly in a staging environment before deploying to production.