Details about changes in each version of the Adobe Target at.js JavaScript library.
Adobe Target supports both at.js 1.x and at.js 2.x.
at.js 1.x has entered maintenance mode. The Target team releases bug fixes and security patches when necessary.
The Target team provides full support for at.js 2.x and releases bug fixes, security patches, features, and performance optimization on an ongoing basis.
You should upgrade to the latest versions of either 1.x or 2.x to obtain bug fixes and security patches for issues discovered in any previous minor version of the corresponding major version.
Tags in Adobe Experience Platform are the preferred method to upgrade at.js. Extension developers continually add new features to their extensions, and frequently fix bugs. These updates are packaged into new versions of an extension and made available in the Adobe Experience Platform catalog as upgrades. For more information, see Extension upgrades in the Tags overview guide.
localStorage
is not available. Telemetry was causing an issue for some customers that had localStorage
disabled in their browsers.at-content-rendering-failed
events.sandboxId
and sandboxName
in targetGlobalSettings
, which is passed to the Delivery API on getOffer/getOffers
calls.:eq()
in selectors.at-content-rendering-succeeded
custom event when no offers are rendered. The correct event, at-content-rendering-no-offers
, is now triggered.eventToken
and responseTokens
to error object for the at-content-rendering-failed
custom event.trackEvent
function to always return an error.pageLoad
not being mapped to target-global-mbox in On Device Decisioning (ODD) hybrid execution mode.The Target at.js JavaScript library now collects feature usage and performance telemetry data. Personal data is not collected. Opt-out for this feature is available by setting telemetryEnabled
to false in targetGlobalSettings
. For more information, see telemetryEnabled in targetGlobalSettings.
This release contains the following enhancement:
This release contains the following changes:
reactor-window
and reactor-document
Adobe Experience Platform Launch modules to ensure that the Platform Launch build functions correctly for customers who have window.default
or document-default
set.Samesite=None
and Secure
to ensure that third-party domain cookies are set properly.secureOnly
is set to true
.triggerView()
.CONTENT_RENDERING_NO_OFFERS
event. Now this event is triggered correctly whenever there is no content returned from Target.prefetch
requests.Math.random()
, but relies on window.crypto
.sessionId
cookie expiry is correctly extended on every network call.viewsEnabled
settings. Setting viewsEnabled
to the false
value now disables the triggerView()
function. See Order of operations for initial page load.This release of at.js includes the following enhancements and changes:
This release also removes support for Microsoft Internet Explorer 10 and above versions.
This release of at.js is a maintenance release and includes the following enhancements and fixes:
targetPageParams
being included in mbox requests. targetPageParams
should be included in pageLoad
requests only. (TNT-40247)This release of at.js is a maintenance release and includes the following fixes:
This release of at.js is a maintenance release and includes the following fix:
This release of at.js is a maintenance release and includes the following fix:
This release of at.js is a maintenance release and includes the following fix:
This release of at.js is a maintenance release and includes the following enhancements and fixes:
deviceIdLifetime
setting overridable via targetGlobalSettings. (TNT-36349)sendBeacon
call. (TNT-36407, TNT-35990, TNT-36000)This release of at.js is a maintenance release and includes the following enhancements and fixes:
targetGlobalSettings.cspScriptNonce
and targetGlobalSettings.cspStyleNonce
so that at.js can set the corresponding script and style tag nonces on applied offers. See targetGlobalSettings for more details.check
to at_check
in order to avoid collisions with customers’ implementations.This release of at.js is a maintenance release and includes the following enhancements and fixes:
check
to at_check
in order to avoid collisions with customers’ implementations.This release of at.js includes the following enhancements and fixes:
Upgrade your ECID Extension to v4.4 to take advantage of this performance enhancement.
serverState
. This setting can be used to optimize page performance when a hybrid integration of Target is implemented. Hybrid integration means that you are using both at.js v2.2+ on the client-side and the Delivery API or a Target SDK on the server-side to deliver experiences. serverState
gives at.js v2.2+ the ability to apply experiences directly from content fetched on the server side and returned to the client as part of the page being served. For more information, see “serverState” in targetGlobalSettings.This release of at.js includes the following enhancements and fixes:
Upgrade your ECID Extension to v4.4 to take advantage of this performance enhancement.
This release of at.js is a maintenance release and includes the following enhancements and fixes:
(The issue numbers in parentheses are for internal Adobe use.)
triggerView()
to not render offers more than once. (TNT-32780)triggerView()
to ensure that the request contains Marketing Cloud ID (MCID) information. (TNT-32776)triggerView()
notification to fire even if there are no saved views. (TNT-32614)Navigator.sendBeacon()
API. (TNT-32683)mbox3rdPartyId
using the targetPageParams
function that caused the request payload to not be present in either the query parameters or in the request payload. (TNT-32613)This release includes the following features and enhancements:
Adobe Opt-in support: Adobe Opt-In is a way to simplify Adobe solutions integrations with consent management platforms. For more information about Adobe Opt-in, see Privacy and General Data Protection Regulation (GDPR).
Industry-standard CSP compliant: at.js no longer uses eval() to execute JavaScript.
Client-side analytics logging: Give customers full control on how they want to send analytics data to Adobe Analytics, whether on the client-side or server-side.
For more information, see Client-side Analytics logging.
Send notifications: Allow developers to send notifications when an experience is rendered by their code instead of using applyOffer()
or applyOffers()
.
For more information, see adobe.target.sendNotifications(options).
at.js size reduced by ~24%: The size of at.js is reduced by ~24%. The smaller file size improves page load performance and reduces the time to download at.js on the page.
This is a maintenance release and includes the following enhancements and fixes:
(The issue numbers in parentheses are for internal Adobe use.)
This is a maintenance release and includes the following fix:
(The issue numbers in parentheses are for internal Adobe use.)
at.js 2.x provides rich feature sets that equip your business to execute personalization on next generation client-side technologies. This new version is focused on upgrading at.js to have harmonious interactions with single page applications (SPAs).
Here are some benefits of using at.js 2.x that are not available in previous versions:
at.js 2.x introduces the following new functions:
The following functions have been deprecated with the introduction of at.js 2.x:
For more information, see Upgrading from at.js 1.x to at.js 2.x and at.js functions.
If you require Adobe Opt-in support for the General Data Protection Regulation (GDPR), you must currently use at.js 1.7.0, or at.js 2.1.0 or later.
at.js 1.7.0 brings Adobe Opt-In support. Adobe Opt-In is a way to simplify Adobe solutions integrations with consent management platforms.
For more information about Adobe Opt-in, see Privacy and General Data Protection Regulation (GDPR).
This release also fixes an issue where Target might override redirect URL parameters with parameters that are coming from the redirect URL.
If you require Adobe Opt-in support for GDPR, you must currently use at.js 1.7.0, or at.js 2.1.0 or later.
at.js 1.6.4 is a maintenance release and addresses the following issue:
at.js version 1.6.3 includes the following fixes and enhancements:
This is a maintenance release and addresses the following issue:
In addition, at.js Version 1.6.2 also contains all of the enhancements and fixes included in at.js Version 1.6.1 and 1.6.0. These versions are no longer available for download. We recommend that you upgrade to version 1.6.2 if using 1.6.1 or 1.6.0
Here are the enhancements and fixes that were included in at.js Version 1.6.1:
Here are the enhancements and fixes that were included in at.js Version 1.6.0:
at.js version 1.5.0 is now available.
The details of the at-request-succeeded
event contain the redirect flag. This flag can be used to determine if the page will be redirected to a different URL. If you want to know the URL, subscribe to at-content-rendering-redirect
. (TNT-29834)
Fixed an issue that caused window.targetGlobalSettings.enabled
to fail with a runtime exception if it was set to false. (TNT-29829)
Fixed an issue that caused the page to fail while loading in the Visual Experience Composer (VEC) if using custom code to a fire global mbox request and using body hiding. (TNT-29795)
Added support for screenOrientation
, devicePixelRatio
, and webGLRenderer
. These new Target request parameters are used for iPhone X and other modern device detection. For more information, see Mobile. (TNT-29781)
Fixed an issue where the Adobe Audience Manager (AAM) location hint wasn’t always sent. (TNT-29695)
For browsers that support it, at.js 1.5.0 switches to MutationObserver for selector polling. Versions prior to at.js 1.0.0 used a MutationObserver polyfill, which proved to be problematic. To avoid the polyfill issues, version1.5.0 uses the following pseudo code to decide which scheduling mechanism to use:
if MutationObserver is supported
scheduler = MutationObserver
else if document is visible
scheduler = requestAnimationFrame
else
scheduler = setTimeout
at.js version 1.3.0 is now available.
The following new events are available to help in tracing, debugging, and customizing interaction with at.js:
For more information, see at.js custom events.
You can augment an at.js request with additional parameters that come from data providers. Data providers should be added to window.targetGlobalSettings
under the dataProviders key
.
For more information, see Data Providers.
at.js requests now use GET, but it will switch to POST when the URL size exceeds 2048 characters. There is a new property named urlSizeLimit
where you can increase the size limit if necessary. This change allows Target to align at.js to AppMeasurement, which uses the same technique.
Target now enforces that the mbox
key in the adobe.target.applyOffer(options)
function is used. This key has been required in the past, but Target now enforces its use to ensure that Target has proper validation and customers are using the function correctly.
at.js has improved event and click tracking functionality. at.js uses navigator.sendBeacon()
to send event tracking data and will fallback to synchronous XHR when navigator.sendBeacon()
is not supported. This fallback mostly affects Internet Explorer 10 and 11 and some versions of Safari. Safari will add support for navigator.sendBeacon()
in the upcoming iOS 11.3 release.
at.js can now render offers even when a page is opened in background tabs. Some Target Customers encountered an issue when requestAnimationFrame()
was disabled because of the browser throttling behavior for background tabs.
This release adds many performance improvements, including shorter callstacks when inspecting a Chrome CPU profile.
at.js 1.3.0 no longer supports content delivery on Microsoft Internet Explorer 9. For a list of supported browsers, see Supported Browsers. Going forward, all requests are executed via XMLHttpRequest
with CORS support with no JSONP requests. This change greatly improves security.
at.js version 1.2.3 is now available.
at.js version 1.2.2 is now available.
getOffer() params
to fail when targetPageParams()
returns an empty string. (TNT-28359)at.js version 1.2.1 is now available.
at.js version 1.2 is now available as a maintenance release that contains mostly bug fixes.
target="_blank"
that prevented Target from opening the link in a new tab. (TNT-28072)sdidParamExpiry
is properly initialized and passed to the Visitor API. This is a regression that has been added to at.js 1.1.0
. Previous at.js versions are not affected. This affects only clients using redirect offers and A4T. (TNT-27791)SCRIPT
is executed regardless of the type attribute being used. (TNT-27865)Date: August 2, 2017
The following enhancements and fixes are included in at.js version 1.1:
document.currentScript polyfill
doesn’t interfere with Angular 1.X.at-element-click-tracking
CSS class instead of at-element-marker
.Date: July 7, 2017
The following enhancements and fixes are included at.js version 1.0:
getOffer()
function giving an error on some websites.Date: May 22, 2017
The following enhancements and fixes are included in at.js version 0.9.7:
insertAfter
and insertBefore
actions in the Visual Experience Composer (VEC). These issues were related to the migration from visual offers to offer templates.Date: April 13, 2017
The following enhancements and fixes are included in at.js version 0.9.6:
Redirect offer support for A4T. After you download and install at.js version 0.9.6, you can use redirect offers in activities that use Adobe Analytics as the Reporting Source for Target (A4T). Besides at.js version 0.9.6, there are other minimum requirements your implementation must meet in order to use redirect offers and A4T. For more information and additional important information you should know, see Redirect Offers - A4T FAQ.
Prior to at.js 0.9.6, when the Visitor API was present on the page and the visitorApiTimeout
setting was too aggressive, Target could run into a situation when no MCID data was sent in the Target request. This could lead to issues like unstitched hits in Analytics when using A4T.
This behavior has been changed in at.js 0.9.6, even if the visitorApiTimeout
is set to say 1 ms, Target will try to collect SDID, tracking servers, and customer IDs data and send those in the Target request.
Added the selectorsPollingTimeout
setting. For more information, see targetGlobalSettings().
The format of the response from getOffer()
has been changed. For more information, see adobe.target.getOffer(options).
Console logging has been added for unsupported <!DOCTYPE>
declarations.
Fixed an issue where Target Classic plugins weren’t being applied correctly when multiple default offers were delivered to a single mbox. (TGT-22664)
Improved cookie-setting for two letter top-level-domains (TLDs) to ensure that the mbox cookie is set correctly for these domains (for example, test.no, autodrives.ca, and so forth).
The algorithm for extracting the top-level domain that should be used when saving cookies has changed in at.js version 0.9.6. Because of this change, cookies cannot be saved to addresses that use IP. Most of the time, IP addresses are used for testing purposes, but as workarounds you can use DNS entries or adjust the hosts file on a local box.
Fixed move and rearrange actions handling when properties are string values instead of integers.
Date: January 19, 2017
mbox names can now contain special characters, including ampersands ( & ).
For a list of allowable special characters, see at.js Configuration.
Added secureOnly
setting that indicates whether at.js should use HTTPS only or be allowed to switch between HTTP and HTTPS based on the page protocol. This is an advanced setting that defaults to False and can be overridden via targetGlobalSettings
.
The Legacy Browser Support option is available in at.js version 0.9.3 and earlier. This option was removed in at.js version 0.9.4.
Date: October 10, 2016
Date: September 21, 2016
optoutEnabled
setting to enable or disable the Device Graph opt-out. If this setting is set to true
and the visitor has opted out of tracking, the visitor’s browser will not make any mbox calls. Device Graph is currently in Beta. This setting is set to false
by default, but must be set to true
if you are using Device Graph.CustomEvent
support for the notification mechanism. Previously, the at.js event notification mechanism could not be used via standard DOM APIs, such as document.addEventListener()
. Now you can use document.addEventListener()
to subscribe to at.js events, such as request events and content rendering events.Date: July 14, 2016
Target Release: 16.6.1
Date: June 23, 2016
Fixes a whitescreen issue when using VEC offers. Anyone using at.js should upgrade to this new version.
New registerExtension
API.
This new API gives developers access to certain jQuery modules used in at.js to develop extensions (aka plugins) for the library. There are a few implications for this change. This impact only those users who are using these features:
getSettings()
API has been removed, but the same functionality is available using registerExtension()
.
getTracking()
API has been removed, but the same functionality is available using registerExtension()
.
Existing extensions (e.g. AngularJS extensions) must be updated to use the registerExtension()
approach.
New at.js notification API.
The goal of this notification system is to provide more insight into what at.js is doing on the page and when there are issues. A common issue seen with the VEC is that an IT release changes the page, a VEC selector breaks, and the test stops delivering content correctly. A goal of this notification system is to make this delivery issue known to the page, so developers can access this information, pass it to a system like Adobe Analytics, and alerts can be sent to the business owners that their test broke.
New targetGlobalSettings()
API method.
You can override settings in the at.js library, rather than configuring them in the Target Standard/Premium UI or by using REST APIs.
Date: May 5, 2016.
This is the first official release of the at.js library.
at.js is a new implementation library for Target designed for both typical web implementations and single-page applications.
at.js replaces mbox.js for Adobe Target implementations.
Among other benefits, at.js improves page load times for web implementations, improves security, and provides better implementation options for single-page applications.
at.js contains the components that were included in target.js, so there is no longer a call to target.js.
When implementing at.js, be aware of the following: