Web SDK Changelog
v3.32.3 (2026-11-11)
3.32.3 (2026-11-11)
Bug Fixes
build: preserve sourcemaps and guard escaped non-ascii (#1816 ) (51f2b6e )
deps-dev: bump lodash-es (#1753 ) (df53b4b )
deps-dev: bump lodash-es from 4.17.21 to 4.18.1 in /kits/facebook (#1758 ) (2107a95 )
deps-dev: bump lodash-es in /kits/mixpanel/mixpanel-2 (#1763 ) (ea8a4bf )
deps-dev: bump vite from 6.4.1 to 6.4.5 in /kits/rokt (#1675 ) (73bc8c8 )
deps-dev: bump vite from 6.4.4 to 6.4.5 in /kits/roktpayplus (#1737 ) (80d159b )
deps: bump @vitest/mocker, @vitest/coverage-v8 and vitest (#1676 ) (024bb88 )
deps: bump brace-expansion in /kits/doubleclick (#1674 ) (a07ac65 )
deps: bump fast-uri from 3.0.1 to 3.1.9 in /kits/id5/id5-1 (#1690 ) (bac0091 )
deps: bump qs and body-parser in /kits/taplytics (#1698 ) (bdfdea8 )
deps: bump serialize-javascript and mocha in /kits/onetrust (#1689 ) (b87b443 )
deps: bump the babel group across 1 directory with 20 updates (#1779 ) (f43c529 )
deps: bump undici from 7.24.6 to 7.30.1 in /kits/rokt (#1688 ) (8078426 )
leanplum: load a pinned Leanplum SDK with Subresource Integrity (#1792 ) (b9c7a66 )
mixpanel: take MIXPANEL_CUSTOM_LIB_URL only when it is a string (#1794 ) (f1a391a )
optimizely: check the Full Stack SDK with Subresource Integrity (#1793 ) (3d6f09f )
page-url: find route segments in one pass (#1796 ) (e921c07 )
persistence: take the API key from init alone, never from storage (#1795 ) (844fe3c )
rokt: wait for the start-up identify when selectPlacements has no MPID (#1822 ) (5244fec )
snippet: force utf-8 for injected sdk scripts (#1820 ) (f3d03ce )
web SDK: ignore stale config responses after re-init (#1817 ) (141f5e2 )
Miscellaneous
call generateUniqueId directly (#1818 ) (d335189 )
check: enforce ascii-only core bundles in v3 candidate (#1813 ) (c34665f )
deps: bump actions/download-artifact from 7 to 8 (#1798 ) (a5645cb )
deps: bump actions/setup-java from 5 to 6 (#1801 ) (700c8c7 )
deps: bump actions/setup-node from 6 to 7 (#1800 ) (5f32ea7 )
deps: bump actions/upload-artifact from 6.0.0 to 7.0.2 (#1799 ) (27cfb1a )
deps: bump codecov/codecov-action from 7.0.0 to 7.1.1 (#1802 ) (8e4b4c9 )
dist-guard: skip dist folders inside kit node_modules (#1825 ) (f890296 )
forwarder-utils: add unit tests for the forwarding filter functions (#1814 ) (db98c08 )
remove nine duplicate test cases (#1815 ) (9c3c73c )
uploaders: add unit tests for the uploaders and forwarding stats uploader (#1819 ) (4638852 )
web SDK: add shared CI-only local Karma browser timeouts across kits (#1826 ) (3a8d902 )
web SDK: bound Required checks to 5m and pin trigger and needs (#1810 ) (b84312b )
web SDK: exclude relative paths in git-dependency regex check (#1811 ) (324a7cc )
web SDK: gate advance-staging, guard upload, audit recovery, and wire release-tag (#1807 ) (c25d587 )
web SDK: harden Android bridge tests with KVM and pinned versions (#1812 ) (4991720 )
web-sdk: auto-dispatch V3 Step 1 and gate publishing (#1821 ) (2baa393 )
web-sdk: remove v3-release-publish Environment gate from V3 Step 1 (#1823 ) (9b1cc92 )
View on GitHub
v3.32.2 (2026-11-10)
3.32.2 (2026-11-10)
Bug Fixes
keep payment picks across checkouts and stamp auto clicks with their click time (#1808 ) (cccd4b0 )
web SDK: trap SIGHUP, guard inherited PID, and bound stop poll (#1804 ) (d649d51 )
Miscellaneous
web SDK: add always-run Required checks aggregator job (#1803 ) (921a615 )
web SDK: kill each kit step’s process group on cancellation (#1789 ) (bca96c5 )
web SDK: pin BrowserStack actions and add github-actions Dependabot entry (#1797 ) (6afd452 )
web SDK: remove the V3 Step 1 kit audit job (#1791 ) (57698df )
web SDK: set 15-minute timeout on kit test jobs (#1806 ) (f081ab3 )
View on GitHub
v3.32.1 (2026-11-09)
3.32.1 (2026-11-09)
Bug Fixes
rokt: keep reading the form email after a name field is re-edited without a change (#1785 ) (8ac0095 )
web-sdk: stage v3-staging before upload and allow tag recovery (#1788 ) (cc23936 )
Miscellaneous
web SDK: build the V3 release kits six at a time (#1787 ) (acd4a91 )
View on GitHub
v3.32.0 (2026-11-09)
3.32.0 (2026-11-09)
Features
rokt: let a pre-selection default fill from the payment method the shopper picked (#1780 ) (#1782 ) (41f4796 )
Miscellaneous
set Release Please manifest to 3.31.0 (#1781 ) (fab4837 )
web SDK: start every V3 Step 1 test job at once (#1784 ) (f43a2f2 )
View on GitHub
v3.31.0 (2026-11-09)
3.31.0 (2026-11-09)
Bug Fixes
button-tracking: count a bare Japanese purchase-procedure button as a checkout step (#1765 ) (88c189d )
button-tracking: keep a confirm label a commit when a checkout-step selector matches (#1777 ) (f39b38b )
kits: load the AdWords, Inspectlet and SimpleReach scripts over https (#1733 ) (22a636a )
rokt: drop a waiting selectPlacements call when its logged-in user changes (#1766 ) (09f81d4 )
rokt: read form email only once committed, and require two-letter TLD (#1778 ) (ccdc985 )
rokt: skip the cart page view on another entry’s route (#1770 ) (9d21fe2 )
rokt: skip the selectPlacements event if its user changed before resolving (#1776 ) (73a29a4 )
Features
button-tracking: let the Rokt kit name confirm and checkout-step buttons by CSS selector (#1769 ) (f8440c0 )
rokt: stop selectPlacements waiting for an identity request in flight (#1709 ) (4685bf5 )
View on GitHub
v3.30.0 (2026-11-05)
3.30.0 (2026-11-05)
Features
mparticle-web-sdk: V3 release-gate Option A workflow_run gate and tag verify (P1-a) (#1747 ) (e577956 )
View on GitHub
v3.29.1 (2026-11-05)
3.29.1 (2026-11-05)
Bug Fixes
button-tracking: count a hidden option shown by its label (#1756 ) (2a369b7 )
button-tracking: count unnamed option rows only in the group holding them (#1755 ) (861f341 )
button-tracking: name the group of unnamed checkboxes in option rows (#1750 ) (5b0088a )
button-tracking: name unnamed option rows only in a question group (#1752 ) (6c9f6e6 )
button-tracking: read a picker’s name without a React id (#1757 ) (74a3b18 )
button-tracking: read the form around a role control (#1751 ) (2d3e118 )
button-tracking: skip only link clicks when the Rokt kit does not receive them (#1745 ) (3c94d41 )
View on GitHub
v3.29.0 (2026-11-02)
3.29.0 (2026-11-02)
Bug Fixes
button-tracking: name icon buttons and accordion option rows (#1742 ) (d27e546 )
Features
read the checked payment radio on a confirm or checkout-step click (#1740 ) (a541f7a )
rokt: log placement response clicks as auto button clicks (#1743 ) (16eeeb1 )
View on GitHub
v3.28.0 (2026-10-30)
3.28.0 (2026-10-30)
Bug Fixes
button-tracking: hide only the token in a named path segment, and keep account pages under u (#1734 ) (222a548 )
keep exit upload batches the browser refuses to send (#1736 ) (aa6eea5 )
keep the page title out of the auto page view log line (#1725 ) (0133361 )
send auto click events with the batch instead of uploading each at once (#1735 ) (12dcaf3 ), closes #1642
Features
read save and continue as a checkout step on checkout routes (#1729 ) (08683ce )
rokt: let a pre-selection default name groups of values that count as a match (#1728 ) (59c920a )
View on GitHub
v3.27.0 (2026-10-29)
3.27.0 (2026-10-29)
Bug Fixes
button-tracking: hide shopper tokens and order ids in the logged page path (#1705 ) (90c04a3 )
button-tracking: name a picker’s question when its input name ends in a product number (#1701 ) (9a47e0f )
hide shopper tokens and order ids in page URLs and page view paths (#1708 ) (d20223f )
rokt: count the default marker in the pre-selection dedupe (#1726 ) (413bf5e )
Features
button-tracking: log role controls, deeper clicks and long-named cards (#1702 ) (27ba36e )
button-tracking: send the destination path of internal link clicks (#1700 ) (b5d964f )
count Register as the confirm click on checkout routes (#1697 ) (2d8bfab )
rokt: name the keys a pre-selection call filled from its defaults (#1707 ) (f1003cd )
rokt: skip a pre-selection call when the shopper’s own value is one the entry never serves (#1704 ) (00a48cf )
rokt: stop cart page views firing on the target page or again for a cart that already reached it (#1706 ) (356ab5a ), closes #payment
View on GitHub
v3.26.1 (2026-10-28)
3.26.1 (2026-10-28)
Bug Fixes
rokt: compare a defaulted pre-selection key strictly on arrival (#1699 ) (92d7539 )
View on GitHub
v3.26.0 (2026-10-27)
3.26.0 (2026-10-27)
Features
rokt: add pre-selection attribute defaults that fill only what the page left empty (#1694 ) (202e03a )
rokt: let a pre-selection entry take a checkout-step click as its confirm click (#1695 ) (cbfa338 )
rokt: let an add-to-cart click open the cart page view (#1691 ) (a269376 )
rokt: replace pre-selection attribute overrides with defaults the shopper’s own value wins over (#1692 ) (68291e5 ), closes #1693
release: upload V3 candidate files concurrently (#1696 ) (320a6d3 )
View on GitHub
v3.25.0 (2026-10-26)
3.25.0 (2026-10-26)
Bug Fixes
count taps on PayPal JS SDK button frames as wallet taps (#1681 ) (88ec826 )
rokt: drop a supplied mparticle_device_id under noDeviceId (#1686 ) (9fb4a98 )
rokt: omit mparticle_device_id from placement calls under noDeviceId (#1679 ) (5ab1482 )
rokt: skip the Rokt cookie sync under doNotShareOrSell or Global Privacy Control (#1677 ) (6a8e603 )
rokt: stop auto click events under targeting and sharing opt-outs (#1687 ) (5fb8153 )
Features
log clicks on links that leave the page as Auto Link Click (#1678 ) (690ac4b )
rokt-kit: add identity capture attribute guardrails (#1499 ) (bd95cc9 )
rokt-kit: tighten lead-capture payload to body contract (#1502 ) (2e30c71 )
rokt: fire a cart entry on page views while the shopper’s cart holds items (#1684 ) (c0e32e6 )
rokt: fire a guest’s wallet tap once the guest is identified (#1682 ) (c430645 )
rokt: hand the kit the payment method picked with a radio or a payment frame (#1685 ) (b27884b )
rokt: say why a pre-selection missed the shopper’s email (#1683 ) (25db476 )
View on GitHub
v3.24.0 (2026-10-22)
3.24.0 (2026-10-22)
Bug Fixes
deps: bump @babel/runtime from 7.23.2 to 8.0.7 (#1593 ) (909cb7b )
deps: move @babel/runtime to 7.29.10 instead of 8 (#1664 ) (68ee0be )
keep hidden text out of auto button click labels (#1659 ) (36d0d3e )
rokt: keep commit and wallet taps from firing a cart pre-selection entry (#1671 ) (55c881e )
rokt: keep the query off the kit’s page history (#1662 ) (17fef42 )
rokt: send checkout intent to the Rokt kit only when its connection receives auto button clicks (#1658 ) (b19394a )
rokt: take the page title and utm params only from the forwarded page view (#1661 ) (f30a832 )
send no label text with checkbox and radio clicks (#1660 ) (80e3f91 )
Features
apv: let the Web input configure additional page view query params (#1475 ) (9380e3c ), closes #1476
count an Apple Pay session the page begins as a wallet tap (#1667 ) (d4dd038 )
count wallet buttons that pages draw themselves as checkout intent (#1663 ) (beb9096 )
fire pre-selection on cart clicks for entries that opt in (#1668 ) (12418ad )
rokt: shadow-check the shopper’s payment pick against the target page (#1666 ) (6ffa0d9 )
BREAKING CHANGES
apv: automatic page views no longer carry the parameters
listed above as attributes unless an input configures them.
Co-authored-by: Claude Opus 5.5 noreply@anthropic.com
refactor(apv): read additional page view query params from a config setting
Move autoLogPageViewQueryParams out of the feature flags. It is now a
top-level setting string on the SDK config, parsed by the store when it
is created and again in processConfig, and kept on SDKConfig.
getFeatureFlag keeps its original return type, so its declaration no
longer changes.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
View on GitHub
v3.23.0 (2026-10-20)
3.23.0 (2026-10-20)
Bug Fixes
rokt: keep page history off placement calls under do-not-share-or-sell or GPC (#1648 ) (5d7de0a )
rokt: require identityKeys on a pre-selection entry with widened keys (#1632 ) (3b8c021 )
send Rokt placement calls only the identities the connection allows (#1649 ) (0b5a46a )
Features
apv: keep Salesforce Commerce dwvar_ variant params on auto page views (#1646 ) (b0313c2 )
clean every page URL with one shared rule in core and kits (#1647 ) (83c12ab )
rokt: fire a logged-in shopper’s express tap before checkout (#1639 ) (39e6e92 )
View on GitHub
v3.22.0 (2026-10-19)
3.22.0 (2026-10-19)
Bug Fixes
keep offline batches a concurrent upload stored (#1641 ) (1d4a767 )
rokt: skip every pre-selection call under do-not-share-or-sell or GPC (#1644 ) (8259cc4 )
send event batch uploads without keepalive (#1642 ) (f8f87ea )
Features
apv: allow s, oq and colour/size query params on auto page views (#1643 ) (2049f4c )
log checkbox and radio clicks in auto button tracking (#1645 ) (616f5d0 )
rokt: say why a tab reached the target page without seeing the trigger (#1630 ) (c531aad )
upload auto button clicks right away and fire Rokt pre-selection on the confirm click (#1635 ) (fd47090 ), closes #1636 #1637 #1638
View on GitHub
v3.21.0 (2026-10-16)
3.21.0 (2026-10-16)
Bug Fixes
release: decide kit publishes npm reports as failed by what npm holds (#1620 ) (b181ef6 )
Features
log link clicks in auto button tracking (#1629 ) (a5b22f9 )
log only the link clicks page views can’t see, with a link type (#1631 ) (fcd841f )
View on GitHub
v3.20.0 (2026-10-16)
3.20.0 (2026-10-16)
Bug Fixes
rokt: keep email required on widened tabs for an entry that reads the typed email (#1628 ) (0565b4a )
rokt: read a typed email from text inputs for the pre-selection call (#1623 ) (ab89718 )
rokt: stop an earlier input event from re-recording a field a later event revoked (#1625 ) (20f24bf )
Features
rokt: fire pre-selection on the confirm click when checkout intent is active (#1616 ) (ce9b44f )
rokt: let a widened tab treat more pre-selection keys as optional (#1617 ) (8410de3 )
View on GitHub
v3.19.1 (2026-10-14)
3.19.1 (2026-10-14)
Bug Fixes
rokt: stop destructuring with a computed key the CDN minifier breaks (#1612 ) (#1613 ) (ea30e83 )
View on GitHub
v3.19.0 (2026-10-14)
3.19.0 (2026-10-14)
⚠️ Warning
If using the Rokt kit you should not use this version and should update to 3.19.1 or higher due to a bug with minification.
Bug Fixes
auto button tracking follow-ups from review (#1600 ) (b169088 )
ci: mirror a V3 release whose failed jobs were re-run (#1610 ) (b83b1f7 )
rokt: skip the form when the connection filters the hashed email identity (#1611 ) (95a46d8 )
Features
rokt: read a typed email for preselect when no other source has one (#1599 ) (0e2b777 )
View on GitHub
v3.18.0 (2026-10-14)
3.18.0 (2026-10-14)
Bug Fixes
build: escape non-ASCII in bundles so non-UTF-8 pages can parse them (#1605 ) (34dca08 )
Features
View on GitHub
v3.17.0 (2026-10-12)
3.17.0 (2026-10-12)
Features
add an opt-in checkout intent listener for the Rokt kit (#1594 ) (9ab4656 )
rokt: take checkout intent signals from the core SDK (#1595 ) (68e677d )
View on GitHub
v3.16.1 (2026-10-09)
3.16.1 (2026-10-09)
Bug Fixes
rokt: count this tab’s trigger in the cross-tab arrival flag (#1591 ) (abdabf8 )
rokt: let one entry’s preselection fire without email again (#1590 ) (831eac6 )
View on GitHub
v3.16.0 (2026-10-08)
3.16.0 (2026-10-08)
Bug Fixes
rokt: require email for partner preselection (#1579 ) (9f9c63f )
Features
rokt: shorten one entry’s preselect dispatch hold to five seconds (#1548 ) (49cf38c )
rokt: support gated checkout intent preselection triggers (#1585 ) (e656a31 )
View on GitHub
v3.15.0 (2026-10-08)
3.15.0 (2026-10-08)
Bug Fixes
rokt: drop last name from a second preselect match set (#1578 ) (0222511 )
Features
rokt: release opted-in preselect holds on route changes (#1582 ) (9b0d147 )
rokt: report identity attribute presence on preselect misses (#1583 ) (fc473d5 )
rokt: say when another tab saw the preselect trigger (#1581 ) (ecf9979 )
rokt: tag each preselect call with what fired it (#1580 ) (4947d5c )
View on GitHub
v3.14.0 (2026-10-06)
3.14.0 (2026-10-06)
Bug Fixes
kits: copy planned event attributes instead of deleting them from the queued event (#1563 ) (35ac032 )
persistence: read a stored value that is not a non-empty object as absent in both readers (#1562 ) (f8cee73 )
Features
rokt: trigger a preselect on a configured custom event (#1536 ) (cc1aebe )
View on GitHub
v3.13.0 (2026-10-06)
3.13.0 (2026-10-06)
Bug Fixes
ci: give the V3 shadow upload and pointer jobs their environment secrets (#1547 ) (865e69a )
consent: validate the consent timestamp in one place (#1565 ) (74313df )
rokt: clear page views, UTM params and the dispatch hold at session end whatever the targeting state (#1568 ) (9680eea )
rokt: drop last name from one preselect match set (#1569 ) (03495c4 )
rokt: drop the card BIN from one preselect match set (#1550 ) (b6bec6a )
rokt: strip the query string when the page url does not parse (#1551 ) (40b6415 )
Features
rokt: read one entry’s email key from the user identity (#1549 ) (83860c9 )
View on GitHub
v3.12.1 (2026-10-02)
3.12.1 (2026-10-02)
Bug Fixes
rokt: clear pending and active preselect records at session end whatever the targeting state (#1544 ) (d793978 )
View on GitHub
v3.12.0 (2026-10-02)
3.12.0 (2026-10-02)
Bug Fixes
consent: read a stored consent entry that is not a consent object (#1519 ) (e54672a )
events: use the element that received the event in logLink and logForm (#1516 ) (b3bb35e )
identity: keep the MPID the server returned as the current user (#1479 ) (aed63f6 ), closes #500
kits: check every user identity against the plan in kit blocking (#1520 ) (93318fa )
kits: run every kit blocking step for every event (#1522 ) (4e623d5 ), closes #1520
native-sdk: require the v1 Android bridge to be an own property of window (#1518 ) (e858772 )
persistence: keep an existing localStorage record over the persistence cookie (#1523 ) (0287f50 ), closes #1521
persistence: treat a persistence cookie that does not decode as absent (#1521 ) (ac527d0 )
rokt: count a requeued preselect’s dispatch hold from its trigger, not from the retry (#1541 ) (91e7917 )
rokt: keep the user from onUserIdentified when the launcher attaches (#1539 ) (6bf2083 )
rokt: match a preselection pathname with or without a trailing slash (#1538 ) (a05346a )
rokt: set selectPlacements attributes on the user identify resolves to (#1517 ) (d927af6 )
rokt: stop persisting preselect attributes and honor noFunctional in kit storage (#1504 ) (c33f6f4 )
Features
rokt: read pre-selection config from the preselectionConfig kit setting (#1530 ) (a284a72 ), closes #1540
rokt: report preselect misses for the identity-arrival read (#1542 ) (56e1db0 )
rokt: say why the preselect identity gate failed, and log when a held dispatch starts or is cancelled (#1537 ) (3703cb4 )
View on GitHub
v3.11.1 (2026-09-29)
3.11.1 (2026-09-29)
Bug Fixes
kits: apply product attribute kit blocking to every product action (#1480 ) (d7b4f01 )
release: forward npm pack buffer and error context (#1507 ) (68ed8e3 )
rokt: gate the newest pre-selection entry on the hashed email key (#1513 ) (b1987a6 )
rokt: strip the query string and fragment from the reported page url (#1506 ) (791e1cd )
View on GitHub