skills/featbit/featbit-skills/featbit-sdks-java

featbit-sdks-java

Installation
SKILL.md

FeatBit Java Server SDK

When to Use This Skill

Use for server-side Java applications — Spring Boot, Jakarta EE, standalone services — that need real-time feature flag evaluation. Requires Java SE 8 or above.

Why server-side SDK: maintains one persistent WebSocket connection, synchronizes all flag data locally in under 100 ms, then evaluates every flag locally in under 10 ms per call on average. Do not use for Android or client-side JavaScript — those require a client-side SDK.

Source

https://github.com/featbit/featbit-java-sdk

Setup Workflow

Copy and track progress:

  • Step 1: Add the dependency
  • Step 2: Build FBConfig and create the client
  • Step 3: Build FBUser and evaluate the first feature flag
  • Step 4: Validate initialization and close the client
  • Step 5: Read advanced README sections only when needed

Step 1: Add the dependency

Use one build tool:

<dependency>
  <groupId>co.featbit</groupId>
  <artifactId>featbit-java-sdk</artifactId>
  <version>1.4.5</version>
</dependency>
implementation 'co.featbit:featbit-java-sdk:1.4.5'

Step 2: Create the client

Use this minimal setup:

FBConfig config = new FBConfig.Builder()
    .streamingURL("ws://localhost:5100")
    .eventURL("http://localhost:5100")
    .build();

FBClient client = new FBClientImp("<your-env-secret>", config);

Step 3: Evaluate the first feature flag

Use the official pattern:

FBUser user = new FBUser.Builder("<unique-user-key>").userName("Jane").build();

// Flag value only
Boolean flagValue = client.boolVariation("flag-key", user, false);
System.out.printf("flag returns %b for user %s%n", flagValue, user.getUserName());

// Flag value with evaluation detail
EvalDetail<Boolean> ed = client.boolVariationDetail("flag-key", user, false);
System.out.printf("flag returns %b, reason: %s%n", ed.getVariation(), ed.getReason());

Step 4: Validate the integration

If client.isInitialized() is false or evaluation returns the fallback unexpectedly, verify the secret and both URLs, then retry. Call client.close() during shutdown.

Feature Flag Evaluation

After the client is initialized, evaluate a feature flag with a user and a fallback value:

FBUser user = new FBUser.Builder("<unique-user-key>").userName("Jane").build();

// Value only
Boolean value = client.boolVariation("flag-key", user, false);

// Value with evaluation detail
EvalDetail<Boolean> detail = client.boolVariationDetail("flag-key", user, false);
System.out.printf("returns %b, reason: %s%n", detail.getVariation(), detail.getReason());

Use boolVariation when only the flag value is needed. Use boolVariationDetail when the evaluation reason is also needed — detail.getReason() explains why the variation was returned.

Also available for non-boolean flags: variation/variationDetail (string), intVariation/intVariationDetail, longVariation/longVariationDetail, doubleVariation/doubleVariationDetail, jsonVariation/jsonVariationDetail.

User Custom Properties

Add custom properties to FBUser when targeting rules depend on user attributes beyond key and userName:

FBUser user = new FBUser.Builder("a-unique-key-of-user")
    .userName("bob")
    .custom("age", "15")
    .custom("country", "FR")
    .build();

Use .custom(key, value) for any attribute that must be referenced in feature flag targeting rules.

Read Next Only When Needed

  • Read the official README section for evaluation when the user asks how to evaluate a feature flag, use non-boolean typed variants, inspect evaluation detail, or call getAllLatestFlagsVariations to get all flags for a user at once.
  • Read the official README section for FBUser when the user asks about user attributes, custom properties, targeting fields, or user construction patterns.
  • Read the official README section for flag tracking when the user asks how to listen for feature flag value changes at runtime.
  • Read the official README sections for FBClient, FBConfig and components, offline mode, and experiments only when those topics are requested.
Weekly Installs
2
GitHub Stars
11
First Seen
Mar 11, 2026
Installed on
amp2
cline2
opencode2
cursor2
kimi-cli2
codex2