Troubleshooting

Solutions for common issues with c15t in JavaScript — store access, missing banners, consent persistence, and more.

"Provider not found" Error

Symptom: useConsentManager must be used within a ConsentManagerProvider error.

Fix: Ensure the component calling useConsentManager() (or any c15t hook) is rendered inside a ConsentManagerProvider:

Possible causes:

  1. Opt-out jurisdiction — In CCPA/opt-out regions, the banner is not shown because tracking is allowed by default. Check model from useConsentManager() — if it's 'opt-out', the banner is intentionally hidden.

  2. Consent already given — If the user has already made a consent choice, the banner won't reappear. Clear cookies or use resetConsents() to test again.

  3. activeUI is 'none' — Something is explicitly setting activeUI to 'none'. Check the DevTools panel for the current consent state.

  4. Backend not responding — In 'c15t' mode, the banner waits for the backend /init response. Check the Network tab for failed requests to your backendURL.

Symptom: Consent is lost after page reload.

Possible causes:

  1. Incognito/private mode — Some browsers restrict cookie storage in private browsing.

  2. Cookie settings — In 'offline' mode, consent is stored in cookies. Ensure cookies are not being blocked by browser settings or extensions.

  3. Different domains — Cookies are domain-scoped. If your dev server uses a different domain than production, consent won't carry over.

  4. Backend errors — In 'c15t' mode, check that the backend is saving consent successfully. Enable debug: true in provider options to see detailed logs.

Scripts Not Loading

Symptom: Third-party scripts configured in the scripts option don't load after consent is granted.

Checklist:

  1. Wrong category name — The category on the script must match one of the consentCategories names. For example, 'measurement' not 'analytics'.

  2. Consent condition not met — Use has('measurement') to verify the category is actually consented.

  3. Script error — Check the browser DevTools Console for script loading errors. The onError callback can help debug:

  1. Ad blocker — Browser extensions may block the script regardless of consent. The anonymizeId option (default: true) helps avoid pattern-based blocking.

Store Not Accessible

Symptom: window.c15tStore is undefined, or consentStore.getState() throws an error.

Fixes:

  1. Runtime not initialized — Ensure getOrCreateConsentRuntime() has been called before accessing the store:
  1. Script load order — If using <script> tags, make sure the script that initializes the runtime loads before any scripts that access window.c15tStore.

  2. Custom namespace — If you set a custom namespace in store options, the window property will use that name instead of c15tStore.

Still Stuck?

  • Enable debug: true in runtime options for verbose console logging
  • Inspect window.c15tStore?.getState() in the browser console
  • Check the GitHub issues for known bugs