Changelog
The latest bug fixes, improvements, and features shipped to IronCoaching. We continuously improve the platform based on coach feedback and real-world usage. Every update is tested, reviewed, and deployed to production automatically.
IronCoaching ships updates regularly — from small quality-of-life improvements to major feature releases. Each entry below includes a description and category so you can see what changed and why. Feature requests? Reach out through the support page.
3 June 2026
Coach Sessions tab: week-by-week view with Grouped/Flat toggle and a Last 7 days filter
The client Workout Sessions tab now groups completed sessions into calendar-week blocks, newest first, with a Grouped/Flat toggle and a "Last 7 days" filter — so you can answer "what did they do last week?" at a glance.
Per-week program notes now save
Notes added to individual weeks in the program builder now persist correctly through save and reload.
Upload longer check-in videos — limit raised to 300 MB
The video upload size limit in messaging has been raised from 200 MB to 300 MB so longer check-in videos go through.
The portal auto-recovers after an app update
After a new version ships, the client portal now reloads itself once instead of showing a "Something went wrong" screen when a stale file fails to load.
2 June 2026
Coach session view shows the real program name
Completed sessions logged against an assigned program now display under that program's name in the coach view instead of "Unprogrammed".
31 May 2026
Recent workouts group under the right program in history
On the athlete's workout history, recently logged sessions now group under their program instead of falling into "Other".
29 May 2026
Clear hint when signup is blocked by the captcha
If the captcha fails to load (for example, blocked by a browser extension), the signup form now explains why Complete Setup is disabled instead of doing nothing.
28 May 2026
Coach self-coaching
Coaches can now add themselves as a client to follow their own programs and log their own training.
Removed program assignments stay visible in the client's history
Removing a program assignment no longer hides the athlete's logged history for it — past assignments remain visible.
25 May 2026
Add up to 100 custom exercises
The custom exercise limit has been raised so coaches with large libraries can add up to 100 custom exercises.
21 May 2026
Video uploads recover from stuck or interrupted states
Set and chat video uploads now self-heal from stalled or interrupted states and correctly replace a previous attempt, so a flaky connection no longer leaves a stuck upload.
18 May 2026
Cleaner coach session list
The coach's session list now shows a clear "Skipped" badge, collapses duplicate same-day entries, and no longer repeats the program name on every row.
CI now blocks new pages that ship over the 170KB performance budget
Internal infrastructure. Every Next.js route's first-load JS is measured (gzipped) on every PR. Two gates: existing routes can't grow by more than 10KB without explicit approval, and new routes can't ship over 170KB (PERF-007). All 78 current routes are grandfathered with their snapshot size — full baseline + cleanup plan documented in `docs/perf-bundle-baseline-2026-05.md`. The bundle-budget script is now also covered by 11 unit tests.
Chat video uploads now survive network blips
Video uploads in coach + athlete chat now use chunked + resumable uploads via @mux/upchunk. A dropped Wi-Fi signal mid-upload retries the affected 5MB chunk instead of dropping the whole video. Up to 5 attempts per chunk. Online and offline events are recorded in Sentry breadcrumbs so we can measure where uploads fail. The recorder + per-set video paths already used upchunk; this brings chat to parity.
Clear error if a program fails to save
If saving a program fails, the builder now shows an error message instead of failing silently.
Foundation for tracking upload and error failures (observability)
Internal change. Added a shared error-mapping helper (`src/lib/error-surface.ts`) keyed by domain (auth, mux, stripe, supabase, nutrition) plus Sentry breadcrumb helpers for the Mux upload pipeline. Every set-video upload now emits stage breadcrumbs (`mux_direct_upload_created`, `db_row_inserted`, plus webhook-side `mux_asset_ready`/`mux_asset_errored`) so we can measure where uploads fail. Same shared helper now powers the auth error mapping shipped in #250 and unblocks the IronLedger mobile observability work.
Signup errors now show actionable messages instead of "Something went wrong"
When Supabase Auth returns a specific failure code (weak password, rate-limit, captcha, signup disabled, etc.), the signup and login forms now show copy that tells you what to actually do next instead of the generic fallback. The error code is also attached to Sentry events as a structured tag so we can see which failures are happening without reproducing them. Diagnosed from a real customer report: a coach's client had been hitting HTTP 422 silently for days.
13 May 2026
Athlete nutrition logger v2 — sticky totals ring + Log/Plan/Wellness tabs
Athletes get a neon daily-totals ring (calories + protein/carbs/fat segments) pinned above a tabbed Log / Plan / Wellness body at /client/nutrition. Plan tab Eaten ticks now write directly into the food log (and the ring updates instantly). Wellness tab captures sleep, mood, energy, water, training-day flag, and notes for the coach's weekly review. Date scrubber lets athletes flip back through past days. Autosave indicator surfaces failures instead of swallowing them. Shipped behind PostHog flag nutrition-logger-v2 at 100% on 2026-05-13 (squash-merge 961a6a0, follow-ups a9ac998 + 639f5bf).
4 May 2026
Athletes can quick-add macros + see daily totals on the dashboard
New Quick Add Macros section on the daily nutrition check-in (carbs / fat / protein, optional name, kcal auto-derived). New Today's Nutrition card on the athlete home shows targets vs logged for kcal and macros, with a training-day badge when training-day targets apply.
Athletes fill out a self-assessment before their weekly review
The athlete app shows a short self-assessment form on the day a review is due — covering training, nutrition, recovery, and sleep. Coaches see those answers in the Reviews tab before writing their summary, and athletes get an in-app + email notification when the coach completes the review.
Athlete profile: DOB, timezone, pronouns
New optional fields on the athlete profile — date of birth (feeds future BMR calc), timezone (defaults from browser, used for scheduled content), and pronouns (display only). Edit them under Profile.
Program builder: grid view
New List/Grid toggle above weeks. Grid shows the entire program at a glance — week × day matrix with the first 3 exercises per cell. Editing stays in List view.
Athlete: mobile notification bell + grouped workout history
Mobile athletes now have a top header with the notification bell. Workout history defaults to a grouped view — bucketed by week then by program — with a Flat toggle for the original timeline.
Analytics: session duration + RPE tooltip + per-block volume
Three coach-facing analytics enhancements. New Session Duration chart shows weekly average minutes per workout. e1RM chart tooltip now displays set count and average actual RPE per data point. Volume chart has a per-week vs per-block toggle.
Athletes can upload a profile picture
Athletes can now set a profile picture from /client/profile — drag/click the avatar tile and pick a JPG, PNG, or WebP up to 5MB. The picture appears in the athlete sidebar in place of the cyan letter circle, and (next ship) anywhere a coach sees the athlete's name.
Behind the scenes, athlete avatars now live in a dedicated athlete-avatars Storage bucket with athlete-write-own / public-read RLS, separated from the coach profile bucket.
Pick RPE or RIR per program — and only see that one column
Coaches who prescribe in one consistent unit no longer have to look at the combined "RIR/RPE" field on every exercise row. New Intensity unit toggle in the program-builder metadata card lets you pick RPE or RIR for the program. The unchosen column disappears from every exercise row + column header.
Switching modes is non-destructive — any existing values on exercises stay on the data, just out of view. So you can flip mid-program without losing prior prescriptions.
Existing programs without an explicit choice keep showing both options (default RPE) so nothing changes for current work.
See where a volume change came from
When a coach sees "+41% volume vs the last block", the natural follow-up is "where did that come from?". The macrocycle page now answers it.
Each lift gets a Volume change card showing the headline Δ% vs the previous block. Click it to expand and see:
- •How much of the change came from more sets
- •How much from more reps per set
- •How much from heavier weight per rep
- •Side-by-side block stats (sets × avg reps × avg weight per rep)
The three components sum exactly to the headline (using logarithmic attribution so the cross-term doesn't leak).
See at a glance whether an athlete completed, skipped, or hasn't logged each set
Coach-side workout views used to render every non-completed set the same — coaches couldn't tell whether the athlete tried it then bailed, or never touched the row at all. Now sets show three distinct states:
- •Completed — green background, check icon
- •Skipped — pink background, ✕ icon — athlete entered values (weight/reps/RPE/RIR/notes) but didn't tick the set
- •Not logged yet — muted background, minus icon, em-dash for values — athlete hasn't touched the row
Hover any row for a tooltip explaining the state.
Drag exercises to reorder them — without unintended supersets
After fixing the data-loss bug, coaches still hit a UX gap: dragging an exercise from one single-exercise block to another would merge them into a superset. Now drag-to-reorder works the way coaches think about it.
- •Drag a single-exercise block's exercise grip onto another block — the source block moves to the target's position. No merging.
- •Drag the new block grip on a multi-exercise (superset) block — the whole superset moves to a new position with all its exercises.
- •"+ Superset with…" button under each single-exercise block — the explicit way to convert a single exercise into a superset by adding another exercise to the same block.
- •Empty weeks now show a clear dashed drop zone reading "Drop a day here" instead of an invisible 2px target.
Existing "+ Add exercise to A" inside multi-exercise blocks still merges into the superset (unchanged).
Program builder column headers now match what you're editing
Builder column headers used to read `Col 1 / Col 2 / Col 3 / Col 4` regardless of which metric preset the exercise was using. Now they reflect the actual fields:
- •Strength: Sets / Reps / Weight / RIR/RPE
- •AMRAP: Sets / Time Cap / — / RPE
- •Cardio: Duration / Distance / — / RPE
- •EMOM: Rounds / Reps / Weight / Interval
Plus headers now line up with the input cells underneath them.
Compliance dashboard reflects last 7 days, not just this calendar week
Coach compliance now shows real client activity instead of resetting every Sunday. The compliance widget previously used a calendar-week-since-Sunday window — so a coach checking Monday morning saw `0/N (0%)` even when their athletes had trained 3-4 times the previous week.
The window is now a rolling 7 days, and skipped sessions are excluded from the count (a session marked skipped is the athlete saying "I didn't do this", so it shouldn't credit toward weekly compliance).
Same fix applied to the dashboard "PRs this week" stat for consistency.
Drag-to-reorder exercises no longer wipes the week
Coaches can now safely reorder exercises and days in the program builder without losing data. Previously, dragging an exercise (or even just a day) would silently delete the entire enclosing week. The day-card was a draggable wrapper, so exercise drags bubbled into the day's drag-state machine; same-week day reorder also had a separate bug that filtered the day out without re-inserting it.
The day grip handle is now a tight wrapper around the icon (matches the week grip), and `moveDayToWeek` correctly handles same-week reorders.
Cross-block / cross-day / cross-week exercise drag is intentionally not part of this fix — the right UX is block-aware and tracked separately.
3 May 2026
Rep numbers stick in the program builder
Coaches can now reliably set fixed rep numbers in the program builder. Previously, typing over the prefilled default (e.g. replacing `8` with `5`) could leave a transient empty value behind, and the auto-save would persist that empty — so athletes would open the program in IronLedger and see no rep target.
The Reps, Duration, and Distance fields now:
- •Select the prefilled value on focus so typing replaces it cleanly instead of appending (no more `85` when you meant `5`)
- •Buffer your typing locally so a parent re-render mid-edit can't clobber what you just typed
Same defensive pattern that already protects the Sets and RPE/RIR fields.
Smarter coach emails for inactive clients
Coach emails for inactive clients are no longer spammy. Previously, once a client crossed 7 days without a workout, the system kept emailing the coach about it every single day. Now the cadence escalates — and never repeats:
- •7 days — gentle nudge, 'a quick check-in can keep them on track'
- •30 days — escalation, 'consider a 1:1, plan rework, or pause'
- •90 days — candid, 'time to decide: re-onboard, archive, or remove'
Each email fires exactly once per client per milestone. Coaches who already had inactive clients at this change's rollout do not get a retroactive blast — the system silenced 65 already-crossed thresholds at deploy time.
2 May 2026
Strength Intelligence Suite — track Actual, Estimated and Projected 1RM
New 1RM tab on every client's page. Each lift you track shows three side-by-side cards:
- •Actual 1RM — log a tested max from the gym or comp platform.
- •Estimated 1RM — auto-calculated rolling-max e1RM from completed sessions, so deload weeks no longer drag the number down. You can manually override the estimate if the calc is off.
- •Projected 1RM — pulls from AI predictions for Expert-tier athletes, falls back to a 4-week linear trend for everyone else. Source label tells you which.
Every card carries a "↑ Xkg vs previous block" trend so block-over-block progress is visible at a glance. Add as many lifts as you want to the page; selection persists per athlete.
A new Macrocycle Overview page (linked from the client header) ties the whole training arc together: hero best-top-set per main lift with a delta vs the start of the macrocycle, weekly tonnage bars labelled `Block N - Week M`, and the same 1RM strip per lift. One click downloads it as a dark-themed PNG you can post.
Four new built-in muscle groups: hip extension, hip flexion, adductors, abductors
The exercise library and analytics now distinguish hip extension, hip flexion, adductors and abductors as separate muscle groups. Hip thrusts, glute kickbacks, abductor machines and adductor machines tag correctly out of the box and contribute to the right volume bucket.
Numeric inputs no longer trap backspace or snap to zero
Hit on the RPE / RIR cells in the program builder, the per-set RPE field on the workout logger, and the macro target inputs in nutrition. Partial decimals (e.g. typing `7.`) and clearing a field with backspace now behave the way you'd expect — no more silent revert to `0`.
1 May 2026
Notification bell on the athlete sidebar
Athletes get a live notification bell on their sidebar that mirrors what coaches already had — new program assignments, weekly review responses, video feedback, and coach messages all surface here. Tap to deep-link to the source.
Athlete profile editor — display name and bio in settings
Athletes can now edit their display name and bio from the in-app Settings page. The profile is what coaches see in the marketplace coach-request flow and on every chat thread, so keeping it current matters.
Custom exercises now capture muscle groups
When a coach creates a custom exercise, the form now asks which muscle groups it trains. The selection feeds the analytics frequency-volume chart and the muscle-group toggle, so custom lifts are no longer invisible to your aggregate-volume view.
Stability fixes for in-app video annotations and auto-captions
Annotation realtime channels are now scoped per-message UUID, so two simultaneously-open annotated videos no longer cross-broadcast events. Auto-caption track errors are scoped to caption tracks only, instead of triggering for every video element on the page.
Wearable connection errors now actionable
Failed Oura / Withings / WHOOP connection attempts surface a friendly error and a one-click reconnect CTA on the connection card instead of a silent failure. Cron-side wearable sync failures also flush to Sentry now, so we catch them before athletes notice.
30 April 2026
Health Alerts — daily digest of at-risk athletes
New Health Alerts surface in the dashboard plus a daily digest email for Pro and Expert coaches. The digest flags athletes who hit thresholds you care about — readiness drops, sleep disruption, low HRV — so you can intervene before adherence slides.
The alert engine reads from the same wearable + workout data that powers the analytics dashboard. Threshold rules ship with sensible defaults and are tunable per coach.
Tier resolution rewritten — fewer plan-gate flickers
Plan tier (Basic / Pro / Expert) now resolves from a dedicated `user_subscriptions` row via a single `getCoachTier` helper instead of being read off the auth store on every component. Plan gates are tighter, transient hiccups during webhook processing no longer flicker the UI between tiers, and the dashboard renders the correct gates faster on cold load (ADR 0006 Phase A–B).
27 April 2026
Dual-role onboarding — coach or athlete in one signup
`/signup` now has an explicit intent toggle (Coach or Athlete) and `/onboarding` adds a role chooser when the system can't infer which path you're on. Athletes who arrive via a coach-profile or marketplace link no longer get trapped in the coach onboarding flow on return visits — they land in the right place every time.
Non-destructive video trim editor for review and set videos
Trim form-check and weekly-review videos to the moment that matters without re-uploading. The trim is non-destructive — the original asset is preserved, only the playback range changes — so you can re-trim or revert any time.
Works on the per-set form-check videos athletes attach inside sessions and on weekly review uploads.
Snappier conversation lists and exercise picker on long lists
The coach and athlete conversation lists, plus the exercise picker modal in the program builder, now virtualise their rows. Coaches with 100+ active conversations or athletes with a 200+-exercise custom library should feel an immediate scroll-and-search improvement (PERF-004).
Send Feedback moved to the sidebar
The in-app feedback widget is now a permanent Send feedback entry on the sidebar — easier to find, never overlaps the chart you're trying to look at. Submissions still fan out to Linear automatically; nothing else changed in the flow.
20 April 2026
Per-Set Form-Check Videos
Athletes can now attach a form-check video to any set inside a completed session. Videos travel with the set (exercise, set number, session, week), so coaches review them in-context in the Workout Sessions panel and the Weekly Review video linker — no more fuzzy-matching clips from chat. Videos default to a form-check pool that auto-deletes after 30 days and does not count against coach storage; coaches can promote any video to Kept (or pin it into a weekly review) to persist it permanently against their Pro/Expert video storage quota.
19 April 2026
Analytics charts now show IronLedger-logged workouts
Fixed a bug where athlete progress charts (e1RM Progression, Training Volume) and coach-side analytics silently dropped workouts logged from the IronLedger mobile app. The two apps share a Supabase project but use different set field names — the aggregation code now handles both formats. Affects /client/progress, /dashboard/analytics, client detail pages, and AI insight prompts.
15 April 2026
View Analytics Shortcut on Client Page
A "View Analytics" link now appears next to each client's name on the client detail page. Clicking it navigates directly to the Analytics dashboard pre-filtered to that specific client — no more manually selecting the client from the dropdown.
Expandable Session Cards
The Workout Sessions tab on client detail pages now shows expandable cards. Click any session to see full exercise details — sets, reps, weights, e1RM calculations, client notes per exercise, session notes, and coach feedback. Replaces the previous flat list that only showed exercise names and set counts.
Client Soft-Delete with Grace Period
Coaches can now remove clients with a 30-day grace period. Removed clients appear in a collapsible "Removed Clients" section with a restore button and countdown. After 30 days, all data is permanently deleted including Mux video assets. Coaches can restore clients at any time during the grace period.
Video Storage Management
Duration-based video storage with tier limits (Pro: 60 min, Expert: 300 min). Storage meter and retention settings in Settings. $5/month add-on blocks for additional storage via Stripe. Auto-delete expired videos based on coach-configured retention policy (3, 6, 12 months, or never). Transcripts and text notes are preserved permanently.
Weekly Review System
Coaches can now create weekly reviews for each client with a template-driven workspace. Features include: customizable review templates (8 sections — session details, client notes, training videos, volume trends, block progress, AI summary, coach video, coach text notes), 3 starter templates (Quick Check, Weekly Review, Deep Dive), in-app video recorder (webcam, screen share, or both), AI-powered session summaries with block context via Claude, and a "Clients Ready for Review" dashboard widget. Athletes receive reviews in a dedicated Reviews page with coach video playback and transcript.
RIR/RPE Auto-Detection in Program Builder
The program builder now automatically detects whether a value is RIR or RPE based on the number entered. Values 0-4 default to RIR, values above 4 or decimals default to RPE. Previously, coaches had to type the "RIR" suffix explicitly for it to be recognized.
Connection Requests Page Fix
Fixed the Connection Requests page showing an infinite loading spinner. The page now handles database query errors gracefully with a fallback query and error banner, instead of leaving coaches stuck on a loading screen.
Video Upload Limit Increased to 200MB
Increased the maximum video file size from 100MB to 200MB for chat video uploads. Added clear error messages when file type or size validation fails — previously the file was silently dropped with no feedback.
Error Handling Overhaul
Eliminated 23 silent failures across the app. Added toast notification system for user-facing errors. Fixed: notification delivery failures now show warnings, clipboard actions show success/failure, data fetch errors show error states instead of misleading empty states, alert dismiss verifies server response before updating UI. Added Sentry tracking to all error paths.
Video Transcription & Chapters
Coach video feedback is now automatically transcribed with timestamped segments using Mux auto-captions. AI-generated chapters (via Claude Haiku) are added to videos, allowing coaches and athletes to jump to specific topics. Transcript panel with click-to-seek added to both coach and athlete video detail modals.
8 April 2026
Nutrition Plan Autosave
Nutrition plans now auto-save after 3 seconds of inactivity with a save status indicator, matching the program builder behavior. No more lost work when navigating away.
Exercise Library Expansion
490+ built-in exercises across 13 categories including resistance bands, suspension/TRX, strongman, medicine ball, and mobility/rehab. Expanded kettlebell from 5 to 34 exercises. 5 new equipment categories, 7 new equipment types.
7 April 2026
Media Preview & Message Actions
Images and videos now show a preview before sending with option to cancel. Added message edit (15-min window) and delete with confirmation. Both features work for coaches and athletes.
Messaging Enhancements
Video button now opens a file picker before uploading. Added emoji picker to compose input. Added iMessage-style message reactions (❤️ 👍 👎 😂 😮 🔥) with realtime sync.
6 April 2026
Drip Sequences & Broadcast Campaigns
4 behavior-branching drip flows (17 emails) for onboarding, post-client, and post-upgrade. Admin broadcast campaign system with markdown compose, audience segments, scheduled sends, and email dashboard.
Lifecycle Email Automation
19 automated lifecycle emails: activation nudges, first success celebrations, engagement re-engagement, upgrade prompts, win-back sequences, and monthly newsletter. Category-based unsubscribe with 4 toggles.
Nutrition Intelligence (Phase 3)
Wearable re-sync & daily cron, nutrition consent for multi-coach sharing, training day auto-detection from workout data, AI nutrition insights with adherence pattern analysis
5 April 2026
RAG-Powered AI Support Chat
Support chat now answers from actual documentation using hybrid vector + full-text search. 176 doc chunks embedded. Model routing: Haiku for simple, Sonnet for complex queries.
LLM SEO: Content Freshness, Schema, Long-Tail Page
dateModified on all marketing pages, CollectionPage schema on blog/guides/templates, new "coaching app for personal trainers" solution page, expanded llms.txt with testimonials and FAQ.
LLM SEO: Trust Signals, Review Schema, Dynamic Ratings
About page: platform metrics, coach testimonials, FAQ section. Dynamic aggregateRating from real reviews. Review JSON-LD schema on coach profiles.
Redesigned Workout Log Form
Log Workout page rebuilt as a clean post-workout manual entry form matching the program builder style. Removed real-time timer, added date picker, notes per set, streamlined layout.
Fix program builder silent save errors
Program builder now shows "Unsaved changes" instead of false "Saved" status when a save fails (e.g., RLS violation).
SEMrush April 2026 Audit Fixes
2 missing blog images generated, 7 broken external links fixed, 3 H1/title duplicates resolved, 21 journal 403 links replaced.
RPE/RIR Ranges & Per-Set Values
Coaches can now enter RPE ranges (e.g., @7.5-8) and per-set RPE/RIR values (e.g., 0, 1, 2 RIR) in the program builder.
Program Weeks Enhancements
Drag-reorder days between weeks and reorder weeks. Week metadata with deload toggle and notes. Week section headers in PDF and XLSX exports.
4 April 2026
Program Assignment Notifications
Athletes now receive in-app and email notifications when a coach assigns or updates their program. Uses existing notification infrastructure with immediate email delivery.
Program Weeks
Organize training days into weekly blocks for periodization. Add, duplicate, and remove weeks in the program builder. Collapsible week sections for easy navigation. Existing programs auto-migrate seamlessly.
22 March 2026
Fix e1RM analytics data display
Fixed an issue where e1RM charts showed no data for coaches with IronLedger-connected athletes. The analytics hook now correctly handles both IronLedger and IronCoaching workout data formats.
Set ranges in program builder
The sets field now supports ranges like "3-4" in addition to single numbers. Useful for programs that prescribe a range of sets per exercise.
Drag-and-drop visual feedback
Dragging exercises in the program builder now shows visual feedback: the dragged row dims and a cyan indicator shows where it will be placed.
RPE/RIR input hints
The RPE/RIR field in the program builder now shows placeholder text ("@8 or 3 RIR") so coaches know the expected input format.
Fix sets input snapping to zero
The sets field in the program builder no longer snaps to 0 when you clear it to type a new number. Uses a text input with numeric mode for smoother editing.
Fix ExercisePicker crash on undefined value
Fixed a crash in the program builder exercise picker when the value prop was undefined, causing a TypeError on .trim().
Fix blog date hydration mismatch
Blog post dates now render consistently between server and client by pinning the timezone to UTC, preventing hydration errors.
Fix SEO dashboard crash on non-array data
The SEO dashboard no longer crashes when the API returns unexpected data formats. Added defensive guards in the data mapping layer.
Fix setup guide button on dashboard
The "Open Setup Guide" button on the dashboard now correctly opens the guide panel in the layout.
Fix service worker registration error
Service worker registration failures (e.g., in incognito mode or unsupported browsers) no longer produce unhandled promise rejections.
15 March 2026
Notification email system
Automated email notifications for key events: new messages, program assignments, and client invites. Daily digest option. Configurable in notification settings.
12 March 2026
Annual billing with 20% discount
Added annual billing option for Pro and Expert plans. 20% savings compared to monthly. Toggle on pricing page and settings.
9 March 2026
Documentation site launched
Full documentation site at docs.ironcoaching.app built with Mintlify. Covers getting started, programs, clients, features, and billing.
8 March 2026
AI support chatbot (Sparky)
AI-powered support widget on every page. Answers common questions about IronCoaching features, billing, and getting started. Escalates to email when needed.
Support form
Structured support request form on the /support page. Submits tickets with category, priority, and description.
4 March 2026
Business dashboard
Coaching business overview: total/active clients, pending requests, average rating. Retention metrics (Pro+) with churn rate, tenure, and 6-month trend chart. Revenue tracking (Expert) with per-client monthly rates and MRR.
3 March 2026
Client goals with auto-progress (Pro+)
Structured client goals: strength, weight, body composition, habit, and competition types. Progress bars with auto-updating current values from PR data.
Video feedback with Mux (Expert)
Upload and send video messages in coach-athlete chat. Mux processing for smooth playback. Timestamped annotations for form review.
2 March 2026
Athlete testimonial system
Athletes can leave reviews for coaches. Reviews display on public coach profiles with star ratings. Shareable review page for each coach.
Referral system
Coach referral codes with tracking. Referred coaches and signup attribution tracked in the database.
AI training insights (Expert)
Claude-powered AI analysis of client training data. Streaming SSE responses with per-client and analytics-wide insights. 20/day rate limit with 24h cache.
AI feedback loop
Coaches can rate AI insights (thumbs up/down) with optional text corrections. Top-rated insights are injected as few-shot examples to improve future responses. Opt-in via Settings.
AI PR predictions
AI generates structured personal record predictions per exercise. Predictions auto-resolve against actual PR data (within 5% = hit). Accuracy stats feed back into future prompts.