It depends on what you mean by “full part of the OS”.  From the perspective of a native app developer, you can opt into to HTTP/3 with a simple flag.  For example, when I run the code at the end of this response on macOS 13 it prints:
protocols: ["h3", "h3", "h3"]
status: 200
bytes: 13484
showing that all 3 transactions in this request ran over HTTP/3.
Note This test was inspired by the code in TN3102 HTTP/3 in your app.
Or are you asking specifically about Safari?
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
import Foundation
@main
class Main: NSObject, URLSessionTaskDelegate {
    func run() async throws {
        let config = URLSessionConfiguration.default
        config.requestCachePolicy = .reloadIgnoringLocalCacheData
        let session = URLSession(configuration: config, delegate: self, delegateQueue: .main)
        // We are leaking session here but that’s OK in this test project.
        print("will start task")
        let url = URL(string: "https://google.com")!
        var request = URLRequest(url: url, cachePolicy: .reloadIgnoringLocalCacheData, timeoutInterval: 60.0)
        request.assumesHTTP3Capable = true
        let (data, response) = try await session.data(for: request)
        print("status:", (response as! HTTPURLResponse).statusCode)
        print("bytes:", data.count)
    }
    
    func urlSession(_ session: URLSession, task: URLSessionTask, didFinishCollecting metrics: URLSessionTaskMetrics) {
        print("protocols:", metrics.transactionMetrics.map { $0.networkProtocolName ?? "-" })
    }
    static func main() async {
        let m = Main()
        do {
            try await m.run()
        } catch {
            print(error)
        }
    }
}