In-App Messaging for Gyms

Keep trainers, clients, and gym staff connected without leaving the platform. TrainerReport's built-in messaging delivers messages in real time, supports file attachments, and works seamlessly across the web app and mobile app — so conversations stay in one place instead of scattered across text threads.

Messages
Coach Alex
Coach Alex
Great session today! How are your legs feeling?
A little sore but in a good way. That last set of squats was tough!
Coach Alex
Perfect. I'll adjust Wednesday's program to focus on upper body so you can recover.
Sounds good, thanks!

Stay Connected, Stay Organized

Real-Time Delivery

Messages are delivered instantly using Supabase Realtime, which listens for new database inserts via PostgreSQL's change notification system. When a trainer sends a message, the client sees it appear immediately — no polling, no refresh needed. Messages appear optimistically on the sender's screen and are confirmed when the Realtime subscription picks up the database insert.

Typing Indicators

See when the other person is composing a message with live typing indicators. Built on Supabase Presence (ephemeral state that doesn't touch the database), typing status is broadcast in real time with a 2-second debounce to avoid flickering. The animated bounce-dot indicator appears below the message thread, giving conversations a natural, responsive feel.

File Attachments

Share progress photos, workout PDFs, and other files directly in conversations. Attachments are uploaded to a private Supabase Storage bucket (up to 10MB per file) with MIME type validation for JPEG, PNG, WebP, GIF, and PDF formats. Signed URLs ensure that only conversation participants can view shared files, keeping client data secure.

Role-Based Contacts

Who you can message depends on your role in the gym. Gym admins and solo trainers can reach anyone in their organization. Gym trainers can message their assigned clients plus gym admins. Clients can message their trainer and gym admins. This keeps conversations relevant and prevents unwanted contact — no one sees users outside their scope.

Unread Count Badges

Never miss an important message. Unread counts appear as badges on the Messages nav item in the sidebar, calculated by comparing each message's timestamp against when you last read the conversation. The count updates in real time as new messages arrive, and marking a conversation as read clears the badge instantly — across both web and mobile simultaneously.

Mobile App Support

Messaging works identically on the TrainerReport mobile app (iOS and Android). The same Supabase Realtime connection powers live message delivery, and the same conversation list, chat interface, and new-conversation picker are available on mobile with a native touch-optimized layout. Clients can message their trainer from anywhere, and trainers can respond on the go.

Keep your gym connected

Replace scattered text threads with organized, real-time conversations. Messaging is built right into TrainerReport — no extra apps needed.