Skip to main content

Module feature_adoption

Module feature_adoption 

Source
Expand description

§Feature Adoption and Usage Metrics

Feature adoption measures whether the people a feature was built for actually use it, at what rate, and whether that use persists over time. Initial adoption and sustained adoption are different signals: a spike from curiosity or forced exposure is not the same as genuine, lasting value delivery. Track them separately, and measure both against the specific target audience the feature was built for, not your entire user base indiscriminately.

§Formula

Initial adoption %  = tried_at_least_once / target_audience × 100
Retained adoption % = still_using_after_n_weeks / initially_tried × 100

tried_at_least_once     = people in the target audience who tried the
                           feature at least once
target_audience         = the specific population the feature was built
                           for (not the whole user base)
still_using_after_n_weeks = of those initial triers, how many are still
                           using the feature after a meaningful period
                           (e.g. four or eight weeks)
initially_tried          = the initial-trial count (the denominator for
                           retention, distinct from target_audience)

§Why it matters

A feature with high initial trial and low retention suggests discoverability worked but the feature itself did not deliver enough value to keep people coming back — a very different diagnosis, and a very different fix, than low initial trial with high retention, which suggests a genuinely valuable feature that not enough people know about. Reporting only one of the two numbers hides exactly this distinction.

§Example

The topic doc’s enterprise example: a collaborative-editing feature launch reported “an impressive 60% initial trial rate within the first two weeks,” but “a follow-up retention read at eight weeks showed only 8% of those initial triers were still using the feature regularly” — revealing the high trial rate had been driven by a hard-to-dismiss onboarding tooltip rather than genuine, sustained interest.

use software_engineering::feature_adoption::{
    initial_adoption_percent, retained_adoption_percent,
};

// 600 of a 1,000-person target audience tried the feature: 60% initial trial.
let initial = initial_adoption_percent(600.0, 1_000.0).unwrap();
assert!((initial - 60.0).abs() < 1e-9);

// Of those 600 initial triers, only 48 (8%) were still using it at 8 weeks.
let retained = retained_adoption_percent(48.0, 600.0).unwrap();
assert!((retained - 8.0).abs() < 1e-9);

§Pitfalls

  • Reporting only initial trial, never retention — cannot distinguish curiosity or forced exposure from genuine, lasting value.
  • Measuring adoption against the wrong denominator — a feature built for a specific segment, measured against the whole user base, will always look like it has terrible adoption regardless of how well it actually serves its intended audience.
  • Concluding a feature failed without investigating the specific cause of low adoption — it may be poorly discovered, poorly explained, or simply too new for the measurement window.
  • Celebrating adoption inflated by forced exposure or dark patterns — a hard-to-dismiss modal or intrusive default is not genuine, voluntary use.

§Sources

  • Chapter 5.2, Feature adoption and usage metrics.

Topic doc: software-engineering-metrics/locales/en-001/chapters/05-02-feature-adoption-and-usage-metrics.md

Functions§

initial_adoption_percent
Initial adoption percentage: target audience who tried a feature at least once.
retained_adoption_percent
Retained adoption percentage: initial triers still using the feature after a meaningful period (e.g. four or eight weeks).