Back to ProjectsMobile App

AzanClock — Prayer App

Prayer times and Azan notification app for iOS and Android. Solved a tricky iOS background-notification bug that had stumped multiple senior developers.

Languages
JavaScriptTypeScriptSwift
Skills & Tech
React NativeiOS Background ModesPush NotificationsDebugging
AzanClock — Prayer App

The standout part of this project wasn't the feature set — it was tracking down and fixing a notoriously difficult iOS bug where Azan notifications silently failed to play in the background, one that had stumped multiple senior developers before. AzanClock is a prayer-times and Azan notification app for iOS and Android that shipped once that bug was actually understood, not worked around.

The Challenge

  • Azan audio notifications needed to fire reliably even when the app was backgrounded or the device was locked
  • The bug was intermittent and platform-specific, making it hard to reproduce consistently
  • Standard debugging approaches (logs, breakpoints) weren't surfacing the root cause
  • The fix required a genuinely deep understanding of iOS background-audio and notification behavior, not a workaround

What I Built

  • Location-based prayer time calculation with accurate scheduling
  • Scheduled Azan audio notifications per prayer time
  • iOS background-audio bug fix — isolated the root cause using a minimal repro app stripped down to a single screen and notification trigger, then ported the fix back into the main app
  • Android notification parity ensuring consistent behavior across both platforms

Tech Stack

  • Framework: React Native
  • Notifications: Native iOS/Android notification and background-audio APIs
  • Platforms: iOS, Android

Key Decisions

  • Isolated the iOS background-notification bug using a minimal repro app (one screen, one notification trigger) rather than continuing to debug inside the full app, since the bug's intermittency made it nearly impossible to pin down amid the main app's complexity
  • Investigated iOS background-audio and notification behavior at the platform-documentation level rather than relying on trial-and-error workarounds, since the bug had already resisted standard debugging approaches from multiple senior developers
  • Verified Android notification behavior separately to ensure platform parity rather than assuming the iOS fix translated directly

Outcome / Impact

Fixed a bug that had blocked release for weeks and stumped other developers, unblocking the app for App Store submission — a case study in solving platform-specific issues through minimal reproduction rather than more logging.

Interested in similar work?

Let's discuss your next project.

Contact Me