Unlicensed components
A component your license does not cover shows an UNLICENSED watermark. This page explains when the watermark appears, what it does, and how to remove it.
Why a component is watermarked
There are two reasons, and the browser console tells you which one applies.
- Your license does not cover releasing the component. Community covers a core set of components. The rest are yours to evaluate, develop and test on your own machines, and releasing them needs Pro.
- The app was built without a valid license. Chameleon's build tooling normally stops such a build before it produces anything. If an app built without a license reaches a browser anyway, every component in it is watermarked.
The watermark is decided from the build alone. Chameleon never checks a license over the network, so a deployed app never changes because a server is unreachable.
When the watermark appears
For a component your license does not cover, the watermark depends on how long ago the app was built. The clock starts when the build runs, not when the page opens, so a page left open never changes.
| What you see | Does the component work? | App built before 1 February 2027 | App built from 1 February 2027 |
|---|---|---|---|
| Nothing | Yes | Less than 7 days old | Less than 24 hours old |
| A faint watermark | Yes | 7 to 28 days old | 24 hours to 7 days old |
| A strong watermark, over the component faded to half strength | No, it's disabled | 28 days or more | 7 days or more |
The date of the build decides which schedule applies, so an app keeps the schedule it was built under.
The first stretch is clean on purpose. Evaluating and developing with every component on your own machines is something your license allows, and a build you're working on is always minutes old. An app that has been deployed for weeks is not.
Rebuilding restarts the clock, which is exactly what happens when you fix the cause and redeploy.
An app built without a valid license is watermarked and disabled from the moment it loads.
What a disabled component does
A disabled component stays on the page, so your layout doesn't move, but nobody can use it:
- It can't be clicked, focused or typed into, and it's no longer a tab stop.
- It's hidden from screen readers.
- It takes no part in forms: it submits no value, it never stops a form from submitting, and a submit or reset button does nothing.
Content you place inside a disabled component is disabled along with it.
Components inside other components
Two rules keep a page from filling up with watermarks.
- A building block is licensed with the component that uses it. When a component you're licensed for uses another part of Chameleon to do its job, that part is never watermarked.
- Each watermark covers what's inside it. Icon buttons in a button group, for example, show one watermark for the group rather than one on every button.
What the console says
Each watermarked component writes one message to the browser console, once for each kind of component, naming the component and linking to this page.
| Level | When | Message |
|---|---|---|
| Warning | Your license does not cover the component, and it still works | Watermarked. Your Chameleon license does not cover releasing this component. |
| Error | Your license does not cover the component, and it is disabled | Watermarked and disabled. Your Chameleon license does not cover releasing this component. |
| Error | The app was built without a valid license | Watermarked and disabled. This build has no valid Chameleon license. |
A disabled component writes nothing else to the console: the watermark is the one thing to fix. A component that still works keeps writing its usual messages.
Removing the watermark
Fix the cause, then rebuild and redeploy.
- If your license doesn't cover the component, upgrade to Pro, or replace the component with one your license covers.
- If the app has no valid license, make sure your build runs Chameleon's build tooling with a build token. The get-started guide shows how.
Removing or hiding the watermark any other way is not permitted by the license.