Back to Swift Reference Ask BeeAI
📱 SwiftUIIntermediateiOS 17+ for @Observable in environment
Environment & Dependency Injection
Share models and system values down the view tree without passing them through every initializer.
Read system values like colorScheme, dismiss or modelContext with @Environment(\.key).
Inject your own @Observable models with .environment(model) and read them with @Environment(Model.self).
environment.swift
1@Observable
2final class Session {
3 var userName = "Guest"
4}
5
6@main
7struct BeeApp: App {
8 @State private var session = Session()
9
10 var body: some Scene {
11 WindowGroup {
12 ProfileView()
13 .environment(session)
14 }
15 }
16}
17
18struct ProfileView: View {
19 @Environment(Session.self) private var session
20 @Environment(\.dismiss) private var dismiss
21
22 var body: some View {
23 Text("Hi, \(session.userName)")
24 }
25}Common pitfalls
- Reading an environment object that was never injected crashes at runtime — inject it in previews too.
Still unclear? Ask BeeAI about Environment & Dependency Injection.
Get a tailored explanation, or paste your own code for a Swift 6 review. Free members get daily questions — Pro is unlimited.
Related topics
Become a Founding Pro member: unlimited BeeAI, upcoming Swift paths and every new reference entry first.
See Pro Plans