Changelog
March 2026
Shipped 189 discrete changes.
Highlights
- Doctor memberships: Doctors can now create memberships for their patients. Auto-creates accounts for new patients, friendlier login language for membership redemption, and enforces one-test-per-organization claiming.
- PREVENT calculator on web: The AHA PREVENT cardiovascular risk calculator is now available in the web app.
- In-app add-on and gift purchases: Add-on and gift blood test purchasing now works natively in the mobile app, with add-ons included in reimbursement letters and the purchases pane.
- Meal recommendations v2: Recommendations now served from a database (instead of live), sorted by distance,with parallel loading for performance. Redesigned recommendation cards.
Selected bug fixes
- Fixed eVLDL/HDL and eVLDL/LDL ratios always showing the same value.
- Fixed payment logic on web when scheduling appointments.
- Fixed blood pressure logging bug and care bot message typo.
- Fixed missing images for report previews.
- Fixed metrics with string values like
<30not parsing correctly for pills, charts, and metric definitions. - Fixed trend indicators showing a minus sign redundantly alongside a down arrow.
February 2026
Highlights
- Launched Empirical for Web: Major web app build-out including Stream Chat integration, profiles page, Stripe checkout, desktop/tablet sizing parity, and web locations endpoint for the marketing site.
- Thyroid, cancer, & hormone add-ons: Real Junction panel IDs, updated biomarker lists matching spreadsheet, add-on selection UI in checkout, Stripe price calculations, result parsing, and report handling for add-on panels.
- Redesigned today screen beta: New chrome-free today screen design with heart rate widget, timeline grid, customize modal, and liquid glass toolbar. Live heart rate display.
- Pre-appointment checklist: Pharmacy selection, blood pressure logging, medication and supplement lists, and data syncing to Elation before appointments.
- Custom health reports: Endpoints to let users publish and share a customized version of their health report.
Selected bug fixes
- Fixed total Stripe price not correctly including add-ons in both code branches (billing correctness fix).
- Multiple web-specific fixes from a web bug bash session.
- Fixed incorrect SQL column reference in the pre-appointment job and TypeScript compile bugs.
- Fixed onboarding bug where a new user could get stuck without creating an account, resulting in a blank today screen.
- Fixed Find a Lab modal crash.
January 2026
Highlights
- Launch of direct integration with blood labs.: time between receiving results and processing reports is now instant. Lab results are more accurate.
- Blood test reports refinement: Improved report prompts, reprocessing modes in BloodTestJob, arc chart for blood test header, tappable PillStats linking to risk model screens, and nutrition score cards in reports. Checkout flow aligned with web landing page, year-long heart health program on medical screen, address collection, and updated styling throughout.
Bug Fixes
- Fixed Find a Lab modal crash. ApiClientImpl now catches exceptions during server crashes (HTML returned instead of JSON).
- Fixed mixed surcharge/non-surcharge gift purchases, incorrect line item quantities for multiple subscription purchases.
- Fixed resting heart rate stat not showing built-in data (switched to min instead of average), and relative timestamps not auto-updating.
- Fixed meal recommendations not correctly decoded from Swift app, custom supplements forgotten after app close, and custom report generation exceeding GPT-5 context window.
December 2025
Highlights
- Gifting flow launched: Split BasicInfoScreen into AgeSexAndBMIScreen to fix the risk assessment flow with screens-array route props.
- Subscription modal and checkout hardening: Multi-checkout flow validation for scheduled sends and wrapping on small screens.
- Data percent-complete alignment: Calculation now uses the same logic as BaselineLoader, fixing inconsistent progress reporting.
Selected bug fixes
- Recompiled protos with numVisits changes to fix crashes; subscription modal shown prematurely before RevenueCat data loaded.
- Fixed abandoned checkout SQL query bug in AppointmentBookingFollowups.
- Fixed data percent-complete calculation inconsistency between different code paths.
November 2025
Highlights
- Advanced heart health subscription: New advanced heart health program, with re-testing at 3- and 9-months.
- Redesigned Apple Watch app: WatchOS native app with heart rate chart, continuous heart rate recording, meal recommendations widget.
Bug Fixes
- Fixed gift flow restored after bad merge/rebase on third step, gift server API bugs, and stale advanced heart health reference in BloodTestMetrics.
- Fixed chart not updating max timestamp when new data arrived (broke panning) and drag behavior edge cases.
- Fixed supplement logging broken on Android and MedicalScreen background color wrong on Android.
- Fixed onboarding subscribe screen navigation bug, server type-checking errors preventing startup, and report object-to-enum conversion bug.
October 2025
Highlights
- ChatGPT App / MCP production endpoints: Working end-to-end ChatGPT Apps SDK implementation for food photo analysis and biomarker explanation with OpenAI verification token.
- Hypertension notification system: Native iOS 26.2 support for reading hypertension notification events, inline alert dialogs linking to action screens.
- Multi-person and scheduled gift checkout: Multi-recipient purchasing, scheduled sends, validation, purchaser/receiver email templates, and Stripe webhook handling for gifts.
- Mailchimp integration: Switched abandoned checkout follow-ups from SendGrid to Mailchimp with tag-based automation.
Bug Fixes
- Critical fix for a navigation cycle at the subscribe screen that prevented users from completing onboarding; replaced fragile LiquidGlassView with absolute positioning.
- Fixed AIP ratio calculation (now correctly uses log base 10), non-HDL/TotalChol ratio (uses reciprocal), and recalculated clinical records.
- Added guards to PillStat against bad input values and LocationScreen when zip code not yet edited. Fixed subscription modal showing before RevenueCat data loaded.
- Fixed TanGradientBg not expanding to full height, lab location glitching in success banner, and price clipping on lab panels.
September 2025
Highlights
- iOS 26 / Liquid Glass adoption: Adopted liquid glass design for bottom tabs, meal log sheets, toolbar, and model switcher. Mesh gradient backgrounds. Liquid glass app icon.
- Major color rebrand to terracotta: Changed primary brand color to terracotta red, updating buttons, empty states, and UI throughout the entire app.
- Blood test gift flow: Full gifting system — purchase for others, gift acceptance with unique tokens, scheduled gift sends, multi-person checkout, and SendGrid email templates.
- Junction lab ordering integration: Switched production blood test ordering from direct Elation/Quest to Junction. Junction webhooks, lab results parsing, and requisition creation.
- Heart rate chart improvements: Pinch-to-zoom with focal point tracking, improved pan/pinch interaction, and Android gesture compatibility.
Bug Fixes
- Numerous fixes for iOS 26 build: KeyboardAvoidingView issues, mesh gradient adoption, liquid glass bottom sheets, and background consistency.
- Fixed layout bug creating a dead end in onboarding, skip-case bug, and Android modal/masked-view UI bugs.
- Fixed chat client disconnection causing crashes in Clinic app, race condition in BloodTestJob when replacing clinical records.
- Fixed PDF attachment handling in care chat, CSV downloads for Mac app context, and blood pressure modal crash.
August 2025
Highlights
- Blood test reports pipeline maturation: Deterministic blood test headers/ratios, hidden report state for clinic review, donut/pie/bar charts in reports, health report debug in Clinic.
- A/B testing of checkout flows: Simplified vs. original blood test checkout flow experiment. A/B/C test of onboarding flow order (email vs. phone first).
- Subscribe screen and paywall redesign: New subscription screen supporting both medical and software-only plans, as modal and standalone.
- MCP server prototype: Built MCP (Model Context Protocol) server endpoints for nutrition facts from food photos and biomarker explanation, usable by external AI clients.
Bug Fixes
- Multiple fixes for Podfile, Xcode project, and native build issues after the RN 0.79 / Expo 53 upgrade. Reverted to JS tabs on Android and pre-iOS-26 due to native bottom nav issues.
- Fixed step count chart incorrectly showing a red background and horizontal alignment off by 4px on NutritionCard.
- Fixed nested navigator crash by introducing
NavigationIndependentTree. Upgraded Reanimated 3.10 to 3.16 to fix bottom sheet bugs. - Fixed two database migration bugs and iron saturation displaying as a raw decimal instead of percent.
July 2025
Highlights
- Workout screen redesign: New workout tiles, VO2Max/HR zone filters, workout detail with heart rate chart, route maps, and exercise library integration.
- Timeseries chart gesture overhaul: Replaced debounce with throttle for smooth dragging, added scrubber to reduce re-render overhead, and improved pan/pinch interaction.
Bug Fixes
- Fixed meal recommendation serialization bug (restaurant could not serialize as a map key) and redundant percent formatting in nutrition metrics.
- Fixed package UUID not passed correctly through checkout, drip emails still sent to users who had already purchased, and phone number not propagated through blood test flow.
- Fixed test results viewing broken on Android; pointed Android build to a patched bottom sheet library.
- Fixed multiple race conditions in data saving and stream display; resolved sleep data retrieval bug.
June 2025
Highlights
- Recommended meals near you: Server-side MealRecommender API, recommended meal screen with real-time location, user-editable system prompt, thumbs up/down ratings, and native watchOS meal widget.
- React Native 0.79 / Expo 53 upgrade: Major platform upgrade including Swift AppDelegate, Reanimated 3.16, React 19, and new date picker library.
- On-device LLM health assistant: Prototype for on-device health report generation, with UI toggle between on-device and cloud AI models.
- PREVENT risk model and heart age: Added the PREVENT cardiovascular risk equations and a heart age calculation score.
Bug Fixes
- Fixed processing of lab results from images, unit conversion edge cases in BloodTestMetrics, and Lp(a) reporting as particle count instead of mass density.
- Fixed heart rate zones not saving to the database (Map-to-Record conversion), HR zones chart colors, and WorkoutCarouselScreen crash when workouts are empty.
- Fixed cholesterol and other pills getting stuck in stale states. Fixed start date modal not re-opening after previous use.
- Fixed MobX reactivity so deleted reports update the UI. Fixed HealthKit permission prompts when wearable is not explicitly set.
May 2025
Highlights
- Launch of Empirical Heart Health
- Health reports system: Custom health reports generated from blood test PDFs, including offline batch job, prompt engineering with personal context (heart rate zones, nutrition). Reports screen added to both Empirical Health and Clinic.
- Nutrition detail improvements: Nutrient ratio tracking (potassium/sodium, good fat/bad fat, fiber/saturated fat), longitudinal nutrition charts, and nutrient density metrics.
- Blood test report enhancements: Heart rate zones chart in reports, Gemini 2.5 Flash upgrade for PDF parsing, UUID/title tracking for report files.
Selected bug fixes
- Fixed risk-with-actions showing lower than risk-without-actions due to stale state on focus.
- Fixed subscription status not updating immediately after purchases loaded, and undefined goals bug.
- Fixed zone 5 cardio goal not being marked as sensor-completed. Fixed Elation gender/sex field swap.
April 2025
Highlights
- Heart attack risk actions: Risk result screen showing the user’s risk, list of actions, and lowered risk projections. ASCVD risk model integration with the new heart health plan.
- Nutrition features rollout: Nutrition A/B test, nutrition details screen, delete/edit functionality for meals, numeric stepper UI, and empty states. Enabled nutrition analysis for all users.
- Blood test checkout simplification: Fewer checkout steps, inline payment on detail screen, drip email campaigns (D0, D1, D3, D7), and web checkout improvements.
- Risk assessment refactor: Broke risk assessment into modular screens with biomarker-based defaults and manual entry fallback.
Selected bug fixes
- Hotfix build (2.4.11) for a clinical records crash. Fixed matching logic to require unit agreement, handled NaN values as strings in biomarkers.
- Fixed a crash when editing goals from BiomarkerNutritionScreen, fixed risk calculation to always use full list of risk model inputs.
- Fixed deep sleep and REM sleep not showing in correlations, and deep/REM minute aggregation bugs.
- Fixed calendar rendering above content, metric definition screen not ending loading for blood test metrics, and NaN display on sleep stats.
March 2025
Highlights
- Health score
- Heart health care plans: Heart health onboarding asking user intent, lifetime heart attack risk model, personalized care plan creation with blood test and sleep apnea screening.
- Biomarker-driven nutrition: Photo-based nutrition analysis for heart health, personalized nutrition goals based on biomarkers, and the BiomarkerNutritionScreen.
- Blood test automation pipeline: After purchase, automatically create Elation profiles, send emails, display patients in Clinic. New lab results notification system with in-app badges and modals.
- Gemini PDF processing: Switched blood test PDF parsing to Gemini with error propagation, clinical records matching improvements, and unit conversions.
Bug Fixes
- Updated posthog-react-native across all apps to fix a session replay crash on Android.
- Fixed exercise minutes averaging by day instead of week, double-counting of steps, and infinite peak heart rate when HRs were missing.
- Fixed manual blood pressure entry not updating metric detail screen bounds or invalidating the timeseries cache.
- Fixed notification sender validation and StreamIO webhook members check.
February 2025
Highlights
- Android launched: Enabled Android subscriptions, Google Play Store ratings, Facebook SDK install tracking, and free subscription access for Android beta testers.
- Empirical Clinic bootstrapping: Initial build of the Clinic app with notifications, channel sorting, clinical records loading, and SVG upgrades.
- AI health assistant tools: Added web search and file download capabilities to the HealthAssistant.
Bug Fixes
- Removed a BlurView that was causing a crash on Android.
- Fixed channel sorting bug in Empirical Clinic and clinical records not loading for some users.
- Fixed
onSelectSlotnot being passed through DoctorPreview, and a timing bug with text field blur when entering height. - Fixed TimeXAxis label size calculation and a bug in GoogleCalendarClient when creating shorter-length slots.
January 2025
Highlights
- Blood test purchasing and Stripe payments: End-to-end Stripe integration enabling users to buy blood tests in-app, including payment screen, webhook processing, Apple Pay domain verification, and purchase confirmation flow.
- Health Score and Radar: Introduced a Health Score system with category rings and a Health Radar motif on the Baseline screen.
- Onboarding overhaul: Expanded the onboarding welcome screen into a three-screen value proposition sequence (biomarkers, action plan, medical care). Added app store rating prompts and improved iPhone SE compatibility.
- Fitbit integration: OAuth flow from mobile app, irregular rhythm notifications, heart rate data parallelization, timezone management, and rate limit handling.
Bug Fixes
- Fixed PaymentScreen cents-to-USD conversion errors, spurious
$symbols, and incorrect redirect after successful payment. - Fixed a crash on the blood test details screen and NaN on the payment screen.
- Reverted to HKSampleQuery on iOS (1s vs 5s performance regression), fixed Fitbit steps fetching and onboarding data sync.
- Fixed duplicate device tokens, a heart rate chart indexing bug, and sleep app data issues.