One app now runs everywhere: the website is the same Expo app as iOS and Android, so a fix lands on all three at once. You can also reorder the exercises in a workout, and Finish no longer saves sets you never did.
Breaking changes
Only self-hosters who built their own deployment from the repo are affected; there is no HTTP API break in this release.
- The web client moved from
web/to the Expo app (#246)
docker-compose.ymlnow builds thefrontendservice fromapps/app/Dockerfile.web. If you keep your own compose file that points atweb/Dockerfile, update the path. The image name and service name are unchanged. Old page URLs (/food,/exercises/:idand the rest) answer a permanent redirect to their new place, so bookmarks keep working.
What's new
One app for web, iOS and Android (#246, #224)
The web app is now the Expo app's web export, on Expo SDK 58. It has a real desktop layout (sidebar, multi-column screens) and the same screens, language picker and settings as the phone apps.
Reorder exercises (#257, issue #166)
Drag an exercise by its handle, or use Move up / Move down, in a new workout, a workout you're editing, a routine day, or the workout you're in the middle of. It works from the keyboard and with a screen reader. Thanks to @ansgaross for asking.
Gym Mode header (#257)
Minimise, the elapsed clock with sets done, a Finish check and the ⋯ menu now sit in one row, with the ⋯ menu at the far right. A progress line shows one segment per exercise, and the exercise name opens a switcher.
Rest timer in the list layout (#263, issue #144)
Ticking a set now starts the rest timer in the list layout too, as a dock above the tab bar.
Exercise browser (#228)
Look up any exercise, with muscle and equipment filters, from the Workouts tab without starting a workout.
Fixes & improvements
- Finish saves only the sets you ticked. Unticked sets are dropped and the rest renumbered, and a workout with nothing ticked offers Discard instead of saving an empty one (#262)
- Every control now has a 44x44 hit area without looking bigger (#264)
- Light theme text meets WCAG AA contrast on chips, macros, weight changes, destructive buttons and the TODAY chip (#265)
- Settings opens at once when the server is slow or wrong, and the dashboard's error page has a Server settings button, so a bad address is no longer a lockout (#267)
- Log Food: the search field's focus ring is no longer clipped, and Scan is hidden where the browser has no camera API, which is any page served over plain http (#266)
- Sign-in and register: the show-password button has a name for screen readers, and the Spanish tagline no longer runs off a small screen (#261)
- Removing an exercise with logged sets asks first, and a logged set can no longer be removed from Gym Mode (#257)
- Gym Mode keeps "complete set" available during rest (#225), thanks to @Thijs226
- Exercise filters (
muscle_group,category,equipment) accept any letter case and surrounding spaces instead of silently returning nothing (#228) - Security updates: Go standard library and
x/net, axios, react-router-dom and web dev tooling, and the runtime image moved off an end-of-life Alpine (#221, #222) - CI runs about twice as fast, around 5 minutes for the required checks (#259, #260)
Also worth knowing
- Scanning a barcode needs HTTPS or localhost on the web. Browsers do not give a plain
http://page a camera. A LAN self-host over http will not show Scan; the phone apps are unaffected. - A few native light-theme colours (the accent and the TODAY chip) are still around 3.4:1 against their background.
Contributors
@ansgaross (#166), @Thijs226 (#225)
What's Changed
- Patch the Go standard library and x/net, and move the runtime image off EOL Alpine by @Cawlumm in #221
- Patch axios, react-router-dom 7 and the web dev tooling by @Cawlumm in #222
- fix(gym): keep set completion available during rest by @Thijs226 in #225
- Pin the e2e job to ubuntu-24.04 so WebKit can launch by @Cawlumm in #226
- Upgrade the mobile app to Expo SDK 58 (Metro 0.87) by @Cawlumm in #224
- Add an exercise browser with generic filters, reachable from Workouts by @Cawlumm in #228
- Hoist expo-router to the root so expo start works with typed routes by @Cawlumm in #229
- Move the web client into the Expo app (universal iOS/Android/web), delete web/ by @Cawlumm in #246
- ci: speed up and harden the e2e pipeline by @Cawlumm in #259
- ci: cut the cold e2e path; PR image builds run alongside the tests by @Cawlumm in #260
- Sign-in/register: name the show-password toggle; keep the tagline on screen by @Cawlumm in #261
- Reorder the exercises of a workout, routine day or running session (#166) by @Cawlumm in #257
- Finish saves only the sets you ticked; nothing ticked offers Discard by @Cawlumm in #262
- List layout starts the rest timer when you tick a set by @Cawlumm in #263
- Every control gets a 44x44 hit area without growing by @Cawlumm in #264
- Light theme text meets WCAG AA contrast by @Cawlumm in #265
- Log food: unclipped search focus ring; hide Scan over plain http by @Cawlumm in #266
- Settings and dashboard no longer lock you out while the server hangs by @Cawlumm in #267
New Contributors
Full Changelog: v0.1.0-beta.8...v0.1.0-beta.9
Android (side-load)
Download lyftr-v0.1.0-beta.9.apk below. On your phone, open it and
allow "install from unknown sources" if prompted.
iOS is distributed via TestFlight / the App Store (Apple doesn't allow
side-loading), so it isn't attached here.
What's Changed
- Patch the Go standard library and x/net, and move the runtime image off EOL Alpine by @Cawlumm in #221
- Patch axios, react-router-dom 7 and the web dev tooling by @Cawlumm in #222
- fix(gym): keep set completion available during rest by @Thijs226 in #225
- Pin the e2e job to ubuntu-24.04 so WebKit can launch by @Cawlumm in #226
- Upgrade the mobile app to Expo SDK 58 (Metro 0.87) by @Cawlumm in #224
- Add an exercise browser with generic filters, reachable from Workouts by @Cawlumm in #228
- Hoist expo-router to the root so expo start works with typed routes by @Cawlumm in #229
- Move the web client into the Expo app (universal iOS/Android/web), delete web/ by @Cawlumm in #246
- ci: speed up and harden the e2e pipeline by @Cawlumm in #259
- ci: cut the cold e2e path; PR image builds run alongside the tests by @Cawlumm in #260
- Sign-in/register: name the show-password toggle; keep the tagline on screen by @Cawlumm in #261
- Reorder the exercises of a workout, routine day or running session (#166) by @Cawlumm in #257
- Finish saves only the sets you ticked; nothing ticked offers Discard by @Cawlumm in #262
- List layout starts the rest timer when you tick a set by @Cawlumm in #263
- Every control gets a 44x44 hit area without growing by @Cawlumm in #264
- Light theme text meets WCAG AA contrast by @Cawlumm in #265
- Log food: unclipped search focus ring; hide Scan over plain http by @Cawlumm in #266
- Settings and dashboard no longer lock you out while the server hangs by @Cawlumm in #267
New Contributors
Full Changelog: v0.1.0-beta.8...v0.1.0-beta.9