diff --git a/Examples/xx-messenger/Package.swift b/Examples/xx-messenger/Package.swift
index 0a4226fd59e84049162b4e70be87ee348016b533..2c22609f63e8b057bf780e2c47305c76f4f6c634 100644
--- a/Examples/xx-messenger/Package.swift
+++ b/Examples/xx-messenger/Package.swift
@@ -287,6 +287,7 @@ let package = Package(
       name: "GroupsFeature",
       dependencies: [
         .target(name: "AppCore"),
+        .target(name: "GroupFeature"),
         .target(name: "NewGroupFeature"),
         .product(name: "ComposableArchitecture", package: "swift-composable-architecture"),
         .product(name: "ComposablePresentation", package: "swift-composable-presentation"),
diff --git a/Examples/xx-messenger/Sources/GroupsFeature/GroupsComponent.swift b/Examples/xx-messenger/Sources/GroupsFeature/GroupsComponent.swift
index a5f3077db275e5a9cf51d6a9ac34f670d9a0e0f4..0a22359f14e2385fc4c7bbce96c5b461e1a97ceb 100644
--- a/Examples/xx-messenger/Sources/GroupsFeature/GroupsComponent.swift
+++ b/Examples/xx-messenger/Sources/GroupsFeature/GroupsComponent.swift
@@ -2,6 +2,7 @@ import AppCore
 import ComposableArchitecture
 import ComposablePresentation
 import Foundation
+import GroupFeature
 import NewGroupFeature
 import XXModels
 
@@ -9,23 +10,28 @@ public struct GroupsComponent: ReducerProtocol {
   public struct State: Equatable {
     public init(
       groups: IdentifiedArrayOf<Group> = [],
-      newGroup: NewGroupComponent.State? = nil
+      newGroup: NewGroupComponent.State? = nil,
+      group: GroupComponent.State? = nil
     ) {
       self.groups = groups
       self.newGroup = newGroup
+      self.group = group
     }
 
     public var groups: IdentifiedArrayOf<XXModels.Group> = []
     public var newGroup: NewGroupComponent.State?
+    public var group: GroupComponent.State?
   }
 
   public enum Action: Equatable {
     case start
     case didFetchGroups([XXModels.Group])
     case didSelectGroup(XXModels.Group)
+    case didDismissGroup
     case newGroupButtonTapped
     case newGroupDismissed
     case newGroup(NewGroupComponent.Action)
+    case group(GroupComponent.Action)
   }
 
   public init() {}
@@ -51,7 +57,12 @@ public struct GroupsComponent: ReducerProtocol {
         state.groups = IdentifiedArray(uniqueElements: groups)
         return .none
 
-      case .didSelectGroup(_):
+      case .didSelectGroup(let group):
+        state.group = GroupComponent.State(group: group)
+        return .none
+
+      case .didDismissGroup:
+        state.group = nil
         return .none
 
       case .newGroupButtonTapped:
@@ -66,7 +77,7 @@ public struct GroupsComponent: ReducerProtocol {
         state.newGroup = nil
         return .none
 
-      case .newGroup(_):
+      case .newGroup(_), .group(_):
         return .none
       }
     }
@@ -76,5 +87,11 @@ public struct GroupsComponent: ReducerProtocol {
       action: /Action.newGroup,
       presented: { NewGroupComponent() }
     )
+    .presenting(
+      state: .keyPath(\.group),
+      id: .notNil(),
+      action: /Action.group,
+      presented: { GroupComponent() }
+    )
   }
 }
diff --git a/Examples/xx-messenger/Sources/GroupsFeature/GroupsView.swift b/Examples/xx-messenger/Sources/GroupsFeature/GroupsView.swift
index 44c38ce99d8b1f418b896970c789f8aa8ac5e113..1391f6d91d2b23b62c0da579c410cd9213e6af54 100644
--- a/Examples/xx-messenger/Sources/GroupsFeature/GroupsView.swift
+++ b/Examples/xx-messenger/Sources/GroupsFeature/GroupsView.swift
@@ -1,6 +1,7 @@
 import AppCore
 import ComposableArchitecture
 import ComposablePresentation
+import GroupFeature
 import NewGroupFeature
 import SwiftUI
 import XXModels
@@ -41,6 +42,14 @@ public struct GroupsView: View {
         onDeactivate: { viewStore.send(.newGroupDismissed) },
         destination: NewGroupView.init
       ))
+      .background(NavigationLinkWithStore(
+        store.scope(
+          state: \.group,
+          action: Component.Action.group
+        ),
+        onDeactivate: { viewStore.send(.didDismissGroup) },
+        destination: GroupView.init
+      ))
       .task { viewStore.send(.start) }
     }
   }
diff --git a/Examples/xx-messenger/Tests/GroupsFeatureTests/GroupsComponentTests.swift b/Examples/xx-messenger/Tests/GroupsFeatureTests/GroupsComponentTests.swift
index f8b06a183149a674542e9d600433084e496002d2..49778aab8bd2a8bbf8df8eed006054bba8a0cec1 100644
--- a/Examples/xx-messenger/Tests/GroupsFeatureTests/GroupsComponentTests.swift
+++ b/Examples/xx-messenger/Tests/GroupsFeatureTests/GroupsComponentTests.swift
@@ -1,6 +1,7 @@
 import Combine
 import ComposableArchitecture
 import CustomDump
+import GroupFeature
 import NewGroupFeature
 import XCTest
 import XXModels
@@ -72,7 +73,29 @@ final class GroupsComponentTests: XCTestCase {
       reducer: GroupsComponent()
     )
 
-    store.send(.didSelectGroup(.stub(2)))
+    store.send(.didSelectGroup(.stub(2))) {
+      $0.group = GroupComponent.State(group: .stub(2))
+    }
+  }
+
+  func testDismissGroup() {
+    let store = TestStore(
+      initialState: GroupsComponent.State(
+        groups: IdentifiedArray(uniqueElements: [
+          .stub(1),
+          .stub(2),
+          .stub(3),
+        ]),
+        group: GroupComponent.State(
+          group: .stub(2)
+        )
+      ),
+      reducer: GroupsComponent()
+    )
+
+    store.send(.didDismissGroup) {
+      $0.group = nil
+    }
   }
 
   func testPresentNewGroup() {