• What is the targeting logic for percentage rollouts?

    The variation a user receives is determined based on the users key. When a percentage rollout is evaluated it generates a hash from the user's key, the user's secondary attribute if available, and a hidden salt attribute stored in the flag. The SDK then uses this hash to generate a percentage which is used in conjunction with the percentage rollout configuration to determine the variation a user receives.

  • Are anonymous users tracked when A/B testing?

    Yes, anonymous users are included in A/B testing. You will need to set an appropriate user key for anonymous users so that we can track each anonymous user separately; a session key might be appropriate. We don't display anonymous users on the Users screen because anonymous users couldn't be managed from LaunchDarkly, so they would only add clutter to the screen.

  • What happens when the MAU limit is reached?

    We do not impose a hard cap on MAUs. We'll never halt access or send you a weird bill based on overages. We allow for variance as we know a company's user base can grow unexpectedly over time. That said, we do limit the amount of users that will be saved in your dashboard. 

    When you exceed your MAU, your new users and changes to existing users (such as new attributes) will no longer appear in the dashboard. It's important to note that your users will continue to evaluate their flags correctly. This only impacts your ability to view user updates in the dashboard.

  • Do you have a REST API?

    All of our SDKs are built on top of the LaunchDarkly REST API. In fact, the entire LaunchDarkly web site is driven via the same API, so it’s heavily tested and complete. If you want to build a custom integration or export your data this API reference is the place to start.

  • How do I add, remove, and manage my users in LaunchDarkly?

    You don’t have to send users to LaunchDarkly in advance – just set up your users in variation calls and you’re all set: http://docs.launchdarkly.com/docs/getting-started .

    If we do not receive a request for a user in 30 days, then that user will no longer appear in the dashboard, but will still be stored in the database.   If we detect that the user is active again, then they will reappear in the dashboard with the latest set of attributes.  You cannot remove users manually from the dashboard.

    You may add individual users using the LaunchDarkly dashboard by navigating to a feature flag and adding users manually in the targeting tab.

  • What is the default rule?

    The default rule is a final rollout rule for any users that don’t match any of the previous sections on the Targeting tab, like individual targeting or custom rules.

    As with other rules, you can choose to serve a specific variation, or apply a percentage rollout to any remaining users.

    For simple percentage rollouts, you can just use the default rule for a feature flag.  For example, to roll out the true variation to 50% of your users, set the default rollout rule to true 50% and false 50%.

     
  • How do you calculate confidence interval for A/B tests?

    We use a z-score.

  • What are custom user attributes?

    Custom attributes let you turn features on or off for specific users or groups of users based on any data that you send to us. In JSON, custom attributes are stored in a custom sub-object, like this:

    {
       "user":"foo@example.com",
       "custom":{
          "groups":[
             "google",
             "microsoft"
          ]
       }
    }
    
     
  • Do I need to call identify for every user?

    No– you don’t have to call identify on users in advance. You can pass new users to variation and we’ll automatically handle adding them to LaunchDarkly.

  • How does the user key work? What about anonymous users?

    When you request a feature flag, you need to pass in a user object. The only mandatory field is the key. In JSON, this looks like this:

    {"user": "foo@example.com"}

    The only requirement for keys is that they uniquely identify the user visiting your site. For authenticated users, an e-mail address or the primary key of that user from your database makes a perfect user key. For unauthenticated users, a session ID or UUID works– as long as the same session ID or UUID is associated with the same anonymous user on repeat visits to your site.

    Anonymous users work just like regular users, except they aren't stored in the dashboard. To indicate that a user should be anonymous, simply include  "anonymous": true in your user object.

  • Can I create custom integrations with LaunchDarkly?

    Yes, you can create custom webhooks to push audit log events to your applications (like Slack and Hipchat). You can also import goals from Optimizely and connect with New Relic.

    We are also continuously adding new integrations to make feature flag management a more seamless part of your team’s workflow.

     
  • What happens if I delete a feature flag?

    If you delete a feature flag, it will be removed from all environments within a project.  This is an action that cannot be undone. 

  • What happens if I turn my feature flag off?

    When you turn your feature off via the kill switch, your users will receive the off variation. Under a default configuration, boolean flags will evaluate as false for your users. For multivariate flags, you need to define the off variation on the flag's variation tab. 

  • How do I create dependencies between feature flags?

    LaunchDarkly has a feature called prerequisites, which lets you determine which flags must be on or off before another flag’s targeting rules apply.

    For example,  you could have a flag that controls the visibility of a “sign up form” and then two other flags that control elements within the sign up form.  In LaunchDarkly, you could create a prerequisite that ensures that the sign up form flag must be on before a dependent flag is evaluated.

  • How does the SDK evaluate user attributes?

    Since the SDK maintains the feature targeting ruleset in memory, it can only consider the user attributes passed to the SDK at the time the variation is called. This ensures that there’s no network latency when you get a variation, since it does not need to call back to LaunchDarkly to look up other attributes.

    In order to see the correct user attributes on the dashboard, you must include the custom fields in the user object when you get the variation.  The user page will only display all of the user attributes seen by the SDK when doing an evaluation.

  • How do I get a real-time stream of all my LaunchDarkly events?

    LaunchDarkly provides the Analytics Data Stream (formerly known as the Firehose) as an add-on feature. The ADS is a real-time stream of raw analytics data, including feature flag requests, analytics events, custom events, and more.

     
  • What platforms and languages do you support?

    We provide well-documented SDKs for Java, JavaScript, PHP, Python, Go, Node.JS, .NET, Ruby, Python Twisted, iOS, and Android.  View our SDKs

  • How do environments work?

    Environments let you manage the feature flags on your development, staging, and production instances separately. Each environment has its own separate flag data and API keys. You can use environments to manage feature flags during local development, pre-flight flag changes in staging before rolling out to production, and more.

  • What are projects?

    Projects allow you to manage multiple software projects under one LaunchDarkly account.  For example, you can create one project called Mobile App and another project called Web App. Each project will have its own unique set of environments and feature flags.  By default, all team members in your LaunchDarkly account will have access to every project within that account.  Please see our documentation for more information.