"The user will read the screen carefully and pick the right option from a menu."
You don't, and they shouldn't. You're four sets into a 90-minute squat day. You are not reading anything carefully.
Mid-workout, you are not at your sharpest. Your blood is in your muscles. Your central nervous system is taxed. Your patience is thin and your fingers are slick with chalk. This is not a moral failing — it's physiology, and it's the reason most workout apps fall apart at the rack.
flexRep is designed around the version of you that's mid-set, not the version of you reading this on a couch. Every surface optimizes for the same thing: fewer decisions, fewer taps, no questions. The app gets quieter as the bar gets heavier — and louder only when it has something worth saying.
Three taps to log a set. Two of them optional.
The standard workout-app pattern asks you to make ten micro-decisions for every set: which exercise, which set type, which weight unit, did you mean warmup, do you want to track RPE, do you want the timer to start, are you sure? Each one is small. Together they're the reason you stop logging by lift number five.
"The user will read the screen carefully and pick the right option from a menu."
You don't, and they shouldn't. You're four sets into a 90-minute squat day. You are not reading anything carefully.
"The user is mid-set, tired, distracted, and one slip away from logging the wrong thing. The app should make the right thing the easy thing."
Pre-fill everything we can. Make every action confirm itself. Make every mistake easy to fix. Then get out of the way.
Each principle exists because we watched ourselves drop the phone, mis-tap the +45, accidentally log a deload as a working set, or forget which set we were on. The fixes aren't features — they're stances baked into the surface.
Open the app at the gym and the next-most-likely set is already on screen — same weight, same reps, same RPE as the last time you did this exercise. The "logged" state is one tap away from "showed up." Decisions are friction; we remove them.
Weight and reps are the heroes of the screen, set at a size you can read across the rack. Plate buttons say "+45," not a glyph you have to parse. Nothing on the primary surface requires you to remember what an icon means.
Your last exercise is selected. Your last weight is loaded. Your last rep count is filled. Your last RPE carries over. The app assumes you're still doing what you were doing twenty minutes ago — because you almost always are.
Tap a plate and the weight visibly settles to the new value. Tap Log and the receipt slides in from below. The rest timer starts on its own. Nothing is silent. Nothing is "wait, did that work?"
Tapped the wrong plate? Tap a smaller one to fix it. Logged a set you didn't do? Swipe-left to delete. Need to edit a set from four lifts ago? Tap it; it opens. The cost of a mistake is one gesture, not a dialog with three buttons.
Six rows. Note how many of them involve you doing anything at all.
Total finger presses across one logged set: 1. The Log button. Everything else either happens automatically or is the same as it was last time.
No menus to navigate. No three-tap chains. If you find yourself reaching across the screen with both thumbs, we got something wrong.
The default surface is opinionated, because defaults are the surface most users will ever see. Underneath, every visible element, every behavior, and every voice can be tuned to your training style — without ever cluttering the primary screen.
Mid-workout misfires are not bugs — they are the working condition. We treat reversibility as a primary feature, not as an afterthought.
FIX Tap a counter-plate. +45 then immediately –45 returns you to where you were. The weight scrubs visually; the haptic acknowledges.
FIX Undo banner. Or swipe-left on the receipt row. Both work for a few minutes after the fact; nothing about the session reflows.
FIX Tap the exercise name to switch. Sets already logged stay attached to the original exercise; new sets attach to the new one.
FIX Open the app on power-back. Your workout is intact: pause state, rest timer end-time, all sets — saved at every event, never at every five seconds.
FIX The app notices and auto-ends it for you with an annotated flag. Analytics know to handle annotated sessions distinctly. You don't have to remember.
FIX Long-press behaviors are explicit and never destructive. The worst thing that happens is the numeric keypad appears; tap-out to dismiss.
Every workout app's primary screen accumulates noise over time — buttons sneak in, 'social' widgets get bolted on, a settings shortcut earns a spot for no good reason. We keep an explicit 'do not add' list.
That's the brief. Every screen, every setting, every animation, every haptic — graded against the question: would this still work on set 47?
Quiet under load.