import SwiftUI

struct SizeKey: PreferenceKey {
    static func reduce(value: inout CGSize?, nextValue: () -> CGSize?) {
        value = value ?? nextValue()
    }
}
struct ContentView: View {
    @State var width: CGFloat? = nil
    var body: some View {
        let button = Text("Neu Starten")
            .fixedSize()
            .padding(10)
            .background(GeometryReader { proxy in
                Color.clear.preference(key: SizeKey.self, value: proxy.size)
            })
            .frame(width: width, height: width)
            .background(
                Circle()
                    .fill(Color.blue)
            )
            .onPreferenceChange(SizeKey.self) { size in
                self.width = size?.width
            }

        return button.mirror()
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}