Cloning seems to not be creating a deep copy

while true do
local fp = game.Players.LocalPlayer:GetFriendsOnline()
for _, v in pairs(fp) do
    if v.IsOnline then
        if v.LocationType == 1 or v.LocationType == 4 or v.LocationType == 5 then
            if v.PlaceId == 5699872700 and not script.Parent.FriendList:FindFirstChild(v.UserName) then
                local frame = script.Parent.Parent.FriendExample:Clone()
                frame.Name = v.UserName
                frame.Parent = script.Parent.FriendList.ScrollingFrame
                script.Parent.FriendsOnline.Text = tostring(tonumber(script.Parent.FriendsOnline.Text) + 1)
            end
        end
    end
    end
    wait(1)
end

When running this script the friends online text increments, almost as if frame was being cloned but it wasnt being set to its new parent. No errors too. This is ran on the client but this is all userdata so im pretty much confused here

why do you have to check if they are online?

game.Players.LocalPlayer:GetFriendsOnline()

already does the job and btw why do you check every 1 second your friends will not be offline 1 second after they become online probably