So far, what I have found to work best is to create a ZStack at the top of the ContentView body and have the first layer a Color, that ignores the safe area. Apple defines a Color as "a late-binding token", whatever that is, but it behaves similar to any other View.
struct ContentView: View {
var body: some View {
ZStack {
Color.red
.edgesIgnoringSafeArea(.all)
/// Your Inner View content goes here.
VStack {
Text("Hello")
} // VStack
} // ZStack
} // body View
} // ContentView
Note: Be careful about what is inside the Inner View because it can easily expand to fill the entire window thus overlaying your background color with white, etc. For example, the popular NavigationView tends to expand to the entire window and for me it tends to ignore its documented .background() setting. You can do the same ZStack strategy here too.
NavigationView {
ZStack {
Color.red.edgesIgnoringSafeArea(.all)
VStack {
Text("Hello")
} // VStack
} // ZStack
} // NavigationView