
Security News
How Enterprise Security Is Adapting to AI-Accelerated Threats
Socket CTO Ahmad Nassri discusses why supply chain attacks now target developer machines and what AI means for the future of enterprise security.
@adobe/react-native-acpcore
Advanced tools
@adobe/react-native-acpcore is a wrapper around the iOS, tvOS and Android AEP Core SDK to allow for integration with React Native applications. Functionality to enable the Core extension is provided entirely through JavaScript documented below.
@adobe/react-native-acpcore 1.x requires React Native 0.44.+@adobe/react-native-acpcore 2.x requires React Native 0.60.+You need to install the SDK with npm and configure the native Android/iOS project in your react native project.
Note: If you are new to React Native we suggest you follow the React Native Getting Started page before continuing.
First create a React Native project:
react-native init MyReactApp
Note: Follow React Native tvos support to create app with tvos target.
Install and link the @adobe/react-native-acpcore package:
cd MyReactApp
npm install @adobe/react-native-acpcore
CLI autolink feature links the module while building the app.
react-native link @adobe/react-native-acpcore
Note: if using Cocoapods, run:
cd ios/ && pod install
(Only required for React Native <= 0.59)
In the Link Binary With Libraries section, click the + link and add the following frameworks and libraries:
UIKit.frameworkSystemConfiguration.frameworkWebKit.frameworkUserNotifications.frameworklibsqlite3.0.tbdlibc++.tbdlibz.tbdAfter you have installed Core, you can install additional AEP React Native extensions.
| Extension | npm package |
|---|---|
| Analytics | |
| Audience | |
| Campaign | |
| Media | |
| Target | |
| User Profile |
This project contains jest unit tests which are contained in the __tests__ directory, to run the tests locally:
make run-tests-locally
Initializing the SDK should be done in native code, documentation on how to initialize the SDK can be found here. The linked documentation initializes the User Profile extension which is not required, however, if you are interested in the User Profile extension for React Native you can find it here.
Once you have added the initialization code to your app, be sure to set the SDK wrapper type to React Native before you start the SDK.
[ACPCore setWrapperType:ACPMobileWrapperTypeReactNative];
MobileCore.setWrapperType(WrapperType.REACT_NATIVE);
ACPCore.updateConfiguration({"yourConfigKey": "yourConfigValue"});
ACPCore.extensionVersion().then(version => console.log("AdobeExperienceSDK: ACPCore version: " + version));
ACPCore.getLogLevel().then(level => console.log("AdobeExperienceSDK: Log Level = " + level));
import {ACPMobileLogLevel} from '@adobe/react-native-acpcore';
ACPCore.setLogLevel(ACPMobileLogLevel.VERBOSE);
import {ACPMobileLogLevel} from '@adobe/react-native-acpcore';
ACPCore.log(ACPMobileLogLevel.ERROR, "React Native Tag", "React Native Message");
Note: ACPMobileLogLevel contains the following getters:
const ERROR = "ACP_LOG_LEVEL_ERROR";
const WARNING = "ACP_LOG_LEVEL_WARNING";
const DEBUG = "ACP_LOG_LEVEL_DEBUG";
const VERBOSE = "ACP_LOG_LEVEL_VERBOSE";
ACPCore.getPrivacyStatus().then(status => console.log("AdobeExperienceSDK: Privacy Status = " + status));
import {ACPMobilePrivacyStatus} from '@adobe/react-native-acpcore';
ACPCore.setPrivacyStatus(ACPMobilePrivacyStatus.OPT_IN);
Note: ACPMobilePrivacyStatus contains the following getters:
const OPT_IN = "ACP_PRIVACY_STATUS_OPT_IN";
const OPT_OUT = "ACP_PRIVACY_STATUS_OPT_OUT";
const UNKNOWN = "ACP_PRIVACY_STATUS_UNKNOWN";
ACPCore.getSdkIdentities().then(identities => console.log("AdobeExperienceSDK: Identities = " + identities));
import {ACPExtensionEvent} from '@adobe/react-native-acpcore';
var event = new ACPExtensionEvent("eventName", "eventType", "eventSource", {"testDataKey": "testDataValue"});
ACPCore.dispatchEvent(event);
import {ACPExtensionEvent} from '@adobe/react-native-acpcore';
var event = new ACPExtensionEvent("eventName", "eventType", "eventSource", {"testDataKey": "testDataValue"});
ACPCore.dispatchEventWithResponseCallback(event).then(responseEvent => console.log("AdobeExperienceSDK: responseEvent = " + responseEvent));
import {ACPExtensionEvent} from '@adobe/react-native-acpcore';
var responseEvent = new ACPExtensionEvent("responseEvent", "eventType", "eventSource", {"testDataKey": "testDataValue"});
var requestEvent = new ACPExtensionEvent("requestEvent", "eventType", "eventSource", {"testDataKey": "testDataValue"});
ACPCore.dispatchResponseEvent(responseEvent, requestEvent);
ACPIdentity.extensionVersion().then(version => console.log("AdobeExperienceSDK: ACPIdentity version: " + version));
ACPIdentity.syncIdentifier("identifierType", "identifier", ACPMobileVisitorAuthenticationState.AUTHENTICATED);
ACPIdentity.syncIdentifiers({"id1": "identifier1"});
import {ACPMobileVisitorAuthenticationState} from '@adobe/react-native-acpcore';
ACPIdentity.syncIdentifiersWithAuthState({"id1": "identifier1"}, ACPMobileVisitorAuthenticationState.UNKNOWN);
Note: ACPMobileVisitorAuthenticationState contains the following getters:
const AUTHENTICATED = "ACP_VISITOR_AUTH_STATE_AUTHENTICATED";
const LOGGED_OUT = "ACP_VISITOR_AUTH_STATE_LOGGED_OUT";
const UNKNOWN = "ACP_VISITOR_AUTH_STATE_UNKNOWN";
ACPCore.setAdvertisingIdentifier("adID");
ACPIdentity.appendVisitorInfoForURL("test.com").then(urlWithVisitorData => console.log("AdobeExperienceSDK: VisitorData = " + urlWithVisitorData));
ACPIdentity.getUrlVariables().then(urlVariables => console.log("AdobeExperienceSDK: UrlVariables = " + urlVariables));
ACPIdentity.getIdentifiers().then(identifiers => console.log("AdobeExperienceSDK: Identifiers = " + identifiers));
ACPIdentity.getExperienceCloudId().then(cloudId => console.log("AdobeExperienceSDK: CloudID = " + cloudId));
ACPCore.setPushIdentifier("pushIdentifier");
import {ACPVisitorID} from '@adobe/react-native-acpcore';
var visitorId = new ACPVisitorID(idOrigin?: string, idType: string, id?: string, authenticationState?: ACPMobileVisitorAuthenticationState)
Note: Implementing Lifecycle via Javascript may lead to inaccurate Lifecycle metrics, therefore we recommend implementing Lifecycle in native Android and iOS code.
ACPLifecycle.extensionVersion().then(version => console.log("AdobeExperienceSDK: ACPLifecycle version: " + version));
ACPSignal.extensionVersion().then(version => console.log("AdobeExperienceSDK: ACPSignal version: " + version));
ACPCore.collectPii({"myPii": "data"});
react-native link @adobe/react-native-acpcore or when the autolinker in React Native 0.60.x does not properly link the SDK when building.TypeError: null is not an object (evaluating RCTACPCore...)
ACPCore.h not found when importing <RCTACPCore/ACPCore.h>
No SDK logs or errors after implementing in Javascript
react-native link @adobe/react-native-acpcore
cd ios/ && pod install # only if using pods
Another possible issue is that your application is built using Expo. Unfortunately Expo does not support native modules out of the box. Please see Ejecting to ExpoKit.
Specs satisfying the RCTACPCore (from ../node_modules/@adobe/react-native-acpcore) dependency were found, but they required a higher minimum deployment target.Podfile specfies at least iOS 10.0.See CONTRIBUTING
See LICENSE
FAQs
Adobe Experience Platform support for React Native apps.
The npm package @adobe/react-native-acpcore receives a total of 1,569 weekly downloads. As such, @adobe/react-native-acpcore popularity was classified as popular.
We found that @adobe/react-native-acpcore demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 21 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Socket CTO Ahmad Nassri discusses why supply chain attacks now target developer machines and what AI means for the future of enterprise security.

Security News
Learn the essential steps every developer should take to stay secure on npm and reduce exposure to supply chain attacks.

Security News
Experts push back on new claims about AI-driven ransomware, warning that hype and sponsored research are distorting how the threat is understood.