Skip to content
AF
HealthKit reference

HealthKit Reproductive Health Types

17 identifiers · read from Apple’s documentation on 2026-08-28

17 HealthKit reproductive health identifiers, and 16 are category types that carry an enum case and a date range instead of a number. Two are beta.

Apple's reproductive health documentation covers 17 type identifiers, and 16 of them are category types. Only one is a quantity type. That ratio is the most important thing to know before you design a table for this data, because a category sample carries no number at all. Its payload is an enum case and a date range, so a reproductive health history is a sequence of dated states rather than a series you can plot and average.

The single exception is basalBodyTemperature, available since iOS 9.0. It is the group's only quantity type, its stated aggregation style is discrete, and temperature is the only unit family that appears anywhere in these 17 entries. Discrete means each value is a reading taken at a moment, so average, minimum, maximum and latest are the operations that mean something, and a sum is not one of them. Sum or average explains why choosing wrong here raises no error and fails no test.

The remaining 16 differ mainly in whether Apple gave them a named value enum. menstrualFlow carries HKCategoryValueMenstrualFlow and is by far the most thoroughly written up entry in the group, with 128 words of discussion behind its one line abstract. cervicalMucusQuality and ovulationTestResult, both also from iOS 9.0, have dedicated enums too but only 7 words of discussion each. pregnancyTestResult and progesteroneTestResult arrived together in iOS 15.0, each representing the outcome of a home test through its own enum, which means gaps between records are normal rather than a sync fault. Where no named enum exists, including lactation, pregnancy and sexualActivity, the record is a generic HKCategoryValue, and the value tells you nothing that the date range does not already say.

Six of the 17 go back to iOS 9.0. Three landed in iOS 14.3: contraceptive, lactation and pregnancy. Four more landed in iOS 16.0 as a coherent set of cycle deviation flags, namely infrequentMenstrualCycles, irregularMenstrualCycles, persistentIntermenstrualBleeding and prolongedMenstrualPeriods. Each of those four carries 73 words of discussion, more than most of the older members, and each carries the generic HKCategoryValue. Two more are dated iOS 27.0: bleedingAfterMenopause and menopausalState, and both are flagged beta in the dataset, so their shape can still move before release.

None of the 17 has a verified Android counterpart in this site's cross-platform matrix. Treat the whole group as Apple only until a counterpart is verified, and if you also ship on Android, plan a separate schema for reproductive records rather than a field by field mapping you will have to unpick later. The menstrual cycle API reference covers what each platform exposes today.

Two design consequences follow from all of this. The first is that your UI is a timeline, not a chart. Sixteen of these identifiers produce rows that are readable only as dated entries, and the one that does produce numbers produces a handful of readings a week at most. The second is that consent copy carries more weight here than anywhere else in HealthKit. Ask only for the identifiers your feature actually uses, name them in plain language in the request, and keep the data on the device unless something genuinely needs it elsewhere. Health data user consent covers what the request has to say, and on-device versus cloud covers what changes the moment a record leaves the phone.

Identifier names, abstracts, aggregation styles and availability versions on this page were parsed from Apple's developer documentation on 2026-08-28 and are published in full in the HealthKit identifier reference.

The 17 identifiers in reproductive health

Every field is joined from Apple’s documentation. Aggregation style and unit family are the two Apple states only in prose — where its wording does not state one, this table says so rather than guessing. Android names appear only where the mapping is verified on both platforms.

Reproductive health 1

IdentifierWhat it isAggregateUnitiOSAndroid
basalBodyTemperatureHKQuantityTypeIdentifierBasalBodyTemperatureA quantity sample type that records the user’s basal body temperature..discreteAveragetemperature9.0not verified

Reproductive Health 16

