Are you using @Environment(\.widgetRenderingMode) var widgetRenderingMode already? If not, add that to your widget view, and change how the widget looks depending on the various values of widgetRenderingMode, i.e.:
var body: some View {
ZStack {
switch renderingMode {
case .fullColor:
Text("Full color")
case .accented:
ZStack {
Circle(...)
VStack {
Text("Accented")
.widgetAccentable()
Text("Normal")
}
}
case .vibrant:
Text("Full color")
default:
...
}
}
}
Also, on images, there's a modifier: .widgetAccentedRenderingMode() with options like .accentedDesaturated. Take a look at how each of those values affects your widget, and you might find out the right combination that works in each of the various Home Screen modes. Note that this is only available from iOS 18 onwards.
Also note (from the dev documentation) if the Image is a subview for a group that has widgetAccentable(true) applied, this modifier may conflict.
It's quicker to check the various looks in Xcode previews than it is to build and deploy to an iPhone and customise the Home Screen each time, just to save you some time.