Production Readiness Checklist
Things to verify before enabling a Layers SDK in production.
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
-
appIdmatches the intended production Layers project. -
environmentisproductionfor release builds (developmentfor debug). -
enableDebugis OFF in release builds. - SDK version pinned in your package manager.
- ATT prompt (iOS) fires at a sane moment — NOT on first launch —
and
NSUserTrackingUsageDescriptionis set. - Consent wiring:
setConsent({ advertising, analytics })is called from your CMP's grant / revoke callbacks. -
setAppUserId(...)is called on sign-in;setAppUserId(undefined)(orclearAppUserId()) 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).
Consent & regional behaviors
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.