diff --git a/osu.Game/Online/Spectator/FrameHeader.cs b/osu.Game/Online/Spectator/FrameHeader.cs
index 45f920e65b..e0fd1f0682 100644
--- a/osu.Game/Online/Spectator/FrameHeader.cs
+++ b/osu.Game/Online/Spectator/FrameHeader.cs
@@ -3,8 +3,10 @@
using System;
using System.Collections.Generic;
+using System.Linq;
using MessagePack;
using Newtonsoft.Json;
+using osu.Game.Online.API;
using osu.Game.Rulesets.Scoring;
using osu.Game.Scoring;
@@ -56,6 +58,17 @@ namespace osu.Game.Online.Spectator
[Key(6)]
public DateTimeOffset ReceivedTime { get; set; }
+ ///
+ /// The set of mods currently active.
+ ///
+ ///
+ /// Nullable for backwards compatibility with older clients
+ /// (these structures are also used server-side, and will be used as marker that the data isn't there).
+ /// can be made non-nullable 20250407
+ ///
+ [Key(7)]
+ public APIMod[]? Mods { get; set; }
+
///
/// Construct header summary information from a point-in-time reference to a score which is actively being played.
///
@@ -69,6 +82,7 @@ namespace osu.Game.Online.Spectator
MaxCombo = score.MaxCombo;
// copy for safety
Statistics = new Dictionary(score.Statistics);
+ Mods = score.APIMods.ToArray();
ScoreProcessorStatistics = statistics;
}