// Case study · Pray Watch

A ten-year-old app, moving again.

Pray Watch is a prayer-times app for iPhone and Apple Watch with over a million downloads. By 2025 it had all but stopped changing, with years of ideas on the shelf. We made the codebase agent-ready, and it started shipping again.

18

lines changed in all of 2025

5 weeks

from a repo manual to a rewritten release

−29%

code across the app and its engine

1 afternoon

from a new Mac target to desktop widgets and a menu bar item

// Before

Decaying, one OS release at a time.

Launched in 2015, then slowly stuck. New iOS and watchOS releases kept breaking its widgets and complications, and every feature on the list looked like weeks of work nobody had. In 2025 the whole codebase changed by eighteen lines.

// Lines changed per year · 2026 through Oct 24 Before the manual After the manual

// What we did · an agent-ready codebase

The model didn’t change. The codebase did.

Same agent, same model anyone can buy. The difference is what the repository teaches it before it starts, and what it has to prove before it’s done. The prayer-time engine underneath is open source.

01

A manual in the repo

A 13-section manual: the targets, the build loop, the release order, the rules of the prayer day, and the pitfalls each one learned the hard way.

02

The toolchain wired in

Xcode’s headless server: the agent builds the iPhone, watch and Mac apps, runs the test suites, launches the simulator, and screenshots what it built, with no Xcode window open.

03

Architecture it can copy

Rebuilt on plain SwiftUI with one folder shape per screen, logic in the open-source engine with a test beside it, and Swift 6 strict concurrency on every target.

04

Gates it must pass

A five-rung ladder: every change builds, shared code builds every platform, logic lands with a failing test first, UI gets launched and looked at, and widgets go to a real device.

AGENTS.md

  1. ## Targets
  2. ## Schemes
  3. ## Settings & versioning
  4. ## Dependencies
  5. ## Building & testing
  6. ## Verification ladder
  7. ## Skills
  8. ## Architecture
  9. ## Concurrency
  10. ## Toolchain
  11. ## Time is an input
  12. ## The prayer day
  13. ## Pitfalls

Three of its rules

Time is an input

Never call Date() inside prayer or date logic; time flows in as a parameter.

The prayer day

A prayer day runs from its Fajr to the next Fajr. Midnight is not a prayer boundary.

Verification ladder

“Compiles” is not “verified”.

// The repo manual · excerpt · loaded before every change

// After

Then it shipped. And kept shipping.

  1. 2025

    Eighteen lines changed all year. A backlog of features waits.

  2. Sep 15

    The repo manual lands. The agent builds and runs the app on its own.

  3. Oct 18

    Version 28 is tagged: rebuilt, on Swift 6, with a test suite it never had.

  4. Oct 22

    Live on the App Store.

  5. Oct 23

    Per-prayer iqama times and complication text that fits its slot, merged.

  6. Oct 24

    The watch app redesigned around a prayer-day dial. That afternoon, a native Mac app: new target, desktop widgets, a menu bar item. In progress.

“Ideas I’d shelved for years shipped in weeks. A native Mac app took an afternoon. And the code is better than what I’d have written myself as a senior engineer.”
Pray Watch Engineer

// For your team

The same playbook, on your oldest repo.

Every codebase has a Pray Watch: the system everyone is afraid to touch and the roadmap it holds hostage. Making it agent-ready is part of the first layer of every engagement, done by a forward-deployed engineer inside your team, on your code.

Become AI-native.

Forward-deployed engineering, custom-tuned per industry. Pre-revenue customers and design partnerships welcomed in select industries.

How AgentLayer engages →