Install
Works with Drupal: ^10 || ^11Using Composer to manage Drupal site dependencies
Alternative installation files
Download tar.gz
35.08 KB
MD5: 66e67c3bc7ff3af31af2803b651f048c
SHA-1: 978499167e462950bdca0832208f3db4d21742fa
SHA-256: ffe84581e850eb34a3468a80107a3b1669f6e897bec75c0ddee9c41a2c85f774
Download zip
54.31 KB
MD5: 55f249e1c9a1041d556bf61550d1bb87
SHA-1: f61ec1d8ec35d5df38d49554f1dadeca7569a47e
SHA-256: 7e3459d942867b49181c2a8ac16721ac0d22bb11f81cc9bf055804325d3f47ae
Release notes
Improvements
- A/B testing logic is now strictly limited to the canonical node route (
entity.node.canonical), preventing interference with administrative and editorial workflows. - Fixed an issue where editing nodes participating in experiments could trigger unintended redirections.
- Redirects now correctly respect the current content language, ensuring proper behavior when using language switchers or accessing translated content.
- Canonical URLs are now language-aware for improved SEO consistency in multilingual setups.
New features
-
Explicit preview mode for variants
Users with thepreview server-side ab variantspermission can preview variant pages without redirection using:?ab_preview=1
-
Editorial bypass mode
Introduced a new permission:bypass server-side ab testing
Authenticated users with this permission can:
- Browse variant pages without being redirected
- Access main pages without being assigned to a variant
This provides a smoother editorial experience when reviewing experiment content.
Behavior
-
Public behavior remains unchanged:
- Variant pages continue to redirect to the experiment main page
- Users are assigned deterministically as before
-
Preview mode:
- Explicit (opt-in via query parameter)
- Permission-based
- Does not affect normal users
-
Editorial bypass:
- Applies only to authenticated users with the appropriate permission
- Skips both assignment and redirection logic
- Does not affect public traffic or caching behavior
Developer notes
- Multilingual handling now uses content language (
LanguageInterface::TYPE_CONTENT) to ensure consistent behavior across translated routes. - Experiment logic remains fully cache-aware and compatible with Dynamic Page Cache via the
ab_testingcache context. - No configuration changes required.