React component behaves differently in production (AWS Docker) than localhost
02:09 12 Jun 2026

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:

  1. A custom lobby screen ("Green Room Preview") is displayed.

  2. The user enters a username.

  3. The user clicks Join.

  4. The LiveKit meeting screen opens.

Actual behavior (AWS production)

When a user navigates to /meeting/:url:

  1. The LiveKit meeting screen appears immediately.

  2. 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.jsx is identical on localhost and AWS.

  • LiveKitMeeting.jsx is 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

reactjs amazon-web-services docker