← All Updates

iOS - v1.5: Rowing

Trckify 1.5 is the largest single release since the Watch came online in 1.4. The headline is rowing — Trckify is now a serious rowing tool, not just a GPS recorder that happens to support boats. But rowing demanded so much groundwork that almost every other part of the app got pulled along: a new per-sport settings home, BLE heart rate sensors, a non-destructive trim that survives across devices, and an export pipeline that no longer ignores your edits.

Rowing — what it actually does

When you select Rowing as your sport, Trckify switches from “GPS recorder” mode to “rowing analysis” mode. The phone (or Watch) becomes a stroke detector by reading raw motion-sensor data at 50 Hz throughout your session. The detector finds every individual catch — the moment the blade enters the water and the boat starts accelerating again — and reports them not as a smoothed average but as a database of individual strokes, each with its own period, drive-peak amplitude, and a confidence score.

From those strokes, the app computes:

SPM (strokes per minute) as a per-stroke value rather than a one-second-average. Means a sprint of three powerful strokes shows up exactly where it happened, not smeared over a 4-second window like with frequency-domain detection.

Stroke classification. Not every detected event is a clean rowing stroke. Turning corrections (a hard pull on one oar to swing the bow), turning strokes themselves, weak strokes (paddling out of a pause), and short anomalies (often double-detected catches) all get classified and excluded from the canonical SPM by default. Your “average 26 SPM” reflects the work you did rowing, not the moments you spent turning around.

RMS acceleration (“intensity”). A second timeline, sampled once per second, that measures how much actual force was in each stroke phase. Combined with SPM, it tells the difference between a high-rate paddle and a high-rate hard pull — both at the same SPM but very different in effort.

The classification thresholds are tuned for outdoor rowing in single sculls and small boats. Coxed eights and large team boats may classify some legitimate strokes as outliers — feedback welcome.

Sections — your training plan as data

A long row is rarely just one effort. There’s a warm-up, a few intervals, some pieces between bridges, a cool-down. Sections let you mark and name those segments — either by accepting Trckify’s automatic detection of high-intensity starts, or by drawing your own ranges on the elevation/SPM chart with a long-press drag.

Each section gets its own panel of stats: average SPM, stroke count, distance, pace per 500 m, average heart rate, and a peak/average split for power. You can rename sections (“Warmup”, “5×500m”, “Cool down”) and they round-trip through iCloud to your other devices, so the segments you draw on the iPhone show up on Mac for deeper analysis.

This is the piece that turns Trckify from a track viewer into a training log: instead of one set of numbers for the whole 90-minute session, you see separate profiles per piece. The next interval can target what the previous one actually did.

BLE heart rate straps

If you have a Bluetooth heart rate strap (Polar H10, Wahoo TICKR, Garmin HRM-Pro, anything that broadcasts the standard Bluetooth Heart Rate profile), Trckify can pair with it directly. The reading shows up live in the recording view alongside speed and SPM, and it’s written into every track point so the post-session HR curve matches what you actually saw on screen.

Why a separate strap when the Apple Watch already has HR? Three reasons: latency (chest straps update faster), accuracy during high effort or wet conditions (rowing, especially), and the option to record on iPhone alone without strapping the Watch to your wrist. If you have the Watch on, Trckify still prefers it — the strap is for Watch-less sessions or for users who specifically trust their strap more.

Pairing lives in Sports → [Your Sport] → Heart Rate Sensor. Re-pairing happens automatically the next time you start a recording.

Per-Sport Settings — a new home in the app

Up to 1.4, settings were one long flat list — half “this is how I want the app to behave” and half “this is what I want for my next ski day”. As the sport-specific options grew (mount hint for rowing, BLE pairings, auto-pause sensitivity, default screen orientation, hero-stat picks for the recording view), the list became unmanageable.

1.5 introduces Sports as a top-level area next to Settings. Each sport has its own profile: which sport-specific features you want active, which sensors are paired, what the recording-screen hero stat shows. Activating or deactivating a sport hides it from the recording sport picker without losing your past tracks for that sport — a way to keep the picker focused on what you actually do.

Default-active sports stay active for new installs (cycling, hiking, skiing, snowboarding, trail running). Cross-country skiing and rowing default to off and the user opts in.

Virtual Trim — non-destructive, sync’d, respected by exports

The trim feature got a complete rebuild. Up to 1.4, trimming a track was either “save as a copy” or “override the original” — both file rewrites. With 1.5, trim is a pair of timestamp markers persisted on the History entry, not a file mutation. Three things change in practice:

Reversible: drag the slider back to 0..1 and you have your full track again. Whatever you trimmed away wasn’t deleted, just hidden.

iCloud-synchronized: trim on the iPhone, the Mac sees the same trimmed view immediately. Re-trim on the Mac, the iPhone updates. Same for Apple Watch sync from the Watch app.

Respected by exports: the FIT and GPX files you share are encoded fresh on every share, with the current trim applied. So if you cut the first three minutes off a Watch ride because you forgot to start the recording until you were already moving, Garmin and Strava get the cleaned-up version with correct distance, duration, and heart-rate average — not the unedited raw timeline.

Combined: your track stays editable forever, your edits travel with you, and the file you actually share matches exactly what you see in the app.

What was quietly broken and is now quietly fixed

Three real bugs from the days running up to release, found in field testing rather than from user reports:

FIT files exported as the wrong sport. A subtle off-by-one in the sport-code table meant that rowing exports landed in Garmin Connect and Strava as “Motorcycling”, cross-country ski as “Flying”, and snowboard as “Rowing”. The values were wrong since the very first version that supported those sports. Now correct, with pin-tests against Garmin’s official FIT SDK profile so the same mistake can’t happen on a future addition.

Trim was being ignored by exports. Combined with the bug above: even if you trimmed a track on screen, the exported FIT/GPX file contained the full untrimmed timeline. The cause was an export-cache pattern that wrote the file once at conversion time and copied it on every later share — never re-encoded. Re-architected: every share triggers a fresh encode that respects current trim, sport, and section state. About 100ms slower per share, immeasurably more correct.

Trim could appear out of sync between the Map tab and the Profile tab. The slider and the displayed track read from two different state sources that updated on different SwiftUI cycles. Both now read from a single source of truth in the conversion manager — what you see on the slider is what every other view shows.

What’s next

Watch-native Live Activity. Concept2 indoor rowing detection (the boat moves but GPS doesn’t, so motion-only profiles need their own detector). A re-analyze button to apply algorithm improvements to old recordings without manual re-import. Strava upload directly from the History list. Season statistics rolled up across all your tracks.

For now: row, ski, ride. Send feedback at trckify.com/support.