Sleep Detector is a private sleep journal for iPhone with an Apple Watch companion, published by SimpliXio Pte. Ltd.
Download on the App Store · GitHub releases
- The app saves a timestamp when it goes into the background.
- When you reopen it after the configured threshold (30 minutes by default), it evaluates the elapsed interval.
- Optional Apple Health records and Apple Watch sleep evidence can refine the estimate.
- Review the proposed times, adjust them if needed, then confirm or dismiss the estimate. Confirmed periods can sync to Apple Health when you enable sync and grant permission.
Time away from this app does not prove that the phone was unused or that you were asleep. iOS may suspend background apps, so the estimate is completed when Sleep Detector reopens. There is no continuous sensor or workout session.
Sleep Detector supports personal awareness and journaling. It does not diagnose sleep disorders.
- Editable sleep estimates with confidence and evidence details.
- Sleep history, duration trends, and daily wellness context.
- Optional Apple Health access and confirmed-sleep syncing with duplicate protection.
- Apple Watch duration, stages, and available recovery signals.
- Local reminders, system appearance support, and JSON/CSV export.
- No account, advertising, tracking, or developer-operated cloud sleep profile.
HealthKit and the Watch companion are iOS features. Android project generation is available, but Google Fit integration is not implemented; the iOS release checks do not establish Android production readiness.
The project uses Expo SDK 55 and React Native 0.83. The installed React Native/Metro packages require Node.js 20.19.4 or newer. iOS development also requires macOS, Xcode with the required platform SDKs, and CocoaPods.
git clone https://github.com/Build4Build/detect-sleep.git
cd detect-sleep
# Use the published source when reproducing the App Store 1.4.1 release.
git switch --detach v1.4.1
npm ci
npm run iosFor ongoing development, check out the branch you intend to modify instead of a release tag. npm run ios generates the native project if absent, builds the app, and starts Metro. After the native app is installed, npm start restarts Metro for JavaScript development.
This app needs its own native build: HealthKit, Watch connectivity, and the local Swift module are not included in Expo Go. See Expo's native development-build guidance.
Signing and EAS project identifiers are defined in app.json and eas.json. The current static app configuration does not read APPLE_TEAM_ID from .env; setting that variable alone will not change the signing team. Forks must configure their own identifiers and capabilities.
See local build and signing guidance.
npm test -- --runInBand
npx tsc --noEmit
npm run lint -- --quiet
npx expo-doctor
npx expo export --platform iosThe export command checks the production JavaScript bundle; it does not produce a signed App Store archive. Expo Doctor and the dependency audit can flag newer patches after a release. Review their output before producing the next build.
Use the manual testing checklist for lifecycle, Health permissions, Watch, and physical-device checks. Diagnostics are available through bash monitor-sleep-detection.sh --help.
Use the existing EAS production profile with an account authorized for this project:
npx eas-cli build --platform ios --profile production
npx eas-cli submit --platform ios --profile productionSelect the intended build during submission. EAS Submit uploads to App Store Connect; the release still needs the correct build, metadata, privacy declarations, assets, and App Review submission in App Store Connect. EAS manages the remote build number and increments it for production builds. Update the app version in both app.json and package.json for a new store version.
Keep the signed build associated with its source commit. Publish a GitHub tag only for the reviewed source; do not move a published release tag to later changes.
Current store materials:
- iPhone screenshots
- Apple Watch screenshots
- Store description
- Reviewer instructions
- 1.4.1 release notes
Pierre-Henry Soria conceived Sleep Detector, created the product vision, brought the clarity needed to turn the idea into a useful experience, and designed and built the systems behind the app. He started working on those systems in early 2024 to solve the painful gap between phone inactivity and useful, reviewable sleep insight.
Pierre-Henry continues to lead the product vision, engineering, privacy model, sleep-analysis architecture, Apple Health integration, and Apple Watch experience.
- Website: pierrehenry.dev
- GitHub: github.com/pH-7
- LinkedIn: linkedin.com/in/ph7enry
Enjoying this project? Buy me a coffee (spoiler: I love almond extra-hot flat white coffees).
Sleep records and analysis stay on your devices. Apple Health access and confirmed-sleep sync are optional; exports are shared only when you choose a destination. See the privacy policy for details.
Sleep Detector is generously distributed under the MIT License.