Zone2Ai
Your Apple Watch and Garmin Zone 2 is wrong for 90% of people. It uses a formula from 1970 that does not account for your actual fitness. Zone2AI learns your real zones from your workouts — more accurate every session.
No More Missing History After a Garmin Hiccup
Your activity history will now backfill reliably, even when Garmin has a bad day. If a backfill attempt fails completely, we won't lock you out for 24 hours like before — we'll let it try again.
Why it matters: no more mysteriously missing workouts in your history just because Garmin's servers blipped during sync. Your training log stays complete.
- The 24-hour cooldown only kicks in when at least one day of data was actually accepted
- Backfills now bail out gracefully when Garmin returns a partner-wide rate limit, instead of grinding through doomed retries
- Covers both activities and historical workouts backfills
GPS Tracking on Apple Watch Is Now More Reliable
We fixed an issue where the Apple Watch GPS tracking could generate excessive error noise during outdoor workouts — especially when the location permission prompt hadn't been answered yet. 🛰️
Previously, if your Watch hadn't fully granted GPS permissions, the app would repeatedly try (and fail) to record route data for every single location update — potentially thousands of times in a single workout. This didn't affect your workout data, but it was causing unnecessary background activity on your Watch.
- The app now checks GPS authorization status before attempting to record route data, avoiding unnecessary retries
- If permissions aren't granted yet, location updates are paused until you respond to the system prompt
- GPS route errors are handled gracefully instead of being retried every second
This means smoother outdoor workout tracking and less unnecessary battery drain on your Apple Watch. If you've noticed any quirks with GPS routes on recent Watch workouts, this update should take care of it. ⚡
Fixed Garmin connection issues on Safari
We squashed a sneaky bug that could cause Garmin reconnections to silently fail on Safari 🐛
If you've ever tried to reconnect your Garmin account and it looked like it worked (showing "OAuth Success") but nothing actually synced — this was likely the culprit. Safari was serving a cached version of the Garmin authorization page from a previous session, so the connection request never actually reached our servers.
Every Garmin OAuth request now includes a fresh timestamp to ensure Safari always hits our server with a brand new connection attempt. No more ghost connections! 👻
Fixed Garmin connection showing as connected when it wasn't
Some of you connected your Garmin watch and saw "connected" — but your workouts never actually synced. Super frustrating, and we're sorry about that. 😓 This fix tackles the root cause and auto-heals affected accounts.
What was happening: In certain cases (like reinstalling the app or when Garmin cached a previous authorization), the connection would appear successful on your end, but our server never actually received the tokens it needed to pull your workouts.
What we fixed:
- The app now verifies with our server that the Garmin connection actually went through before showing you a success message. No more false "connected" states. ✅
- If you were already stuck in this broken state, the app will automatically detect and fix it the next time you open it — you'll see Garmin as disconnected and can reconnect properly.
If you've had a Garmin watch connected but haven't been seeing your workouts sync, just open the app and re-link your Garmin. It should work smoothly now! 🎉
Fixed Week tab getting stuck after reinstalling the app
If you reinstalled Zone2Ai, you might have noticed the Week tab was permanently stuck showing "Couldn't load weekly data." That's now fixed! 🎉
The issue was that after a fresh install, your HealthKit data needs a bit more time to load since there's no local cache yet. The previous timeout was too aggressive and would give up before the data had a chance to come through.
- Extended the initial loading timeout so HealthKit analysis has enough time to complete on a fresh install
- Added an automatic retry if the first attempt doesn't make it in time
- Graceful fallback so even in worst-case scenarios, the tab won't get permanently stuck
Additional fixes and improvements
Alongside the critical Garmin sync fix, we've shipped a handful of quality-of-life improvements and bug fixes to make things smoother across the board. ✨
- 🪞 Mirror celebration screen — fixed an issue where the celebration animation failed to show about 50% of the time
- ⌚ Smartwatch type picker — you can now change your watch type in Settings if you accidentally selected the wrong one
- 🔄 Sync Now feedback — the Sync Now button now properly shows loading/completed states so you know it's working
Critical Fix: Garmin zones not syncing for some users
🚨 Critical fix! If you connected your Garmin watch via OAuth (without Bluetooth), your watch may have been stuck showing wrong or default heart rate zones, even though your iPhone displayed the correct ones. This is now fixed.
A change we made in v2.2.6 to reduce unnecessary sync noise accidentally blocked zone config from reaching your Garmin watch if you never connected via Bluetooth. Your zones were being saved to the server but never pushed to the watch itself. We've confirmed this affected at least 3 users — sorry about that! 🙏
If you were impacted, your watch should now automatically pick up the correct zones on next sync.
Fixed Garmin workouts incorrectly showing zero Zone 2 time
If you use a Garmin watch, you might have noticed some valid Zone 2 sessions getting zeroed out: that's now fixed! 🎉
The issue happened when Garmin Connect synced workouts to HealthKit without heart rate samples. The app was falling back to your full-workout average HR (including warmup and cooldown), which could incorrectly disqualify perfectly good Zone 2 sessions. Now, the cached data from your Garmin watch is always treated as the source of truth.
- Garmin's authoritative Zone 2 duration is now always used when available in cache
- Fixed fallback logic that was incorrectly using average HR (with warmup/cooldown) instead of cached values
- Cached Garmin workouts are no longer incorrectly showing up as non-qualifying
- Improved sync tolerance for Garmin Connect timestamp adjustments so workouts match up more reliably
Fixed Garmin Heart Rate Data Showing as Zero During Workouts for Some Users
🚨 We squashed a bug that was causing Garmin workouts to record zero heart rate data for some users. If you're using a newer Garmin watch (like the FR965, Fenix 7/8, or Venu 3), your HR data was being silently lost!
We've updated the CIQ app (v1.2.1) to pull heart rate from the correct source, so your workouts will now capture accurate, real-time HR data during both warmups and main workout sessions. 💪
- Fixed heart rate readings in both Workout and Warmup views on modern Garmin watches
- Improved Garmin webhook reliability: the system now self-heals if your user connection drops
- Feedback form now includes your User ID and smartwatch model for faster support
Mirror mode workout fix — no more blank screens
Fixed an issue where the mirror mode screen would go blank during workouts because the device fell asleep. 😴 Screen sleep prevention now stays active for the entire mirror session, not just while the view is visible.
We also added a wall clock display to mirror mode so you can keep an eye on the time while you train. ⏰
Better onboarding for users without a smartwatch
If you don't have a smartwatch, the onboarding experience now highlights what you get — not what you're missing! 🎉
Instead of focusing on gaps, you'll now see the awesome features available to you right away:
- Personalized training zones tailored to you
- AI coaching to guide your workouts
- Progress tracking to keep you motivated
Fixed weekly view freezing and notification issues
We squashed a few annoying bugs that were messing with the weekly experience. Things should feel a lot smoother now! 🛠️
- ⏱️ No more infinite loading on the Week view. If HealthKit takes too long, you'll now see a friendly error with a retry button instead of a skeleton loader that spins forever.
- 📊 Notifications now match your actual calendar week. Previously, notifications used a rolling 7-day window instead of Monday–Sunday, which meant you'd see stale progress like "61/90 minutes" even after the week reset. Fixed!
- 📋 Weekly card now loads data properly when expanded. The Current Week card would sometimes show up expanded but empty — it now fetches your data automatically. First-time users will also see it expanded by default.
Notification minute counts are now refreshed on each app launch with the latest data, so you'll always see accurate progress. 🎯
RPE feedback updates instantly
The "How we calculated this" RPE line now updates immediately when you tap your feedback. No more waiting or wondering if your input registered — it responds right away. 🏃♂️
Weight now displays in kg for metric users 🏋️
If you use the metric system, you may have noticed your weight was always showing in lbs — not ideal! This has been fixed across the app so your weight now displays in the correct unit based on your preferences.
- Weight values on your Path and Journey Moments screens now respect your metric/imperial setting
- AI-generated banners and prompts also use the correct unit, so recommendations feel more natural
Shoutout to Johan from Stockholm for reporting this one! 🇸🇪 All internal calculations remain accurate — this was purely a display issue.
Fixed sprint celebration not showing after Apple Watch sprints
Ever finish a sprint on your Apple Watch and... nothing happens? No celebration, no fanfare? 😤 That's been fixed!
There was a timing issue where your iPhone would check for the completed workout before HealthKit had finished syncing it from the Watch. Since HealthKit can take anywhere from 10 to 60 seconds to deliver the data, the app sometimes missed the workout entirely — meaning your hard-earned celebration screen never appeared.
Now, after your Watch reports a completed sprint, the app smartly re-checks for the workout at timed intervals, giving HealthKit enough breathing room to sync. Your celebration will fire reliably every time. 🎉
Fixed incorrect labels on Indoor/Outdoor picker
The Indoor/Outdoor picker was showing workout-specific subtitles (like 'Treadmill') even when a non-running activity such as cycling was selected. 🚴
Now the picker cleanly shows just Indoor and Outdoor — no more confusing or mismatched labels regardless of which activity you've chosen. Nice and clean! ✨