Have a fullSizeContentView NSWindow taking the size of a SwiftUI view

I want an NSWindow with fullSizeContentView to take the exact size of a SwiftUI view that has an "intrinsic" content size. I know I could use a frame at the top with a fixed size and that works but I can't do that since the content is dynamic. I want SwiftUI to compute the width and height of the content view and to have the window size to be exactly the size of the view. How can I do that? This is a Playground snippet that runs in Xcode 14.1.

import AppKit
import SwiftUI

class MyWindow: NSWindow {
    override func setFrame(_ frameRect: NSRect, display flag: Bool) {
        print("\(Date().timeIntervalSince1970) setFrame called \(frameRect)")
        super.setFrame(frameRect, display: flag)
    }
}

let window = MyWindow()

window.styleMask = [
    .titled,
    .closable,
    .resizable,
    .fullSizeContentView
]

window.toolbar = nil

window.titlebarAppearsTransparent = true
window.titleVisibility = .hidden
window.isMovable = true
window.isMovableByWindowBackground = true
window.standardWindowButton(.closeButton)?.isHidden = false
window.standardWindowButton(.miniaturizeButton)?.isHidden = true
window.standardWindowButton(.zoomButton)?.isHidden = true

print("\(Date().timeIntervalSince1970) Before content \(window.frame)")
window.contentView = NSHostingView(rootView: ContentView())
print("\(Date().timeIntervalSince1970) After setting content \(window.frame)")

window.makeKeyAndOrderFront(nil)

print("\(Date().timeIntervalSince1970) After makeKeyAndOrderFront \(window.frame)")

DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
    print("\(Date().timeIntervalSince1970) After 1 second \(window.frame)")
}

struct ContentView: View {
    var body: some View {
        Text("Hello")
            .font(.system(size: 200))
            .background(.blue)
            .fixedSize()
            .ignoresSafeArea()
    }
}

The problem is that it leaves some space at the end. Why is this code behaving like that?  It prints this:

1674086812.362426 setFrame called (100.0, 100.0, 100.0, 100.0)
1674086812.363435 Before content (100.0, 100.0, 100.0, 100.0)
1674086812.373186 setFrame called (100.0, -63.0, 431.0, 263.0)
1674086812.3741732 After setting content (100.0, -63.0, 431.0, 263.0)
1674086812.374618 setFrame called (100.0, 85.0, 431.0, 263.0)
1674086812.375651 After makeKeyAndOrderFront (100.0, 85.0, 431.0, 263.0)
1674086812.4359 setFrame called (100.0, 57.0, 431.0, 291.0)
1674086813.41998 After 1 second (198.0, 99.0, 431.0, 291.0)

Why is SwiftUI setting the frame with a different size after showing it?

This is how it looks.

Have a fullSizeContentView NSWindow taking the size of a SwiftUI view
 
 
Q