PlayerGui GUI Children Returning nil After Reset - Replication Broken After July 2025 Update

After the recent mid-July 2025 Roblox update, my game’s UI began breaking entirely following character resets.
Although GUI elements appear visually inside PlayerGui, their children (such as Title under a BillboardGui) start returning nil when accessed via script.

This issue did not occur prior to July 17–20, 2025. It now consistently breaks essential UI systems like inventory, hotbar displays, and contextual BillboardGuis after a character reset.

Setup in my case:
I have a BillboardGui named ArmorGUI placed inside a folder called BillboardGuis, under StarterGui.
In a LocalScript located under StarterPlayerScripts, I access the label like this:

local title = player.PlayerGui.BillboardGuis.ArmorGUI.Title

On first spawn, this works perfectly - the GUI is cloned correctly, and Title is accessible.

The Bug
After resetting the character, the same line consistently throws:
Title is not a valid member of BillboardGui “ArmorGUI”

The confusing part is this:

  • In the Explorer, ArmorGUI and all of its children (including Title) are visibly present under PlayerGui.
  • But the script still fails, and accessing ArmorGUI.Title returns nil.

However, running a command like:

print(game.Players.LocalPlayer.PlayerGui.BillboardGuis.ArmorGUI.Title)

…immediately after shows that Title does exist, it prints the correct object !?

This behavior is consistent and only began after the recent Roblox updates.
It seems like a replication timing or GUI desync issue tied to how StarterGui is re-cloned into PlayerGui post-reset. Happens alongside the warning:

GuiService:AddSelectionParent already has selection group with name PlayerlistGuiSelection, overwriting selection group.

This happened to me before, its because on reset the variable still refers to the old instance (which has been reset). To fix this you can either put your script in StarterCharacterScripts (which reruns the whole script on reset) instead of StarterPlayerScripts or do this:

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local title = player.PlayerGui.BillboardGuis.ArmorGUI.Title

player.CharacterAdded:Connect(function(newcharacter)
title = player.PlayerGui.BillboardGuis.ArmorGUI.Title
end)