JavaScript rules engine for Adobe Experience Platform Mobile SDK events. Drop-in extension that lets Adobe Launch (Tags) authors enrich, mutate, suppress, or pass through trackState / trackAction payloads with on-device JavaScript — no app rebuild required.
Part of the Mission Control suite, developed by Aerobee.
The cross-platform behavioural contract is stable — iOS and Android parity is tested with shared fixtures, and the API surface is small. We're using a Beta tag because:
- Pre-1.0 SemVer: minor-version bumps may include breaking changes. Each release's breaking changes are listed in CHANGELOG.md.
- Schema may still move: the
rules.jsonformat and Launch UI surface are settled but not frozen. - Production use is at your own risk — we recommend pinning to an exact version and testing in non-production first.
Once we cut 1.0, breaking changes will be reserved for major version bumps.
In Xcode → File → Add Packages…:
https://github.com/AerobeeHQ/airlock-ios
Or in Package.swift:
.package(url: "https://github.com/AerobeeHQ/airlock-ios", from: "0.3.17")Add Airlock to the dependencies of any target that needs it.
import AEPCore
import AEPIdentity
import AEPLifecycle
import AEPAnalytics
import AEPAssurance
import Airlock
MobileCore.registerExtensions([
Identity.self,
Lifecycle.self,
Analytics.self,
Assurance.self,
Airlock.self,
]) {
MobileCore.configureWith(appId: "<your-launch-app-id>")
MobileCore.lifecycleStart(additionalContextData: nil)
}That's it. Authoring of rules, macros, lookup tables, accumulators, and derived metrics happens entirely in the Adobe Launch UI.
TestApp/ is a runnable SwiftUI harness with Assurance pre-wired. Copy TestApp/config.example.json to TestApp/config.json, fill in your Launch environment file ID, open the Xcode project, and run.
- Full documentation site: https://airlock.aerobee.com.au
- Integration Brief Template — consultant ↔ developer handoff
- API Reference
- Troubleshooting
- App calls
MobileCore.track(action:data:)orMobileCore.track(state:data:). - AEP EventHub routes the event; Airlock caches it.
- An Adobe Launch rule with the Evaluate JavaScript Rules action fires; Airlock runs the script in a sandboxed
JavaScriptCorecontext witheventandsharedStateavailable. - Script return value → enriched event dispatched as
Airlock Processed Track(or suppressed ifnull/undefined). - A downstream Launch rule picks up the enriched event and sends it to Analytics.
See How It Works for the full mechanism and the two-rule pattern.
We develop on a private GitLab instance and mirror releases here. Bug reports and discussions are very welcome via Issues and Discussions.
Pull requests opened on GitHub will be closed with a polite redirect. If you'd like to contribute code, contact airlock@aerobee.com.au and we'll add you as a user on the GitLab instance.
Apache 2.0. See LICENSE.