Inspiration
Golf practice often focuses on positions and mechanics, but rhythm deserves its own training tool. The idea behind Golf Metronome was to make tempo practice simple: choose a rhythm, follow clear cues, and repeat.
What it does
Golf Metronome helps golfers practice tempo for full swings, short-game shots, and putting using audio, visual, and haptic cues.
Users can choose tempo presets, create custom timings, save favorite setups, and track practice sessions. Training modes go beyond a steady beat: Fade gradually removes cues, Random varies the tempo, and Pressure introduces variable timing and rest. Daily 5 provides a structured five-minute practice routine.
The app is published on the Apple App Store.
How I built it
I built the app with React Native, Expo, and TypeScript, using Expo Router for navigation.
The playback engine schedules audio cues ahead of time with react-native-audio-api. React Native Reanimated drives the animated ring and swing timeline, while AsyncStorage stores settings, profiles, and session history locally.
RevenueCat manages the one-time Pro unlock and purchase restoration.
Challenges
Timing was the central technical challenge. A tempo trainer needs reliable audio even when the JavaScript thread is busy. The playback engine schedules cues on the audio clock instead of relying on JavaScript timers to trigger each sound.
Another challenge was keeping sound, animation, and session state coordinated when users stop or restart practice. Run-scoped callbacks prevent scheduled updates from an earlier session from affecting a new one.
Accomplishments
The project became a complete, published iOS app with a dedicated playback engine, multiple practice modes, saved profiles, session history, and a Pro purchase flow.
Fade mode is a particularly useful part of the design: it gradually removes cues so users can practice maintaining the rhythm themselves.
What I learned
Building a tempo trainer highlighted the importance of separating precise audio scheduling from interface updates. It also showed how much product work sits around the core feature: onboarding, persistent settings, purchase restoration, and handling interruptions all contribute to a usable app.
What's next
The next step is to gather feedback from golfers using the app during real practice, then use it to refine tempo presets, training routines, and the overall experience.
Built With
- asyncstorage
- expo-router
- expo.io
- react-native
- react-native-audio-api
- react-native-reanimated
- typescript
Log in or sign up for Devpost to join the conversation.