Apply a navigationStyle based on horizontalSizeClass for the root NavigationView

On app launch, I want to get the horizontalSizeClass and based on if it's compact or regular, apply a navigation style to my root navigation view like so:

import SwiftUI

@main
struct MyApp: App {
    @Environment(\.horizontalSizeClass) var sizeClass

    var body: some Scene {
        WindowGroup {
            if sizeClass == .compact {
                NavigationView {
                    Text("Compact size class inside stack navigation style")
                }
                .navigationViewStyle(StackNavigationViewStyle())
            } else {
                NavigationView {
                    Text("Regular size class inside default navigation style")
                }
            }
        }
    }
}

However, sizeClass always returns nil in this case.

How do I

  1. determine if the horizontal size class is compact or regular on the root view, and
  2. make the navigation style adapt to the size class any time it changes

My app is targeting iOS 14 for both iPhone and iPad.

Any help or a different approach to adapt for size class changes for the whole app is much appreciated.