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).