Chameleon works with most modern web products. We are built for browser-based web applications and rely on JavaScript to show the Experience.
If your product runs in a browser and is built with standard web technologies, you're good to go. We support a wide range of technologies, including SPA or mobile web applications. Here's what to know before you install.
What frameworks and technologies does Chameleon support?
Chameleon fully supports JavaScript web application frameworks, including React, Angular, Vue, Ember, and others. No additional implementation work is required for any of these.
Single-page applications (SPAs) are fully supported with no restrictions. Chameleon polls regularly after the initial page load to check whether an Experience should display based on changing criteria like page URL or user activity.
👉 For SPA-specific implementation details, see How does Chameleon work with Single-page Applications?
Does Chameleon work on mobile?
Chameleon does not support native mobile apps but fully supports mobile web applications. Experiences are responsive and automatically adjust as elements move based on browser size.
⚠️ By default, Experiences are disabled for browser widths under 720px to prevent broken layouts on small screens. Mobile display can be enabled under Governance > Controls in your Dashboard.
Chameleon also works within Electron and Cordova apps, as long as the app uses HTML, CSS, and JavaScript and doesn't disable standard browser technologies like localStorage, MutationObserver, or cookies.
Can I use Chameleon across multiple products or domains?
Yes. You can install Chameleon across multiple domains and subdomains using the same code snippet, then choose which Environment an Experience should be published to. All uniquely identified users across all domains count toward your MTU total for billing.
Chameleon also supports dynamic URLs and multiple subdomains — for example, customer-specific subdomains like app.customer1.com. You can use wildcard or regex URL matching, and substitute parts of the URL with user-specific variables.
👉 See How do I manage my domains and subdomains? for setup details.
What browsers does Chameleon support?
Chameleon supports all modern browsers for displaying Experiences to your users, including Chrome, Firefox, Safari, and Edge.
ℹYou need Google Chrome to access the Builder via the Chrome Extension when creating and editing Experiences. Your end users can use any supported browser to see them.
What about iFrames, anonymous users, and other edge cases?
Scenario | Support |
iFrames | Partially supported. Install the snippet separately within each iFrame component, load iFrame content from the same subdomain as the top-level page where possible, and ensure the iFrame doesn't use the |
Anonymous users | Partially supported. To show Experiences to users who aren't logged in, identify them with any UID — even one that doesn't correspond to a database ID. Note that anonymous users count toward your MTU total. |
Multiple languages | Supported. Duplicate Experiences and target them by language, or use liquid logic to pipe in variable content per user within a single Experience. |
Content Security Policy (CSP) | If your app uses a CSP to restrict third-party code, you'll need to add Chameleon's domains to your allowed list. Alternatively, you can run Chameleon as first-party via your own subdomain. See Implement and run Chameleon as first-party. |
What about data and privacy?
Chameleon does not collect any personally identifiable information by default. Any data you send to Chameleon is stored on your account and used only for Experience targeting and analytics.
⚠️ Chameleon is not currently HIPAA certified. If your product handles protected health information, contact us before installing.
Next step: How to Install Chameleon
Please refer to the guide below to help ensure a successful implementation in your application.
What frameworks can you build Experiences in?
Chameleon fully supports JavaScript web application frameworks. This includes (but is not limited to) the following:
Supported Frameworks | Including | Exceptions (Notes) |
|
| |
|
| |
|
| |
Shadow DOM | N-level deep Shadow DOM is supported |
|
If you would like to discuss your framework, feel free to contact us:
👉 You can explore our interactive demos before installing, to learn how we handle element selection, display control, and more, to help you deliver contextual in-app Experiences.
Additional Details about Supported Frameworks
Mobile Compability
Mobile web applications
Chameleon fully supports mobile web applications. Our Experiences are built to be responsive and will automatically adjust as elements on your page move based on browser size.
Native mobile applications
At this time, Chameleon does not support native mobile applications. However, you can use our OneSignal and Zapier integrations to sync Chameleon data and trigger messages and push notifications on mobile devices.
Single-page apps (SPAs) and front-end frameworks
Chameleon supports SPAs and all common front-end frameworks (e.g. React, Angular, Ember, Vue, etc.) out of the box and does not require any special engineering work. Simply implement our JavaScript code snippet or integrate it via Twilio Segment.
How it works with SPAs
Chameleon requires an initial page load to identify users and then polls regularly to check whether an Experience should display based on changing criteria such as page URL or user activity. No separate implementation work is required for SPAs.
Multiple products and environments
You can use Chameleon with different products or on different Environments (with different domains). Install Chameleon using your same unique code snippet across all these products and environments, then choose which environment(s) to display each Experience on when building.
ℹ️ For billing, we will use the total uniquely identified users across all domains to calculate your total MTU count.
Dynamic URLs and multiple subdomains
Chameleon supports dynamic URLs and multiple subdomains (e.g. for your different customers) for your application.
You can use wildcard or regex matching to configure any Step to a specific URL, and substitute parts of the URL with specific user data using variables.
You can use a similar approach to handle personalized subdomains. If you change your subdomains by customer name, then we encourage you to send this part of the URL as a company attribute.
iFrames
Chameleon allows you to build Experiences across any iFrames in your application. For optimal performance:
Implement the Chameleon code snippet separately within each iFrame component
Load iFrame content from the same subdomain as the top-level page when possible
Ensure the iFrame element does not use the sandbox attribute
Other supported features
Anonymous users
Chameleon partially supports anonymous (unidentified) users, but does not yet support aliasing.
To show Experiences to users who are not logged in to your product, you need to identify this user by using any UID, even if it doesn't correlate with actual IDs from your database.
ℹ️ We do anticipate supporting automatic identification and aliasing of anonymous users soon, but drop us an email if this is important to you! ✉️
Strict security standards
Chameleon takes security very seriously and we seek to continually improve our systems with the most cutting-edge techniques to guard against any attacks or unauthorized access.
Learn more about our most recent security updates and future plans:
Chameleon prioritizes security with:
SOC II compliance since 2022
Best-in-class cloud services (AWS, Heroku, Compose)
HTTPS with 256-bit SSL encryption
No collection of personally identifiable data by default
Chameleon does not collect any personally identifiable data by default. We store any data you send to us (including from events that you define within Chameleon) but we’re not currently HIPAA certified.
If your application contains a Content Security Policy (CSP) to limit which third-party code may be executed on the pages of your application, then you must add our domains to your allowed list to enable Chameleon to function correctly.
Multilingual support (Localization)
Chameleon supports multiple languages in two different ways:
By duplicating Experiences and targeting them based on language.
Using liquid logic to pipe in variable content for each user and displaying that in the same Experience.
Browser Compatibility
Supported browsers for viewing Experiences
Chameleon supports all modern browsers for displaying product Experiences to your users, including:
Google Chrome
Mozilla Firefox
Apple Safari
Microsoft Edge
Browser requirements for building Experiences
You will need to use Google Chrome to access the Builder via a Chrome Extension when creating your Experiences.
Compatibility target
Our minimum compatibility target is Chrome 132 and equivalent browser versions (released Jan 2025).
Internet Explorer support
We have discontinued active support for Internet Explorer following Microsoft's end of support. While Experiences may still display on IE, we cannot guarantee full functionality.
Excluding IE users:
If your user base includes Internet Explorer users, you can exclude them from seeing Experiences by using our audience targeting/ segmentation functionality.
⚠️ If you think Chameleon is not rendering correctly on any specific browser, please send us a screenshot so we can take a deeper look into the underlying issue.


