List does not move the view into focused element, when changing it with a keyboard

Here is a simple main.swift file of a macOS app:

import SwiftUI

struct ContentView: View {
    @State private var selectedItem = 0
    @FocusState private var isListFocused: Bool

    var body: some View {
        List(0..<40, id: \.self, selection: $selectedItem) { index in
            Text("\(index)")
                .padding()
                .focusable()
        }
        .focused($isListFocused)
        .onAppear {
            isListFocused = true
        }
    }
}

func createAppWindow() {
    let window = NSWindow(
        contentRect: .zero,
        styleMask: [.titled],
        backing: .buffered,
        defer: false
    )
    window.contentViewController = NSHostingController(rootView: ContentView())
    window.setContentSize(NSSize(width: 759, height: 300))
    window.center()
    window.makeKeyAndOrderFront(nil)
}

class AppDelegate: NSObject, NSApplicationDelegate {
    
    func applicationDidFinishLaunching(_ notification: Notification) {
        createAppWindow()
    }
}

let delegate = AppDelegate()
NSApplication.shared.delegate = delegate
NSApplication.shared.run()

Try to move the focus with a keyboard slowly as shown on the GIF attached and you'll see that the focus items don't sit in a List's view.

NSTableView from AppKit works just as expected, while List from SwiftUI does this weird "cropping".

Here is the code for the NSTableView:

import SwiftUI

struct NSTableViewWrapper: NSViewRepresentable {
    class Coordinator: NSObject, NSTableViewDataSource, NSTableViewDelegate {
        var parent: NSTableViewWrapper

        init(parent: NSTableViewWrapper) {
            self.parent = parent
        }

        func numberOfRows(in tableView: NSTableView) -> Int {
            return parent.data.count
        }

        func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
            let cell = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier("Cell"), owner: nil) as? NSTextField
                ?? NSTextField(labelWithString: "")

            cell.identifier = NSUserInterfaceItemIdentifier("Cell")
            cell.stringValue = parent.data[row]
            return cell
        }
    }

    var data: [String]

    func makeCoordinator() -> Coordinator {
        return Coordinator(parent: self)
    }

    func makeNSView(context: Context) -> NSScrollView {
        let scrollView = NSScrollView()
        let tableView = NSTableView()

        let column = NSTableColumn(identifier: NSUserInterfaceItemIdentifier("Column"))
        column.title = "Items"
        column.width = 200
        tableView.addTableColumn(column)

        tableView.delegate = context.coordinator
        tableView.dataSource = context.coordinator

        tableView.headerView = nil
        tableView.rowHeight = 50
        
        
        tableView.style = .plain

        scrollView.documentView = tableView
        scrollView.hasVerticalScroller = true

        return scrollView
    }

    func updateNSView(_ nsView: NSScrollView, context: Context) {
        (nsView.documentView as? NSTableView)?.reloadData()
    }
}

struct ContentView: View {
    let items = 0..<40
    let itemsSteing = Array(0..<40).map(\.description)
    var body: some View {
        NSTableViewWrapper(data: itemsSteing)
    }
}

func createAppWindow() {
    let window = NSWindow(
        contentRect: .zero,
        styleMask: [.titled],
        backing: .buffered,
        defer: false
    )
    window.title = "NSTableView from AppKit"
    window.contentViewController = NSHostingController(rootView: ContentView())
    window.setContentSize(NSSize(width: 759, height: 300))
    window.center()
    window.makeKeyAndOrderFront(nil)
}

class AppDelegate: NSObject, NSApplicationDelegate {
    
    func applicationDidFinishLaunching(_ notification: Notification) {
        createAppWindow()
    }
}

let delegate = AppDelegate()
NSApplication.shared.delegate = delegate
NSApplication.shared.run()

Here is the NSTableView:

List does not move the view into focused element, when changing it with a keyboard
 
 
Q