Skip to content

Web/bugfix/language picker mobile - #8550

Merged
christiansaavedra merged 16 commits into
developfrom
web/bugfix/language-picker-mobile
Jun 3, 2026
Merged

Web/bugfix/language picker mobile#8550
christiansaavedra merged 16 commits into
developfrom
web/bugfix/language-picker-mobile

Conversation

@christiansaavedra

Copy link
Copy Markdown
Contributor

This PR implements conditional validation for displaying the language selector in the navigation bar. The language picker is shown on desktop and on mobile for unauthenticated users, but hidden on mobile for authenticated users to streamline the interface and reduce clutter. Jest uni tests added.

The solution uses a useMemo hook in the [Navigation.tsx] component to compute shouldShowLanguagePickerSelect boolean based on isMobile and authState.authenticated.

On mobile devices, the selector is only displayed when the user is not authenticated, improving the user experience by avoiding unnecessary UI elements for logged-in users who likely have their language preferences set elsewhere.

Testing
Jest files added. I tested this by running the web app locally using yarn start. I verified the language selector visibility on desktop (always shown), mobile unauthenticated (shown), and mobile authenticated (hidden). Used browser dev tools to simulate mobile viewports and authentication states. No console warnings were observed during testing.

Reference issues
"closes #8097"

Backend checklist

  • Added tests for any new code or added a regression test if fixing a bug
  • Run the backend locally and it works
  • Added migrations if there are any database changes, rebased onto develop if necessary for linear migration history

Web frontend checklist

  • [x ] There are no console warnings when running the app
  • [x ] Added tests where relevant
  • [x ] Clicked around my changes running locally and it works
  • [x ] Checked Desktop, Mobile and Tablet screen sizes

For maintainers

  • Maintainers can push commits to my branch
  • Maintainers can merge this PR for me

@vercel

vercel Bot commented May 12, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
couchers Ready Ready Preview Jun 2, 2026 10:02pm

Request Review

Comment thread app/web/components/Navigation/Navigation.test.tsx
@nabramow

nabramow commented May 13, 2026

Copy link
Copy Markdown
Member

So the theory behind this is sound, the only issue is on Login and Signup page, we end up with double language picker and the navigation bar gets very cluttered:

Screenshot 2026-05-13 at 16 53 56

Maybe the solution is add it to this menu at the bottom when isMobile is true and the user is logged out:

Screenshot 2026-05-13 at 16 55 09

And then remove it from the bottom of the Login and Signup forms?

I am open to other suggestions though!

@christiansaavedra

Copy link
Copy Markdown
Contributor Author

So the theory behind this is sound, the only issue is on Login and Signup page, we end up with double language picker and the navigation bar gets very cluttered:

Screenshot 2026-05-13 at 16 53 56 Maybe the solution is add it to this menu at the bottom when isMobile is true and the user is logged out: Screenshot 2026-05-13 at 16 55 09 And then remove it from the bottom of the Login and Signup forms?

I am open to other suggestions though!

That's a very interesting observation, thanks for bringing it up.

I totally agree! My input to add is, on mobile, to move the Language Selector to the place you suggested (the bottom of the hamburger menu) but on all pages, instead of conditionally rendering according to the page. This way, we keep it on a definitive place and help users to learn where the language selector is located.

What do you think?

@nabramow

Copy link
Copy Markdown
Member

That's a very interesting observation, thanks for bringing it up.

I totally agree! My input to add is, on mobile, to move the Language Selector to the place you suggested (the bottom of the hamburger menu) but on all pages, instead of conditionally rendering according to the page. This way, we keep it on a definitive place and help users to learn where the language selector is located.

What do you think?

When the user is logged in, the LanguagePickerSelect is always in the LoggedInMenu like this:

Screenshot 2026-05-14 at 09 18 02

It's only logged out that's the problem, which is why it was originally manually added to the Login and Signup pages.

That's why I think it makes sense to remove those login and signup ones and instead add it to the bottom of the LoggedOutMenu when they are logged out.

@christiansaavedra

Copy link
Copy Markdown
Contributor Author

That's a very interesting observation, thanks for bringing it up.
I totally agree! My input to add is, on mobile, to move the Language Selector to the place you suggested (the bottom of the hamburger menu) but on all pages, instead of conditionally rendering according to the page. This way, we keep it on a definitive place and help users to learn where the language selector is located.
What do you think?

When the user is logged in, the LanguagePickerSelect is always in the LoggedInMenu like this:

Screenshot 2026-05-14 at 09 18 02 It's only logged out that's the problem, which is why it was originally manually added to the Login and Signup pages.

That's why I think it makes sense to remove those login and signup ones and instead add it to the bottom of the LoggedOutMenu when they are logged out.

I like that! I've pushed the change to this PR.

@nabramow

Copy link
Copy Markdown
Member

Getting there, but I think some logic needs to be adjusted. It should not show in the NavigationBar when the user is logged in like this:

Screenshot 2026-05-21 at 10 58 19

When logged in, it's already in the LoggedInMenu like this:

Screenshot 2026-05-21 at 10 58 35

We don't want to change any of the logged in logic, just the logged out logic.

@nabramow

Copy link
Copy Markdown
Member

Maybe put the select below the options so it matches more the LoggedInMenu style?

Screenshot 2026-05-21 at 11 00 37

