Server Maintenance Restart Notifications


Hi Creators,

The ServerRestartScheduled event is now also invoked for server restarts scheduled for Roblox infrastructure maintenance. We know how frustrating it is for players to suddenly lose their progress in games for reasons outside of your control.

Now, when Roblox needs to shutdown servers, the game server will fire the ServerRestartScheduled event, using the same API that we introduced for Creator initiated restarts. Before the server closes, you can prompt players to save their progress, teleport them to new servers, or run any other custom logic.

The ServerRestartScheduled event arguments remain the same as before, but the fields will be populated differently for server maintenance restarts:

Argument Type Description
RestartTime DateTime The earliest time the external shutdown is scheduled to occur. This will usually be scheduled for 30 minutes after the server receives the notification
Source Enum.CloseReason For server maintenance restarts, this will always be RobloxMaintenance.
Attributes Dictionary This will be an empty dictionary for Roblox initiated restarts.

How to Get Started:

To hook up your game to server maintenance restart notifications, attach a callback to game.ServerRestartScheduled inside a server side script. You can hook into both the RobloxMaintenance and DeveloperUpdate sources in the same callback.

game.ServerRestartScheduled:Connect(function(restartTime, source, attributes)
    if source == Enum.CloseReason.RobloxMaintenance then
        if roundEndTime < restartTime then
            -- Teleporting players to the place will take them to a stable server.
            teleportAfterCurrentRound = true
        else
            notifyPlayers("Please save your game before", restartTime)
        end
    elseif source == Enum.CloseReason.DeveloperUpdate then
        local msg = attributes and attributes.message or ""
        notifyPlayers(msg, restartTime)
    end
end)

Now, whenever a server restarts, it will receive the notification and run your callback immediately. You can respond to server maintenance restarts and developer game updates in different ways, customizing what you show in the UI accordingly.
Please let us know if you have any feedback about this change.

Roblox Creator Services Team

FAQs

Why do these server maintenance restarts need to happen?

  • Game servers require periodic maintenance for events like OS patching and rack upgrades. These actions help keep the platform secure and safe.

How often do these maintenance restarts occur?

  • We try to minimize these server maintenance restarts as much as possible, but they do occur at a regular cadence. Properly handling the notification will allow restarts to be entirely invisible to players of most games.

Will servers receive notifications for all server maintenance restarts?

  • Servers will receive notifications for all scheduled maintenance restarts, but there are occasional restarts for emergency maintenance that do not send notifications to servers.

Why is the notification window before the restart only 30 minutes?

  • Restarts performed for maintenance reasons have varying levels of urgency and some may need to happen as soon as 30 minutes into the future. However, scheduling for these restarts is unpredictable and can happen minutes to hours after the provided time. You can leave the players in the server for longer than the provided RestartTime, but you do so at your own risk as the server may shut down at any time. Your DataModel:BindToClose call backs will still be run before the server shuts down.

Will teleporting my players out of the server take them to a server without a maintenance restart scheduled?

  • Yes, if you use TeleportService:TeleportAsync to teleport players to the place, the players will be placed into a server without an impending restart. However, if you teleport players to a specific instance that is scheduled for a maintenance or developer update restart, then they may be force migrated to a new server when the server shutdown occurs.
93 Likes

This topic was automatically opened after 11 minutes.

This is a really valuable addition, especially for experiences with long-running sessions or persistent progression. Having infrastructure maintenance exposed through the same ServerRestartScheduled API keeps implementation straightforward while giving developers enough context to differentiate between platform maintenance and developer-initiated restarts.

The decision to route maintenance through the existing callback rather than introducing another event also keeps the API surface clean. Being able to proactively save state, finish a round, or seamlessly migrate players should significantly reduce the player impact during planned maintenance.

One thing I’d be interested in seeing over time is additional telemetry around restart frequency or maintenance notifications, as that could help developers better understand how often these flows are exercised in production and validate their handling logic.

Overall, this feels like a thoughtful platform reliability improvement that should improve the experience for both developers and players.

4 Likes

I support the initiative to give developers the tools to handle rare cases like shutdowns, as these events create that confused WHAT? moment for players when they do happen. Telling players what is actually happening and redirecting them to a new server is not only great for retention, but also a good way to eliminate that confusing experience.

Just like many theme parks have their own custom messages when an attraction gets stuck, we can now do the same with our games through a provided function.

This may be a very rare and niche question, but does this call happen on every server that is closing, including servers that are shutting down due to extreme emergencies?

4 Likes

Roblox is Saved!

Next day:

Roblox is cooked

Bro, kreekcraft :sob:

In all honestly though, peak update, finally, no more crashouts because of roblox maintenance

2 Likes

@loleris Could I simply use this callback function & then use Profile:Save() using ProfileStore? The module already has BindToClose implemented but it is subject to 30 seconds…

hello
what is the default behavior in case of shutdown, when there are still players in the server?
will Roblox teleport the remaining players to another instance of the same game?

Hi! Yes that is correct. Roblox will migrate players to another instance of the same game without any pending maintenance restarts. However, this may be done any time, which can disrupt player in the middle of gameplay. We recommend using the ServerRestartScheduled API to manually move players over at more convenient time for your game.

4 Likes

I added ServerRestartScheduled into my game (KNIFE DUELS | Play on Roblox)!

Your answer on ‘Will teleporting my players out of the server take them to a server without a maintenance restart scheduled?’ does not seem to line up with what happened to some of the servers in my game. It currently uses TeleportAsync, but it takes them to the exact same server that they came from! This causes the players to get into an infinite loop of teleporting. It does not teleport to a specific instance, just the place id.

For now I will have to take out the teleport for maintenance restarts since this is obviously a huge bug.

Any idea how this could happen?