Vulcan 2.12 enhances the generated code for the cell views of LazyVGrid and LazyHGrid, utilizing modern APIs to minimize boilerplate code, create dynamic interfaces, and leverage native styling.

GroupBox and Label in grid cells
Grid cells now use the GroupBox and Label views to take advantage of native styling and spacing, reducing the need for explicit layout code and view modifiers.
struct Cell: View {
let headline: String
let caption: String
let systemImage: String
var body: some View {
GroupBox {
Text(caption)
.font(.caption)
.multilineTextAlignment(.center)
} label: {
Label {
Text(headline)
} icon: {
Image(systemName: systemImage)
.circular()
}
.labelStyle(.gridCell)
}
}
}
The GroupBox layout is controlled by a style that can easily be customized or replaced.
struct GridCellLabelStyle: LabelStyle {
func makeBody(configuration: Configuration) -> some View {
VStack(alignment: .center, spacing: 8.0) {
configuration.icon
configuration.title
}
.frame(maxWidth: .infinity)
}
}
extension LabelStyle where Self == GridCellLabelStyle {
static var gridCell: GridCellLabelStyle {
GridCellLabelStyle()
}
}
Updated Xcode project format
Exported projects now use the Xcode 26 format, replacing groups with folders.