Also we probably don't want the menu to automatically close when they select something in case they still want to go to something in the menu.

@nabramow

Copy link
Copy Markdown
Member

@christiansaavedra Are you still planning on finishing this? Just checking so it doesn't stay blocked a long time.

@christiansaavedra

Copy link
Copy Markdown
Contributor Author

@christiansaavedra Are you still planning on finishing this? Just checking so it doesn't stay blocked a long time.

Hey Nicole, can you confirm me if this is the expected behaviour? Im a bit confused but my understanding is that this should be the expected behavior:

a) Logged in case:

  • Render Language selector inside the hamburger menu, at the bottom.
  • Dont render the Language selector in the Navbar

b) Logged out case:

  • Dont render Language Selector inside the hamburger menu
  • Render the language page in the navbar

Please let me know, thanks

@nabramow

nabramow commented Jun 1, 2026

Copy link
Copy Markdown
Member

@christiansaavedra Are you still planning on finishing this? Just checking so it doesn't stay blocked a long time.

Hey Nicole, can you confirm me if this is the expected behaviour? Im a bit confused but my understanding is that this should be the expected behavior:

a) Logged in case:

  • Render Language selector inside the hamburger menu, at the bottom.
  • Dont render the Language selector in the Navbar

b) Logged out case:

  • Dont render Language Selector inside the hamburger menu
  • Render the language page in the navbar

Please let me know, thanks

Here are the four views we want:

Desktop

  • Logged Out: LanguagePicker is already in the nav bar - all good as is
  • LoggedIn: LanguagePicker already in the nav bar - all good as is

Mobile View

  • Logged Out: Add LanguagePicker to the left side hamburger LoggedOutMenu:
Screenshot 2026-06-01 at 18 43 55

This shows on landing page, sign up, login so should cover everything. Also remove LanguagePicker from the bottom of the Signup and Login pages

  • LoggedIn - This is already good the way it is (it shows in the right side hamburger LoggedInMenu

Let me know if that makes sense!

@CouchersBot

CouchersBot commented Jun 1, 2026

Copy link
Copy Markdown
Member

Preview builds

Mobile Dev Tool preview

Scan the QR with your phone camera, or tap Open in Dev Tool on the device, to open this branch in the installed Dev Tool dev client.

iosOpen in Dev Tool

QR to open the ios build

Deep link
couchers-devtool://expo-development-client/?url=https%3A%2F%2F1d28ff96--ota.preview.couchershq.org%2Fios%2Fmanifest

androidOpen in Dev Tool

QR to open the android build

Deep link
couchers-devtool://expo-development-client/?url=https%3A%2F%2F1d28ff96--ota.preview.couchershq.org%2Fandroid%2Fmanifest

commit 1d28ff96 · pipeline

@christiansaavedra

Copy link
Copy Markdown
Contributor Author

@christiansaavedra Are you still planning on finishing this? Just checking so it doesn't stay blocked a long time.

Hey Nicole, can you confirm me if this is the expected behaviour? Im a bit confused but my understanding is that this should be the expected behavior:
a) Logged in case:

  • Render Language selector inside the hamburger menu, at the bottom.
  • Dont render the Language selector in the Navbar

b) Logged out case:

  • Dont render Language Selector inside the hamburger menu
  • Render the language page in the navbar

Please let me know, thanks

Here are the four views we want:

Desktop

  • Logged Out: LanguagePicker is already in the nav bar - all good as is
  • LoggedIn: LanguagePicker already in the nav bar - all good as is

Mobile View

  • Logged Out: Add LanguagePicker to the left side hamburger LoggedOutMenu:
Screenshot 2026-06-01 at 18 43 55 This shows on landing page, sign up, login so should cover everything. Also remove LanguagePicker from the bottom of the Signup and Login pages
  • LoggedIn - This is already good the way it is (it shows in the right side hamburger LoggedInMenu

Let me know if that makes sense!

Pushed, let me know! Thank you

Comment thread app/web/components/Navigation/Navigation.tsx Outdated
@nabramow

nabramow commented Jun 2, 2026

Copy link
Copy Markdown
Member

@christiansaavedra Put in one small suggestion then this is ready to go!

@christiansaavedra

Copy link
Copy Markdown
Contributor Author

@christiansaavedra Put in one small suggestion then this is ready to go!

Awesome, I accepted it. LFG!

@nabramow nabramow left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM now!

@christiansaavedra
christiansaavedra merged commit 0692df1 into develop Jun 3, 2026
7 checks passed
@christiansaavedra
christiansaavedra deleted the web/bugfix/language-picker-mobile branch June 3, 2026 17:44
@github-actions github-actions Bot added the release notes: pending Add to stuff that should be included in release notes label Jun 3, 2026
@github-actions

github-actions Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

📝 Release Notes

This PR should be included in the release notes.

Suggested release note:

Fixed the mobile web language picker so logged-out users can change their language more easily on landing, login, and signup pages
🤖 Bot Debug Information

Model: couchers.openai.gpt-5.4
Decision: include
Reasoning: This fixes a noticeable mobile web bug that prevented logged-out users from accessing the language picker, especially on landing, login, and signup flows. Language selection is user-facing and important for accessibility and usability.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release notes: pending Add to stuff that should be included in release notes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Language Picker Not Avaliable On Mobile View Without Logging In

3 participants