A local-first Apple health glance for heart rate, blood oxygen, steps, sleep quality, widgets, and Apple Watch.
Pulse is a focused Apple health companion for iPhone, Apple Watch, and widgets. It shows heart rate, blood oxygen, steps, sleep quality, and lightweight history in one calm glanceable experience, without accounts, servers, ads, or medical claims.
Most health apps are either too broad or too buried. Pulse keeps the daily essentials close: latest vitals, honest timestamps, compact history, and widgets that make the information visible before opening the app.
- One glance for heart rate, oxygen, steps, and sleep quality.
- One Apple Watch complication can carry three health signals.
- iPhone widgets also work in supported Mac widget contexts.
- Health data stays local and comes from HealthKit with explicit permission.
- Glance-first design: the dashboard, widgets, and Watch complications are built for quick reading, not deep fitness coaching.
- Privacy by default: no account, no backend, no ads, and no health analytics leaving the device.
- Apple-native surfaces: SwiftUI, HealthKit, WidgetKit, WatchConnectivity, and watchOS complications.
- Honest freshness: Pulse shows latest samples and timestamps instead of pretending widgets are realtime streams.
Simulator screenshots use demo values; production builds read from HealthKit with user permission.
Today![]() |
History![]() |
Sleep![]() |
Settings![]() |
Apple Watch![]() |
|
Pulse is designed as a glance-first app: the Watch complication can show heart rate, oxygen, and steps together, so the user does not need to reserve three different complication slots for the same health context.
One complication, three values![]() |
Subdial glance![]() |
Color face![]() |
iPhone widgets![]() |
Mac widget context![]() |
Pulse has a working 1.0 foundation: SwiftUI iPhone app, WidgetKit extension, watchOS app, Watch complications, shared model layer, local snapshot storage, English/Italian localization, and release/testing documentation.
Current build focus:
- Harden HealthKit behavior on physical iPhone and Apple Watch.
- Verify widget and complication freshness on real devices.
- Finish TestFlight smoke testing and App Store review preparation.
- Keep sleep presentation honest: Apple Sleep Score is not publicly exposed through HealthKit, so Pulse shows local sleep quality rather than a competing Apple-like number.
- App Store Connect app record direction:
Pulse Vitals, bundle IDcom.nova1390.Pulse, SKUpulse-ios-1. - English and Italian app localization for the main iPhone, Watch, widget, and settings surfaces.
- Local-only storage with app-group snapshots for widgets and Watch complications.
- Configurable widgets through App Intents, including heart, steps, or oxygen as the primary metric.
- Watch complications for triad, heart, and steps across supported WidgetKit accessory families.
- Health permission recovery guidance in Settings, with local-only privacy copy.
- Screenshot/demo mode for repository assets without requiring live HealthKit samples.
- Latest heart rate from HealthKit, with near-live heart rate during an active Apple Watch sensor check.
- Foreground heart-rate streaming display when another workout app writes fresh Apple Watch heart-rate samples to HealthKit.
- Latest blood oxygen sample when available from HealthKit.
- Daily step count and historical step summaries.
- Minimal dashboard optimized for quick reading.
- Real HealthKit mini trends on the dashboard for heart rate, oxygen, and steps.
- Lightweight trend charts for day, week, and month views.
- Workout and sleep intervals overlaid on history charts for context.
- iPhone Home Screen and Lock Screen widgets.
- Configurable iPhone widgets with Heart, Steps, or Oxygen as the primary metric.
- Mac widget support through WidgetKit contexts where iPhone widgets are available on Mac.
- Apple Watch quick view plus triad, heart, and steps complications.
- Settings diagnostics for latest data source, timestamp, and availability states.
- Sleep quality glance on the dashboard plus a dedicated Sleep section with duration, interruptions, stage breakdown, and trend.
Pulse depends on Apple's HealthKit and WidgetKit rules:
- Heart rate can be near-live on Apple Watch during an active sensor check. Apple's public near-live heart-rate path uses a temporary HealthKit workout session under the hood, but Pulse discards that collection and does not save a workout.
- Blood oxygen is a discrete HealthKit sample, not a continuous live stream. Availability depends on device model, region, user settings, age eligibility, and Apple's current platform support.
- The
Daychart means the last 24 hours for heart rate and blood oxygen, and today so far for steps. - Apple's Sleep Score is not exposed through public HealthKit APIs. Pulse shows local sleep quality from HealthKit sleep samples instead of presenting a competing numeric score.
- Widgets are timeline-based and budgeted by the system. They should show the latest known value and timestamp, not promise second-by-second monitoring.
- Watch complications are snapshot-based and system-budgeted; Pulse uses
LIVEonly as a short-lived state from the latest app snapshot. - Health data access requires explicit user authorization for each data type.
See HealthKit Strategy and Widget Strategy for details.
- Foundation: product vision, scope, principles, users, and non-goals.
- Planning: milestone roadmap and execution checklist.
- Architecture: planned targets, data flow, storage, and module boundaries.
- HealthKit Strategy: data types, permissions, live-data limits, and historical queries.
- Widget Strategy: iPhone, Lock Screen, Watch, and Mac widget plan.
- Apple Watch Complications Plan: tri-metric complication concepts and implementation roadmap.
- Apple Design Standards: Liquid Glass, SwiftUI, widgets, accessibility, and visual rules.
- Privacy: local-first policy and health data handling principles.
- Decisions: lightweight product and architecture decision log.
- Contributing: development workflow and project conventions.
- Support: where to ask questions or report problems.
- Security: responsible disclosure and health-data expectations.
- Changelog: notable project changes.
- Repository Profile: GitHub About, topics, and social preview guidance.
- App Store Metadata: release copy, review notes, privacy answers, and listing fields.
- Release Readiness Audit: App Store blockers, screenshot status, and final submission checklist.
- Privacy Policy: public privacy policy candidate for App Store Connect.
- Swift and SwiftUI.
- HealthKit for health data authorization and queries.
- WatchConnectivity for iPhone/Watch coordination.
- WidgetKit for iPhone, Watch, and Mac-available widget surfaces.
- Charts or a minimal custom chart layer for compact trend views.
- Lightweight local storage for app-owned snapshots, derived summaries, and UI cache.
Pulse now has the core app surfaces in place: iPhone dashboard, history, sleep quality, widgets, Apple Watch app, and Watch complications. The next work is hardening:
- Physical-device QA for HealthKit, widgets, and Apple Watch flows.
- Unit and UI test coverage for formatting, freshness, snapshot storage, and chart states.
- TestFlight packaging and App Store privacy/review preparation.
- Visual polish for screenshots, repository social preview, and launch assets.
The project builds with Xcode 26.3. Simulator builds can use disabled code signing for compile verification, but HealthKit runtime testing requires a real Apple Development Team and physical devices.
Example compile check:
xcodebuild -project Pulse.xcodeproj -scheme Pulse -destination 'generic/platform=iOS Simulator' -derivedDataPath .build/DerivedData CODE_SIGNING_ALLOWED=NO buildFor repository screenshots, launch the simulator app with PULSE_SCREENSHOT_MODE to use local demo data instead of waiting for HealthKit samples.
Pulse is released under the MIT License. See LICENSE.










