Changelog (iOS) — 0.3.0
New Pause & Resume UX
Added a new pause / resume button that carries through all live activity views (controls view, stats view, map view).
Added an animation and border to indicate when an activity is paused or resumed, making it a lot easier to quickly glance at the watch to understand i the activity is active or paused. Redesigned all live activity view to work with new pause / resume UX.
Live activity views are using new fonts for digits. Found a font that feels technical, more professional but is still easy to read when quickly glancing at the watch. The font I found comes in different weights which allows us to use it in other parts of the app too. This is starting to feel really good to me!
Launch View has a cancel button now, re-using the same position and styling as the pause / resume button for visual consistency.
We are using Crown + Side button to pause and resume activities in additional to visual button in UI
New Live Activity Stats Views
Fully redesigned live activity views on the watch:
New UX to either swipe or use digital crown to navigate through new stats pages (this was difficult to ensure it works in tandem with everything we have so far and is quite a neat UX now). Stats pages use animation to fade and blur in and out of views.
Added new custom horizontal and vertical pagination; vertical pagination only appears in stats pages.
Watch: New activity types
Our watch activity manager is refactored and can now handle any kind of activity (sport, sub sport). We’re writing the new type into our activity objects as well as the FIT file upon activity completion.
3 new types have been added for now. All types are all using the corresponding data from HealthKit:
Note: the UX might not be fully baked yet. We will test and review the data in the coming days to ensure each type is getting the correct data. I will also still update some of the UI and UX (e.g. we need a new activity start button UI, we should update the stats that are displayed during an activity per type).
Improvements
Watch: Added a route selection button in the controls view during an activity allowing to deselect or select a new route even during a live activity
Watch/phone: We are now fetching the user’s current weight and most recent sleep data from HealthKit and saving it on each activity. The stats are now displayed in the activity detail views both on phone and watch.
Watch: We are using OpenWeatherMap to fetch weather data at the beginning and at the end of an activity and saving it alongside our activity. Data is now displayed in both activity detail views.
Watch: We are now showing an alert if the auth session is invalid (but only if there is no live activity). This is just to alert the user that they need to re-open the phone to re-enable syncing. This is still just a temporary solution. With the addition of Apple’s background capability, we should see this occur less frequently. The alert is just informative and can be dismissed - the watch app will still continue as always.
Watch: Pushed a lot of pixels across all views, mostly all live activity views.
Phone: We are now preventing landscape rotation. The app will remain in portrait mode at all times.
Watch: The “Start” button in our launch view is now bouncing to show a UI response to tap.
Watch: We are now using triple tap to pause / resume on stats views. Double tap will be reserved for starting new laps once we’re adding this functionality.
Watch: Fixed a bug that was resetting routes (I caught an edge case that could reset the routes if we API sync did not fail but returned an empty array). We now should truly rely on CoreData for routes on the watch.
Watch: Added the beginnings of WatchEventBus to improve event triggers and data flow in the watch app. This is being used for the newly added overlays
Watch: New overlay manager that can trigger global overlays from anywhere and is already in use in 2 places (new route selection during live activity, alert if session is invalid).
Watch: Fixed a bug that caused the app to crash on app launch if the previous activity was interrupted by an app launch.