IdentifierWhat it isAggregateUnitiOSAndroid
bleedingAfterMenopauseHKCategoryTypeIdentifierBleedingAfterMenopauseAn identifier for samples that record bleeding after menopause.enum — unresolved27.0 (beta)not verified
cervicalMucusQualityHKCategoryTypeIdentifierCervicalMucusQualityA category sample type that records the quality of the user’s cervical mucus.enum — HKCategoryValueCervicalMucusQuality9.0not verified
contraceptiveHKCategoryTypeIdentifierContraceptiveA category sample type that records the use of contraceptives.enum — HKCategoryValueContraceptive14.3not verified
infrequentMenstrualCyclesread-onlyHKCategoryTypeIdentifierInfrequentMenstrualCyclesA category sample that indicates an infrequent menstrual cycle.enum — HKCategoryValue16.0not verified
intermenstrualBleedingHKCategoryTypeIdentifierIntermenstrualBleedingA category sample type that records spotting outside the normal menstruation period.enum — HKCategoryValue9.0not verified
irregularMenstrualCyclesread-onlyHKCategoryTypeIdentifierIrregularMenstrualCyclesA category sample that indicates an irregular menstrual cycle.enum — HKCategoryValue16.0not verified
lactationHKCategoryTypeIdentifierLactationA category type that records lactation.enum — HKCategoryValue14.3not verified
menopausalStateHKCategoryTypeIdentifierMenopausalStateAn identifier for samples that record a person’s menopausal state.enum — HKCategoryValueMenopausalState27.0 (beta)not verified
menstrualFlowHKCategoryTypeIdentifierMenstrualFlowA category sample type that records menstrual cycles.enum — HKCategoryValueMenstrualFlow9.0not verified
ovulationTestResultHKCategoryTypeIdentifierOvulationTestResultA category sample type that records the result of an ovulation home test.enum — HKCategoryValueOvulationTestResult9.0not verified
persistentIntermenstrualBleedingread-onlyHKCategoryTypeIdentifierPersistentIntermenstrualBleedingA category sample that indicates persistent intermenstrual bleeding.enum — HKCategoryValue16.0not verified
pregnancyHKCategoryTypeIdentifierPregnancyA category type that records pregnancy.enum — HKCategoryValue14.3not verified
pregnancyTestResultHKCategoryTypeIdentifierPregnancyTestResultA category type that represents the results from a home pregnancy test.enum — HKCategoryValuePregnancyTestResult15.0not verified
progesteroneTestResultHKCategoryTypeIdentifierProgesteroneTestResultA category type that represents the results from a home progesterone test.enum — HKCategoryValueProgesteroneTestResult15.0not verified
prolongedMenstrualPeriodsread-onlyHKCategoryTypeIdentifierProlongedMenstrualPeriodsA category sample that indicates a prolonged menstrual cycle.enum — HKCategoryValue16.0not verified
sexualActivityHKCategoryTypeIdentifierSexualActivityA category sample type that records sexual activity.enum — HKCategoryValue9.0not verified

What will bite you

bleedingAfterMenopause and menopausalState are beta. Both are dated iOS 27.0 and both are flagged beta in the dataset. Beta means the identifier, the values it can carry and its availability can all still change, so anything you write against them is provisional. Feature flag them, and do not let a beta identifier become a required column.

Sixteen of the 17 have no aggregation style and no unit. That is correct rather than missing: only the quantity type carries those fields. It becomes a bug when a generic ingestion pipeline assumes every HealthKit sample has a numeric value and a unit, then coerces an enum case into a number. Once HKCategoryValueMenstrualFlow is stored as an integer in your own table, nothing downstream remembers that averaging it is nonsense.

A generic value means presence, not detail. lactation, pregnancy, sexualActivity, intermenstrualBleeding and the four iOS 16.0 cycle deviation identifiers carry a plain HKCategoryValue rather than a named enum. The record says an event was logged over an interval. If your feature needs anything more specific than that, this data cannot supply it, and inventing a severity or a confidence from it invents information the user never entered.

The documentation is thin where it matters. intermenstrualBleeding has 6 words of discussion, cervicalMucusQuality and ovulationTestResult 7 each, lactation and pregnancy 8 each. The abstract really is all Apple wrote. Where the docs are silent about what a value means, do not close the gap with an assumption in your interpretation layer, and do not present a derived conclusion to the user as though the platform provided it.

Questions

How many HealthKit reproductive health types are there?
Apple's documentation lists 17 identifiers in this group as of the parse on 2026-08-28. Sixteen are category types, which record a state or an event as an enum case over a date range. Exactly one, basalBodyTemperature, is a quantity type, and it is the only member of the group that produces a number.
Does menstrualFlow have a numeric value I can average?
No. menstrualFlow is a category type carrying HKCategoryValueMenstrualFlow, so each record is one enum case attached to a date range. There is no unit and no stated aggregation style, because those fields apply to quantity types only. Count records or lay them out on a timeline instead of averaging them.
Which reproductive health identifiers are newest?
Two are dated iOS 27.0, bleedingAfterMenopause and menopausalState, and both are flagged beta in the dataset, so treat them as provisional. Before them, four arrived in iOS 16.0: infrequentMenstrualCycles, irregularMenstrualCycles, persistentIntermenstrualBleeding and prolongedMenstrualPeriods. Two came in iOS 15.0, three in iOS 14.3, and six of the 17 date back to iOS 9.0.

All 17 identifiers above were read from Apple’s documentation on 2026-08-28. See the full 240-identifier table for every group at once, or the datasets for the same data as JSON and CSV. Apple’s abstracts are quoted for identification; the grouping, the aggregation split and the cross-platform mapping are AIFitnessAPI’s.

← All HealthKit groups