React component behaves differently in production (AWS Docker) than localhost
I have built a video conferencing application using React, Node.js, Express, LiveKit, Docker, and AWS EC2.
Expected behavior (localhost)
When a user navigates to /meeting/:url:
A custom lobby screen ("Green Room Preview") is displayed.
The user enters a username.
The user clicks Join.
The LiveKit meeting screen opens.
Actual behavior (AWS production)
When a user navigates to /meeting/:url:
The LiveKit meeting screen appears immediately.
The custom lobby is skipped entirely.
What I have already verified
Same Git branch is deployed.
Latest commits are pulled on AWS.
Docker image has been rebuilt from scratch.
The deployed container contains the strings:
"Green Room Preview"
"Enter Lobby"
MeetingRoom.jsxis identical on localhost and AWS.LiveKitMeeting.jsxis identical on localhost and AWS.
Relevant code
The lobby should render unless both joined and token are set.
if (joined && token) {
return (
);
}
return (
Green Room Preview
);
Additional observation
Inside the production Docker container I can find the lobby strings:
grep -R "Green Room Preview" /usr/share/nginx/html
FOUND
grep -R "Enter Lobby" /usr/share/nginx/html
FOUND
This suggests the lobby code is present in the deployed build, but the browser never renders it in production.
Question
What could cause React to consistently render the LiveKitMeeting branch in production while rendering the lobby branch on localhost when the source files appear identical?
Additional Information
Live site:
https://sangama.ddns.net
GitHub repository:
https://github.com/NiteeshGowda72/sangama-video-conferencing-platform
Relevant files:
frontend/src/pages/MeetingRoom.jsx
frontend/src/pages/LiveKitMeeting.jsx
docker-compose.yml