Layers

Production Readiness Checklist

Things to verify before enabling a Layers SDK in production.

View as Markdown

The Layers SDKs are currently in alpha. Pin to an exact version and test thoroughly before production rollout — breaking changes can still land in 2.x before a stable 1.0 API is committed.

Pre-release checklist

  • appId matches the intended production Layers project.
  • environment is production for release builds (development for debug).
  • enableDebug is OFF in release builds.
  • SDK version pinned in your package manager.
  • ATT prompt (iOS) fires at a sane moment — NOT on first launch — and NSUserTrackingUsageDescription is set.
  • Consent wiring: setConsent({ advertising, analytics }) is called from your CMP's grant / revoke callbacks.
  • setAppUserId(...) is called on sign-in; setAppUserId(undefined) (or clearAppUserId()) is called on logout.
  • For advanced matching, setUserProperties({ email, phone }) or pre-hashed equivalents fire at sign-in.
  • Canonical event names from standard events are used where applicable.
  • Test event end-to-end: fire → Events page → (if mapped) Meta Test Events / TikTok Events Debugger.
  • Network confirms events hit in.layers.com (or your custom domain).

Performance

The SDK batches events and flushes them via queueOptions. If you have very high event volume (e.g., per-frame game events), throttle / aggregate client-side before calling track — per-event sampling is NOT configured via the SDK today.

Release-specific considerations

iOS

Via React Native / Expo: handle ATT at the right moment. There is no native Swift SDK, so no PrivacyInfo.xcprivacy manifest entry ships from Layers — consult your privacy-manifest aggregator.

Android

Via React Native / Expo: declare the Play Services ads identifier dependency if you need GAID (the current RN module's podspec and peerDependencies do not hard-require it).

There is no defaultConsent or auto EU-detection today. If you serve EU traffic, gate event firing behind your CMP's response:

if (userHasConsented) {
  await layers.setConsent({ advertising: true, analytics: true });
} else {
  await layers.setConsent({ advertising: false, analytics: false });
}

Monitoring in production

Watch these for the first 7 days of rollout:

  • Events page — event volume tracks the expected curve.
  • Per-layer CAPI delivery — no "degraded" warnings on the ad layer overview tab.
  • Attribution reconciliation — compare Layers' Events page counts against Meta / TikTok dashboards for in-map events. ±20% is typical variance; anything larger deserves investigation.

Rollback

To hot-disable ingestion for a project, pause the SDK app in the Layers dashboard (Project → Layers SDK → Pause). The relay then drops events for that app_id server-side. Re-enable when the client issue is fixed. Paused events are lost for attribution purposes.

On this page