Skip to content

Releases: optimizely/java-sdk

Release 4.4.2

29 May 19:50
aea8778

Choose a tag to compare

[4.4.2]

May 29, 2026

Fixes

  • Include commonIdentifiers when counting identifiers in identifyUser (#631)

Release 4.4.1

28 May 20:35
8812751

Choose a tag to compare

[4.4.1]

May 28, 2026

Fixes

  • Block ODP identify event for single identifier (#629)
  • Add local holdouts support (#628)

Release 4.4.0

05 May 21:06
5752354

Choose a tag to compare

[4.4.0]

May 4, 2026

New Features

Feature Rollout: Added support for Feature Rollouts, a new experiment type
combining Targeted Delivery simplicity with A/B test measurement capabilities.
Feature Rollouts enable progressive rollouts with full impact analytics, metric tracking,
and confidence intervals.
See Feature Rollout docs for more information.

  • Remove experiment type validation from config parsing (#602)
  • Add Feature Rollout support (#601)

Fixes and Improvements

  • Remove legacy flag-level holdout fields (#604)

Release 4.3.1

20 Jan 14:14
9d3e1c9

Choose a tag to compare

[4.3.1]

Jan 20th, 2025

Fixes

  • [FSSDK-12030] Exclude CMAB from UserProfileService (#595)
  • [FSSDK-11953] Fix missing bucketing reasons in CMAB decision path (#592)

Release 4.3.0

11 Dec 06:14
ade5a4d

Choose a tag to compare

[4.3.0]

Dec 10th, 2025

New Features

  • CMAB (Contextual Multi-Armed Bandit) Support: Added support for CMAB experiments with new configuration options and cache control (#577, #578, #579, #582, #583, #584, #585, #590, #593)
  • Add Holdouts Feature: Add Holdout support for feature experimentation (#572, #576)
  • Multi-Region Support for Data Hosting: Added SDK support for multi-region data hosting (#573)

API Changes

  • OptimizelyUserContext: New asynchronous decision-making methods

    • decideAsync(): Asynchronous method to make a decision for a single flag with CMAB support
    • decideAllAsync(): Asynchronous method to make decisions for all flags
    • decideForKeysAsync(): Asynchronous method to make decisions for multiple flag keys
  • Client Initialization:

    • CmabClientConfig can be injected when initializing the client for custom CMAB configuration
    • CmabService can be provided to OptimizelyFactory for custom CMAB service implementation
  • New Decide Options: Added cache control options for CMAB

    • IGNORE_CMAB_CACHE: Skip reading from CMAB cache
    • RESET_CMAB_CACHE: Clear and reset CMAB cache before decision
    • INVALIDATE_USER_CMAB_CACHE: Invalidate cache entries for specific user

Release 4.2.2

28 May 15:11
746e815

Choose a tag to compare

[4.2.2]

May 28th, 2025

Fixes

  • Add experimentId and variationId to decision notification (#569).

Release 4.2.1

20 Feb 10:12

Choose a tag to compare

[4.2.1]

Feb 19th, 2025

Fixes

  • Fix big integer conversion (#556).

Release 4.2.0

06 Nov 14:12
a763358

Choose a tag to compare

[4.2.0]

November 6th, 2024

New Features

  • Batch UPS lookup and save calls in decideAll and decideForKeys methods (#549).

Release 4.1.1

09 May 00:37
7cd42fc

Choose a tag to compare

[4.1.1]

May 8th, 2024

Fixes

  • Fix logx events discarded for staled connections with httpclient connection pooling (#545).

Release 4.1.0

12 Apr 19:59
8fdbfbf

Choose a tag to compare

[4.1.0]

April 12th, 2024

New Features

  • OptimizelyFactory method for injecting customHttpClient is fixed to share the customHttpClient for all modules using httpClient (HttpProjectConfigManager, AsyncEventHander, ODPManager) (#542).
  • A custom ThreadFactory can be injected to support virtual threads (Loom) (#540).