Featurevisor

Use cases

Early access

Let customers opt in to new features before everyone else, and grow the programme into a full launch. Product and marketing decide which features it includes, and the application passes one attribute.

How it works

  1. Your application records who joined, such as from a setting in their account, and passes it as a boolean attribute.
  2. A segment matches the members.
  3. Each feature in the programme gives that segment a rule of its own, ahead of the general rollout.

Testing in production is for your own testers. Early access is for customers who chose to try something new.

Record who joined

Declare the attribute your application passes:

attributes/earlyAccess.yml
description: The user joined the early access programme
type: boolean

Set it from the signed in user's profile, so members get the programme on every device:

const context = {
userId: '8f2a',
earlyAccess: userProfile.earlyAccess === true,
}

Group the members

segments/earlyAdopters.yml
description: Users in the early access programme
conditions:
- attribute: earlyAccess
operator: equals
value: true

Give them a feature first

The wishlist goes to members before anyone else:

features/wishlist.yml
description: Add products to a wishlist
bucketBy: userId
rules:
- key: early-adopters
conditions: earlyAdopters
percentage: 100
- key: everyone
conditions: '*'
percentage: 0

The first matching rule decides, so members get the wishlist and everyone else waits. Add the same rule to each feature you put in the programme. The segment is defined once, so the membership rule changes in one place for all of them.

A datafile in a browser shows this rule to anyone who looks, so treat a feature in the programme as announced.

Grow it into a launch

When the feature is ready for more people, raise the everyone rule step by step, as Progressive delivery shows. Members keep the feature throughout. Once everyone reaches 100%, remove the early-adopters rule, since it no longer changes anything.

Let people leave

A member who leaves the programme falls through to the everyone rule. They keep the feature only if their bucket is inside its percentage, so tell them they may lose access until the full launch.

Keep it apart from experiments

Members chose to join, so they are not a fair sample of your users. Their feedback is valuable, but comparing their numbers with everyone else's does not show what the feature does. To measure that, run an experiment on users who did not choose.

Test it

tests/features/wishlist.spec.yml
feature: wishlist
assertions:
- description: Members get the wishlist
at: 90
context:
earlyAccess: true
expectedToBeEnabled: true
- description: Everyone else waits
at: 10
context:
earlyAccess: false
expectedToBeEnabled: false
Previous
Testing in production