JST Fitness — Accessibility Statement
Last reviewed: 17 October 2026
JST Fitness is committed to being usable by everyone, including people who use a screen reader, navigate by keyboard, need larger text, or find motion uncomfortable. This statement says plainly how far we have got, what we know is still not good enough, and how to tell us when we are wrong.
How accessible this app is
JST Fitness is partially conformant with WCAG 2.1 level AA.
"Partially conformant" means most of the app meets the standard, but a small number of things — listed by name further down — do not yet. We have chosen the honest word. Nothing on this page is a claim we have not checked.
The app was audited against WCAG 2.1 AA across seven dimensions in July 2026. Every serious finding from that audit has been fixed. The remainder are listed below rather than quietly left out.
What works
- Screen readers. Every error message, confirmation and status change is announced, not just shown. Custom controls the app builds itself — the number wheels, the sliding toggles, the steppers, the segmented pickers that choose a workout type or a session length, the pop-up dialogs — report their role, their state and their current value, so they are read out the same way a standard control would be.
- Keyboard. Everything can be reached and operated without a pointer, and focus is always visible. In the app's dialogs, focus is also kept inside the dialog while it is open and returns to where you were when it closes — with one exception we would rather name than let you find: the panel that appears when you pause a follow-along circuit does neither. It is listed below.
Colour and contrast. This is not checked by eye. Every colour pair the tests cover is recalculated automatically each time the app's tests run, and a pair that drops below its AA threshold fails the test suite. That covers body text, accent text on its surfaces, the status colours, the small text on the tinted background of a set you have logged, and grey text on the accent's pale tint and on the small grey labels, in all nine themes and in both light and dark. To be exact about what that guard is: the measuring is automatic, but running the tests before a release is a rule we keep rather than something the build machinery enforces on its own.
We are not claiming every pixel is measured. Some pairings are not in the checked set — a few decorative and state colours among them — and we would rather say so than let you find one. If something is hard to read, tell us where and we will measure it and fix it. The numbers a set row fills in from your last session are in the checked set: they are drawn in a dimmer colour of their own rather than faded, so they stay readable and you can still tell them from numbers you typed.
- Gestures always have a button. Nothing in the app can only be done by dragging, swiping or long-pressing. Reordering exercises, reordering your saved routines, building supersets and drop sets, and deleting rows each have an ordinary button as well as the gesture. Saved routines can be put in your own order by dragging a card's handle, and the same move is on plain Move up and Move down buttons (the ↑ and ↓ under Order) in the routine's Edit screen, which you reach by opening the card and pressing Edit, with no gesture at all. Building a superset has an ordinary button in the routine builder, and the same button in a workout, live or logged afterwards: turn on Edit Workout and press Link superset. Each exercise you can add to it is then an ordinary button you press to pick it — Enter and Space work too — and Confirm Superset makes it; a superset has an Unlink superset button to split it again. Several controls also respond to a deliberate hold: ending a meditation session, editing the rest time from the workout clock, pressing a saved routine to see its breakdown, holding an exercise card to build a superset, and holding a set row to change its type (work set, warm-up or to failure) or add a drop set. Ending a session and editing the rest time are ordinary buttons underneath: Enter or Space works, and so does activating them with TalkBack, Switch Access or Voice Access, none of which can perform a holding gesture. Holding an exercise card in Edit Workout is a shortcut for Link superset, or, on a superset, for Unlink superset. Behind a set row's hold is the set's label ("SET 2", say), and the label is an ordinary button: tapping a set's label opens the menu for that set, and so do Enter and Space, and activating it with TalkBack, Switch Access or Voice Access. In a live workout the set you are on also has an ordinary button that opens the same menu, the SET line on the set card, and so, while the rest clock runs, does the set you have just logged: the line under the clock. The routine hold is a shortcut, and everything behind it has another way in: tapping a routine's header opens the card, where Start, Edit and Delete are ordinary, visible buttons, and so, in the Android app, is Share. The routine's full breakdown is not on that card — it lives in the routine preview and in View All. View All is an ordinary button and needs no gesture at all, so nothing here is reachable only by holding. (There is also an Edit button on the card itself that is hidden from sight but present for TalkBack, Switch Access and Voice Access, so those users reach the editor in one step instead of two. It stays out of sight until a keyboard reaches it, and then it shows itself so you can see where you are.) The meditation hold is there so a knuckle or a cat cannot end twenty minutes of sitting by accident; the rest-time hold keeps a single tap meaning "start resting", which is what you want nearly every time.
Reduced motion. Exercise demonstration videos never auto-play when your device asks for reduced motion, unless you ask for them yourself — which you can do on the screen where a circuit starts, and again on the paused screen part-way through. What you get instead depends on where you are. In the exercise library and during an ordinary workout, the clip shows native playback controls and starts only when you press play; either way, a playing clip can always be paused with a tap. In a follow-along circuit there are no playback controls, because the clip there is decoration rather than content — it is hidden from screen readers entirely, and the exercise is named in text beside it. Under reduced motion each station shows that exercise's written instructions and a "Play demo" button, which grants the clip for that station only: the next station goes back to text without asking. Before you press start, the screen carrying the sound and buzz switches carries a third one — it reads Demos off for this circuit until you turn it on, and Demos on for this circuit after — which plays them at every station instead of asking at each one. The same switch is on the paused screen, so you can turn the clips on — or off again — part-way through without ending the circuit. It is offered only under reduced motion, it is off unless you turn it on, and it is forgotten when the circuit ends: it never becomes a setting, because a choice made once should not outlive the circuit it was made for. Tapping the clip itself in a circuit pauses the whole circuit — the timer and the video together — rather than the video alone. If your device says you prefer reduced motion, the app's CSS animations and transitions stop — that is the large majority of the movement in the app, and it covers every screen transition, every panel that opens and closes, and every list that reorders.
You can also ask for this in the app alone. Profile → Accessibility → Reduce motion. It does the same thing your device's setting does, and it is there because your device's setting is all-or-nothing across every app on the phone: nobody should have to turn animation off for their launcher, their messages and their maps to calm down a fitness tracker. It is a switch of its own — you do not have to turn Accessibility Mode on to use it.
This switch can only ask for less movement, never more. If your device is already asking, the row says so and shows no switch, because turning the app's copy off could not have overridden your phone and we will not draw a control that cannot do what it says.
One thing keeps moving on purpose: the bar that fills while you hold to end a meditation session. It is not decoration, it is telling you how much longer to hold, and freezing it would tell you that you had held long enough when you had not.
We are not claiming this is complete. A handful of animations are drawn frame-by-frame in code rather than in CSS, and those are not covered by the switch that stops the rest — they have to be found and fixed one at a time, and we have not finished doing that. If something is still moving when you have asked it not to, please tell us where and we will fix it.
Larger text. There are two ways, and they add together.
The Android app follows Android's own font-size setting (Settings → Display → Font size), which applies everywhere in the app. Android is named rather than "your device" on purpose: Android is the platform the app is built for, the behaviour is Android's WebView applying that setting to the app's text, and we are not going to write a sentence here that quietly claims a platform we have not checked. (The web version testers use in a phone's browser is a different case; Text size, and why we do it the device's way, below, says what we know about it.)
The app also has its own Text size control (Profile → Accessibility), with three steps up to 20% larger. It multiplies on top of the Android setting rather than replacing it, so the two combine — Android at its largest with Text size at Largest is roughly 1.5× the standard size.
A limit we would rather state than have you discover. At the largest combinations some screens do not lay out well: on the home screen the chart's date labels start to overlap and the bottom navigation labels can be cut off. The text is bigger everywhere, but parts of a few dense screens stop being readable rather than starting to be. We know about it, it is on the list, and setting Text size back to Default returns the app to following your Android setting alone. If you hit a screen that breaks for you, please tell us which one.
- Accessibility Mode. Profile → Accessibility, the first row of the Settings card that is always visible (not inside the Preferences drawer), above JSTFitness Guide and Preferences. That row opens a sheet, and Accessibility Mode is the first switch in it. It turns on higher-contrast text, clearer focus rings and larger touch targets. In the Android app it switches itself on by default if your device's own settings (large font, reduce motion, or increased contrast) already say that is what you want, and it keeps following those settings if you change them later, so you do not have to come back here. When it has switched itself on, the sheet says which of your settings did it. The moment you set the switch yourself your choice wins, and we stop deciding for you. In the web version on iPhone, a larger font chosen in the phone's settings is not expected to reach the page the way Android's does, so only reduce motion and increased contrast can switch it on there; we have not checked that on an iPhone yet.
- The meditation timer. While a session is running that screen deliberately cannot be dismissed — not by tapping outside it, not by Escape, not by the Android back button — because any of those would end a twenty-minute sit by accident with nothing to recover. So the way out is guaranteed three times over: hold the end button, press Enter or Space on it, or activate it the way TalkBack, Switch Access and Voice Access do. The countdown is deliberately not announced every second, which would make the screen unusable with a screen reader running; the time remaining sits on its own item instead, read out whenever you move to it and correct every time you ask.
- Follow-along circuits, which are built to be used without looking at the screen. Each change of interval is announced in three channels at once, and two of them are yours to switch off:
- Sound. A cue at the start of each work and rest interval, a nudge at the halfway point of a long one, and a 3-2-1 into the next. In the Android app, cues play at media volume, so putting the phone on silent does not mute them — that is written on the screen before you start, not discovered afterwards. In the web version in Safari on iPhone we expect the opposite — the ringer switch mutes a web page's sounds there — and the sentence on the screen does not say so yet. We have not checked either on an iPhone.
- Vibration. One buzz at each interval boundary, its length carrying which kind of interval just started. This is the primary cue if you are Deaf or hard of hearing, which is why it exists. It reaches you in the Android app. The web version in Safari on iPhone cannot vibrate — Safari gives a web page no way to — so there the boundaries do not buzz at all, whatever the switch for it says. If you are Deaf or hard of hearing and use the web version on an iPhone, the cue you have is the screen itself: the big word and the countdown change at every boundary, and you have to be looking at them.
- The screen, for a screen reader: the app speaks each boundary — "Go: Push-ups", "Rest. Next: Squats, 30 seconds", "Circuit complete" — and five things besides: pausing, resuming, a change to the rest length, when the rest is already as long as it goes, and "Switch sides" at the halfway point of a station trained one limb at a time. It never counts down out loud, which would make the screen unusable. The exercise you are on and the time left in that interval sit on their own item, read out whenever you move to it, and which station you are on sits on another. The screen also shows how much of the whole circuit is left; that figure changes every second and is drawn for the eye only, because a screen reader speaking it would talk over everything else.
- The list of stations, before you start, while you are paused and again at the end. It is an ordinary list — each row names its station, says whether it is done, skipped, coming up or the one you are on, and gives its length — and it is summed up in one sentence at the top: "Circuit progress: round 2 of 3, station 5 of 12, 4 done, 1 skipped." Both the sound and the vibration have a switch on the ready screen, where the circuit starts, rather than buried in Settings — you set them in the room you are about to train in, and flipping either one takes effect from the next interval without stopping the circuit. Both start switched on, because a follow-along circuit whose cues are silent is a countdown you have to watch, which is the thing the feature exists to remove.
There are no gestures: a tap on the countdown pauses — on a rest and the count before a station the bottom of the screen is +20s and Skip, so a tap low on the screen does not pause — and Android's back button pauses instead of exiting, so a circuit cannot be lost by reflex. Paused, every control is an ordinary button — Resume, Redo last, Skip, Exit. Those are the words printed on them, which matters because Voice Access matches what you say against the visible label. On a rest, +20s and Skip fill the bottom of the screen, one half each, so you do not have to aim at them.
The JSTFitness Guide. Sixteen short chapters you can read in a sheet, and thirteen of them you can be walked through instead: a ring appears around a real control on the real screen, a short cue names it, and you press that control yourself. The reading sheet is one of the app's ordinary dialogs — it announces itself, keeps focus inside it while it is open, and puts focus back where you were when it closes.
The walk deliberately does not keep focus inside it, and that is the one place in this app where not doing so is the right answer. Every other overlay wants you looking at it; this one wants you looking through it, at the real button underneath. Holding focus inside the bubble would hold you away from the very control the ring is drawn around, which does not make the feature safer; it makes it impossible. So the walk moves no focus, keeps none, and marks nothing unreachable: you reach the ringed control exactly as you would if the walk were not running. This is also why the promise further up is written about dialogs: the walk is not one, does not claim to be one, and is not marked up as one.
Where your taps land is a separate question, and the dimmed area holds them off. Not keeping focus inside the walk is the decision above. What the dim does is a different matter: it is not only shading. A press outside the ring is held off and answered — the ring gives a small pulse, pointing at what to press rather than telling you off — and the app underneath does not move, so pressing the wrong thing cannot move the app while the step stays where it was, and the cue never ends up describing a screen you have already left. The ringed control itself is not covered by anything, so pressing it works exactly as it always did, and the bubble carrying the cue still takes its own presses, because that is where Exit tour, Got it and Skip live. Swiping sideways across the dim does not change tab either; the trade is that the screen does not scroll while a ring is up, which it does not need to, because the walk has already brought the control into view.
On a step that is only explaining, the whole screen is held off, not just the area around a ring. Some steps have nothing for you to press: they are a sentence to read and a Got it to acknowledge, so there is no ring on them. Rather than leave the app live under a step that names no control — where every tap is either a mis-tap or a wander away from the step — the app holds the whole screen off until you move on. Your own buttons are not covered: Got it and Exit tour sit on the bubble in front of it and answer normally — so does Skip, where the step offers it — and Exit tour ends the walk and gives the app straight back. Over a third of the steps are that kind, so this is not a corner of the feature and you will meet it.
What that does not cover, which is worth knowing before you meet it. It holds off presses and swipes, which is not the same as making the rest of the screen unavailable, and there are four places it does not reach:
- When a step names a control the ring cannot be drawn around, nothing is held off at all. Usually that is a control on another screen that you have to go and find, and the bubble is telling you where it is. Dimming and blocking a screen with nothing lit on it would read as the app having frozen, exactly when you need it working, so there the app stays live and ordinary and the tabs answer as they always do.
- It works for touch and mouse, not for keyboard, TalkBack, Switch Access or Voice Access. If you are moving by focus or by voice you can still reach a control the ring is not around, and if you do, the app will move while the step stays put. This is the direct cost of not trapping focus, which we would still make the same way — but it means this improvement reaches people using a pointer and not people using those. If it strands you, Exit tour on the bubble ends the walk cleanly and every chapter can be read as plain text instead — with one exception we have not been able to rule out: while a step points at a control inside an open sheet, a screen reader may not reach the bubble at all. It is listed under What does not work yet, with what to do.
- The Android back gesture is not affected, because it is the system's, not the app's.
- If you have asked for reduced motion, a held-off press is silent — the ring does not pulse, because the pulse is movement and we would rather not make movement you have asked us not to make. Nothing moves under you, which is the part that mattered, but you get no acknowledgement either. We are not satisfied with that and would like to hear if it reads as the app having stopped working.
A screen reader is given more words than the screen shows, not fewer. The bubble is deliberately terse — "Tap + Add." — because someone looking at it can see the ring, the tail and the button all at once. Someone who cannot has none of that, so the spoken announcement carries the chapter's whole sentence, and where you are in the chapter with it ("Step 4 of 9"). It reaches you through a live region, which announces without taking your place on the screen — the same reason the walk moves no focus.
Reduced motion is honoured, and it is read live — from both switches. The ring glides from one control to the next; if reduced motion has been asked for it moves with no animation at all, and the scroll that brings the next control into view jumps rather than glides. That second one is decided in code rather than left to the app-wide rule that stops the other movement, because a scroll that explicitly asks to be smooth overrides that rule — it is one of the few pieces of movement the switch cannot reach on its own. And the setting is watched while the walk is running: turn it on part-way through — on your device, or with the app's own Reduce motion switch in Profile → Accessibility — and the walk stops gliding on the spot, rather than the next time you open the app.
What does not work yet
These are real limitations. We would rather write them down than let you discover them.
- Section headings are not marked up as headings. Screen-reader users can read every section, but cannot jump between them using heading navigation. Nothing is unreachable — it is slower than it should be. This is queued to be fixed. The Settings groups and the Weekly Report's sections are marked up now; the remaining screens are queued.
- Input outlines in light mode are faint. In the light themes the thin border around a text box is below the 3:1 contrast ratio. The boxes are still identifiable by their fill, their label and their focus ring, but the outline alone is not enough.
- The number wheels can clip at very large font sizes. At the largest Android font settings the scrolling number picker (used for weight, height and dates) can cut off. What to do instead: tap the number in the middle of the wheel and type the value directly. That path works at every font size.
- Some long names are still cut short with "…". In several places a name is kept to a single line, and one too long for it ends in "…" — more often the larger your text is. Among them: an exercise's name on its card during a workout, in the routine builder, in a routine's preview and in the history calendar; the name of a workout in your history; a goal's name on its card; and a recipe's name in your recipes. What to do instead: every exercise's full name is in the Workout tab's Library, where a long name wraps onto a second line at every size (a long one may be written on its row in gym shorthand, such as "DB" for dumbbell, and opening the row shows the full name at its top) — search for the start of it there. A goal's full name is in the spoken name of its card and at the top of the page that opens when you tap it. If a name cut short stops you from doing something, please tell us where.
- The screen a follow-along circuit RUNS on does not scroll, so at the largest font settings it can clip. That screen is built to hold still while you are on the floor: the demonstration clip, the state word, the countdown and Station N of M are laid out to fit, and the clip gives up its own height first so the words keep theirs. It has no scroll of its own, because a drag on that screen is how you pause it. At the largest Android settings something on it has to give, and the +20s and Skip buttons never do: on a rest and on the get-ready count they stay at the bottom of the screen at every Android font size, and the exercise's technique text above them gives way instead — it is cut short with a fade, and the whole of it is on the paused screen, one tap away. During work the bottom of that column can still be cut off at the largest settings, and Station N of M — the only progress signal there — is the first thing to go. The countdown, the state word and the exercise name stay whole, and an exercise with no clip keeps its whole name card where the clip would be, its name drawn smaller rather than cut. The countdown is sized to the screen rather than to the font setting alone: it grows with the setting until it fills the screen's width, and holds there, so it is never cut off at the sides. On a rest and on the get-ready count, the word and the countdown under it do the same, and also stop growing at 1.25 times the standard size — sooner on a phone too short to give them more room, where they keep their standard size — which leaves room for the +20s and Skip buttons below them. The screen before you start, the paused screen and the screen a circuit ends on all scroll, and everything on those is reachable at any font size — including long exercise names in the list of stations, which wrap onto a second line rather than being shortened.
- The screen a follow-along circuit ends on stays until you leave it. It does not time out. It carries the finished list of stations showing what you did and what you skipped, asks how hard the circuit felt if you want to answer — three choices, and skipping the question is a normal way to finish — and has a Done button, which is what saves the session. Android's back button does the same thing, so leaving that way does not lose the workout. What to do instead: tap the countdown once to pause. The paused screen scrolls, carries the full list of stations with the one you are on marked, names the exercise coming up in full, and carries Resume, Redo last, Skip and Exit — so everything, including which station you are on, is reachable there. You should not have to pause in order to read the screen, and we would rather write that down than let you find it.
- The muscle body-map is harder to read in light mode. The highlighted-muscle diagram was designed against the dark themes and has less separation on the light ones. The same information is available as text on the exercise itself.
- The meditation bell is a sound, and only a sound. When a session ends the app rings a bowl. If you are Deaf or hard of hearing — or you simply have the volume down — nothing else reaches you: the phone does not vibrate, and no notification is posted. The screen does show it, because the ring closes and the panel changes to the finished card, but that only helps if you are looking at the screen, and not having to look at the screen is the whole point of that timer. What to do instead: glance at the countdown as you get close, or set an alarm on your phone alongside the session. We have written this down as the next thing to fix on that screen. (Follow-along circuits in the Android app do not have this problem — every interval boundary there buzzes as well as sounding. The web version in Safari on iPhone cannot buzz; the Vibration entry under follow-along circuits above says what reaches you there.)
- The hold countdown in a workout is sound-only, and its sound is off until you turn it on. A timed hold — a plank, a wall sit, a dead hang — offers a countdown with a start button, and when the time is up it chimes if you have switched the rest-timer sound on, announces "time" to a screen reader, and changes what the ring shows. It does not vibrate, and it posts no notification. The sound is off by default, so out of the box the only signal is one you have to be looking at — during an exercise where you are usually looking at the floor. The screen says so under the ring, in as many words, before you start, rather than letting you find out afterwards. What to do instead: turn the rest-timer sound on in Settings, which this countdown shares, or watch the ring. Vibration here needs a decision we have not made yet: the app deliberately keeps a short, checked list of the places allowed to buzz, and this is not on it.
- Between them, the meditation timer and the hold countdown are the two places that can ring without buzzing, which makes each harder to defend, not easier.
Cues inside a follow-along interval do not buzz. The boundaries buzz and are announced. The cues that land in the middle of an interval are a different matter, and the two are not in the same state.
The "switch sides" cue on a station trained one limb at a time — the one that is an instruction rather than a progress marker — is not sound-only. It also changes the big word on the screen to SWITCH SIDES for a few seconds and is spoken once to a screen reader. What it still does not do is vibrate: the app keeps a short, checked list of the places allowed to buzz, a mid-interval cue is not on it, and adding one needs the same say-so every other buzz site in this app needed. Two further limits, named rather than left to be found: it is offered only on intervals of ten seconds or more, and if a pause or a step back carries you past the halfway mark it is not announced late.
The halfway nudge on a long work interval is unchanged and is still sound only. What to do instead: if you are Deaf or hard of hearing and not running a screen reader, the signal you have is one you must look at — glance at the state word from the halfway mark, or watch the countdown and swap there.
- The paused panel over a running circuit is not marked up as a dialog. When you pause a follow-along circuit, the panel that appears does not announce itself as a dialog, does not keep keyboard focus inside itself, and does not put focus back where it was when it closes. Every button in it is a real button and can be reached and pressed — nothing is unusable — but with a keyboard, TalkBack or Switch Access you can tab past the panel into the screen behind it and lose track of where you are. Every other dialog in the app does this properly, including the "Finish now?" confirmation that appears if you press Exit, which is built on the app's standard dialog and behaves correctly. The paused panel is the one still built by hand. What to do instead: the controls are large and centred, so touch and Voice Access are unaffected. This is queued.
- While a walk-through step points at a control inside an open sheet, a screen reader may not reach the bubble. Every sheet in the app tells assistive technology that it is the only thing on the screen while it is open. The walk-through's bubble — the step's words, Exit tour, Got it and Skip — is drawn beside the sheet rather than inside it, so a screen reader that takes the sheet at its word would neither speak the step nor let you reach its buttons. Several steps point inside a sheet — the chapter on building your first routine among them, and the steps inside the food and weight sheets. We have not yet checked this on a phone, with TalkBack or with VoiceOver, so we cannot tell you it happens — only that we cannot rule it out. What to do instead: close the sheet with its ✕ (or, in the Android app, the back button); with the sheet gone, nothing tells a screen reader to ignore the bubble. Every chapter can also be read as plain text in the JSTFitness Guide, which is an ordinary dialog.
Text size, and why we do it the device's way
JST Fitness is an Android app, and in that app the way to make everything bigger is Android's own font-size setting (Settings → Display → Font size). The app respects it throughout, and that is the supported route — if text is too small, that setting is the one to reach for.
In the Android app, pinch-to-zoom is switched off by default, which is the normal behaviour for an Android app: a pinch inside a workout should scroll or swipe, not zoom the screen. Banking and fitness apps overwhelmingly behave the same way.
We are aware this looks like it ought to fail WCAG 1.4.4 (Resize Text) and we do not think it does. For a native application the requirement is that text can reach 200% through the platform's own accessibility controls, which it can on Android — the criterion asks for resizable text, not for the pinch gesture specifically. If you disagree, please tell us; the contact details are below and we would rather hear it than not.
"On Android" is doing real work in that paragraph. The whole argument rests on the platform passing its font-size setting through to the app's text, and that is a thing Android's WebView does rather than a thing every platform does. It is the platform the app is built for. A web version that runs in a phone's browser is also used by testers today, most of them in Safari on iPhone, and this argument does not cover it. If JST Fitness is ever released for iOS, this section is not inherited — it has to be re-made there or the pinch decision has to change, and that is written down in the engineering record rather than left to whoever ships it.
The web version on iPhone. We have not yet checked, on an iPhone, how text can be made bigger in the web version: whether a pinch zooms the page, whether Safari's own text size (the aA button) reaches it, and what the app's own Text size control (Profile → Accessibility) does there — in a Safari tab or from an icon on the home screen. Until we have, this page makes no claim about resizing text in the web version. If text there is too small for you, please tell us; the contact details are below.
How the layout survives what the platform passes through. Text in the app is one of two kinds, and they respond to the font-size setting differently, on purpose:
- Content scales in full. Anything you read — logs, settings, reports, names, numbers — grows with the platform setting all the way up, and wraps inside scrolling columns rather than clipping. The exceptions we know about are the ones listed under What does not work yet, among them the places where a long name is still cut short with "…". The Home greeting wraps onto a second line, and so do long exercise names in the Workout tab's Library and in the list you add exercises from.
- Fixed-geometry chrome caps itself. The bottom navigation's labels and the charts' axis captions (the weight chart, the strength progression chart and the history averages chart) live in boxes that cannot grow, so past an effective ~1.25× they hold there instead of growing into collisions ("Profile" once clipped to "Pro" at large scales). This is a recognised platform pattern — the iOS tab bar holds its label size under Dynamic Type — and it is a loss-prevention measure, not a scaling opt-out: every capped label stays whole, legible, and paired with its icon; TalkBack announces the full name at whatever speech settings you use, unaffected by the visual size; and nothing a chart's axis marks is available only there — the numbers behind it appear at full size in the chart's own readouts and in your own log. The mechanism is
src/features/a11y/chromeText.js, and at a standard font size it changes nothing at all.
Assistive technology we test with
The app is developed and checked against TalkBack on Android, plus keyboard-only navigation and the operating system's font-size, reduced-motion and increased-contrast settings.
We do not currently have test coverage with VoiceOver on iPhone (the iPhone app has not been released, and the web version testers use in Safari has not been checked with it yet), or on external braille displays.
Telling us we got something wrong
If any part of JST Fitness is difficult or impossible for you to use, we want to hear it — including things not listed above.
- In the app: Profile → Send Feedback. It reaches the same place and needs no email address.
- By email: [email protected]
JST Fitness is built and maintained by two people, so there is no support desk and no guaranteed response time — but accessibility reports go to the front of the queue, and you will get a reply from a human whenever we have a way to reach you. (An in-app report sent without an email address is read just as carefully, but can't be replied to.)
If you tell us about a problem, please say what you were trying to do and what assistive technology you were using, if any. That is usually enough to reproduce it.
About this statement
This statement applies to the JST Fitness Android app and to the pages hosted alongside it. It does not yet cover the web version of the app that testers use in a phone's browser, most of them in Safari on iPhone: that version runs the same screens, but nothing on this page has been checked there yet, and where a difference is expected the sections above say so.
It was written on 30 July 2026 following an internal accessibility audit of the app carried out in July 2026, and last reviewed on 17 October 2026. It is based on self-assessment: the app has not been audited by an external accessibility organisation.
We review this statement whenever the app changes in a way that affects it, and at minimum whenever a new version is released to the Play Store.