Release notes
Changelog
The story of PeriFlow, version by version.
Live on iOS Live on Android
Trust-and-retention polish on top of the 1.0.5 sleep + widget release. The bigger story is small: weight is now treated as a signal rather than a required onboarding field, journal entries auto-pick up symptom mentions from typed text (so writing "hot flash woke me up" now logs it), and a stale-cycle nudge prompts users to reconcile when their tracker has drifted. Also cleans up the two immediate follow-ups from 1.0.5 (Android widget layout crash, HealthKit / Health Connect error messages surfacing in Settings).
Added
- Journal symptom pickup from typed text — writing about a symptom in a journal entry auto-logs it against the day.
- Stale-cycle nudge — prompts reconciliation when the tracker's expected phase has drifted from likely reality.
Changed
- Weight is optional and treated as a signal, not a hard field — onboarding no longer defaults to 65kg when the field is blank; weight is used only if provided.
Fixed
- Android home-screen widget crash — accent bar rendered a React Native
<View> where an Android FrameLayout was required, crashing the widget provider on first render. - HealthKit / Health Connect errors now surface in Settings — sleep import failures previously died silently; the actual error string is now shown in the Health Data row so users (and support) can see what went wrong.
Live on iOS
Public launch on both stores (2026-06-30). The scope headliner was full HRT support — for a perimenopause app to launch without HRT users would have been a real miss. Also shipped the journal voice-extractor overhaul (80+ new speech patterns), per-entry symptoms, adjustable symptom ratings, and a stack of App-Review-driven iOS fixes (photo library usage description, signing config for the new Apple Developer account, ci_post_clone.sh resilience). Site side, the App Store badge + iOS launch CTAs went up.
Added
- Full HRT support —
HRTStatus type (none/cyclical/continuous/estrogen_only/other), Phase type split (CyclePhase | 'steady'), useHRTConfig() hook, 8-step onboarding with GDPR Article 9 consent, Settings HRT section. All 6 tabs adapted for steady-state and cyclical HRT users. Correlation engine skips phase comparison for steady-state, reframes for cyclical. SourcesModal has 5 PubMed HRT refs. Supabase migration with health_data_hrt audit consent type. - Journal: per-entry symptoms + day-grouped list.
- Journal: adjustable symptom ratings + Dashboard voice journal prompt.
- Journal progress card redesign + 28-day strip scroll hint.
- Site: HRT diet & exercise blog article + internal linking.
- Site: App Store badge + iOS launch CTAs across the site.
Changed
- Journal voice extractor — comprehensive overhaul — 80+ new speech patterns, cross-symptom inference, modifier fix.
Fixed
- iOS ITMS-90683 rejection:
NSPhotoLibraryUsageDescription missing — the actual cause behind the "builds 44–49 failed" saga. - 4 UX issues: keyboard overlap, phase-reveal, carbs layout, duplicate cards.
- Reset device data now fully clears all stores + onboarding UX fixes.
- iOS signing config for the new Apple Developer account (V2MWA3SWNK) — stripped signing fields from pbxproj, set
DevelopmentTeam in TargetAttributes, set DEVELOPMENT_TEAM on paid account. ci_post_clone.sh more resilient — retry brew install, check for existing node.
Something behaving oddly after an update? Email hello@periflow.io — include your app version (Settings → About) and what you're seeing. We read every message.