diff --git a/Examples/xx-messenger/.swiftpm/xcode/xcshareddata/xcschemes/GroupFeature.xcscheme b/Examples/xx-messenger/.swiftpm/xcode/xcshareddata/xcschemes/GroupFeature.xcscheme
new file mode 100644
index 0000000000000000000000000000000000000000..a2c612b798714cdc30572dad61ce6b5615e7f374
--- /dev/null
+++ b/Examples/xx-messenger/.swiftpm/xcode/xcshareddata/xcschemes/GroupFeature.xcscheme
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+   LastUpgradeVersion = "1410"
+   version = "1.3">
+   <BuildAction
+      parallelizeBuildables = "YES"
+      buildImplicitDependencies = "YES">
+      <BuildActionEntries>
+         <BuildActionEntry
+            buildForTesting = "YES"
+            buildForRunning = "YES"
+            buildForProfiling = "YES"
+            buildForArchiving = "YES"
+            buildForAnalyzing = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "GroupFeature"
+               BuildableName = "GroupFeature"
+               BlueprintName = "GroupFeature"
+               ReferencedContainer = "container:">
+            </BuildableReference>
+         </BuildActionEntry>
+      </BuildActionEntries>
+   </BuildAction>
+   <TestAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      shouldUseLaunchSchemeArgsEnv = "YES"
+      codeCoverageEnabled = "YES">
+      <Testables>
+         <TestableReference
+            skipped = "NO">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "GroupFeatureTests"
+               BuildableName = "GroupFeatureTests"
+               BlueprintName = "GroupFeatureTests"
+               ReferencedContainer = "container:">
+            </BuildableReference>
+         </TestableReference>
+      </Testables>
+   </TestAction>
+   <LaunchAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      launchStyle = "0"
+      useCustomWorkingDirectory = "NO"
+      ignoresPersistentStateOnLaunch = "NO"
+      debugDocumentVersioning = "YES"
+      debugServiceExtension = "internal"
+      allowLocationSimulation = "YES">
+   </LaunchAction>
+   <ProfileAction
+      buildConfiguration = "Release"
+      shouldUseLaunchSchemeArgsEnv = "YES"
+      savedToolIdentifier = ""
+      useCustomWorkingDirectory = "NO"
+      debugDocumentVersioning = "YES">
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "GroupFeature"
+            BuildableName = "GroupFeature"
+            BlueprintName = "GroupFeature"
+            ReferencedContainer = "container:">
+         </BuildableReference>
+      </MacroExpansion>
+   </ProfileAction>
+   <AnalyzeAction
+      buildConfiguration = "Debug">
+   </AnalyzeAction>
+   <ArchiveAction
+      buildConfiguration = "Release"
+      revealArchiveInOrganizer = "YES">
+   </ArchiveAction>
+</Scheme>
diff --git a/Examples/xx-messenger/Package.swift b/Examples/xx-messenger/Package.swift
index f4fa8cab5742fa457d07a1761ac84022860dfd71..0a4226fd59e84049162b4e70be87ee348016b533 100644
--- a/Examples/xx-messenger/Package.swift
+++ b/Examples/xx-messenger/Package.swift
@@ -22,6 +22,7 @@ let package = Package(
     .library(name: "ContactFeature", targets: ["ContactFeature"]),
     .library(name: "ContactLookupFeature", targets: ["ContactLookupFeature"]),
     .library(name: "ContactsFeature", targets: ["ContactsFeature"]),
+    .library(name: "GroupFeature", targets: ["GroupFeature"]),
     .library(name: "GroupsFeature", targets: ["GroupsFeature"]),
     .library(name: "HomeFeature", targets: ["HomeFeature"]),
     .library(name: "MyContactFeature", targets: ["MyContactFeature"]),
@@ -262,6 +263,26 @@ let package = Package(
       ],
       swiftSettings: swiftSettings
     ),
+    .target(
+      name: "GroupFeature",
+      dependencies: [
+        .target(name: "AppCore"),
+        .product(name: "ComposableArchitecture", package: "swift-composable-architecture"),
+        .product(name: "ComposablePresentation", package: "swift-composable-presentation"),
+        .product(name: "XXClient", package: "elixxir-dapps-sdk-swift"),
+        .product(name: "XXMessengerClient", package: "elixxir-dapps-sdk-swift"),
+        .product(name: "XXModels", package: "client-ios-db"),
+      ],
+      swiftSettings: swiftSettings
+    ),
+    .testTarget(
+      name: "GroupFeatureTests",
+      dependencies: [
+        .target(name: "GroupFeature"),
+        .product(name: "CustomDump", package: "swift-custom-dump"),
+      ],
+      swiftSettings: swiftSettings
+    ),
     .target(
       name: "GroupsFeature",
       dependencies: [
diff --git a/Examples/xx-messenger/Project/XXMessenger.xcodeproj/xcshareddata/xcschemes/XXMessenger.xcscheme b/Examples/xx-messenger/Project/XXMessenger.xcodeproj/xcshareddata/xcschemes/XXMessenger.xcscheme
index 45d9c2cb833a9f0bda12be9ec2b5b7bf1839b9b7..5cd339fe12651b68629b2b533f8add948a6211a6 100644
--- a/Examples/xx-messenger/Project/XXMessenger.xcodeproj/xcshareddata/xcschemes/XXMessenger.xcscheme
+++ b/Examples/xx-messenger/Project/XXMessenger.xcodeproj/xcshareddata/xcschemes/XXMessenger.xcscheme
@@ -119,6 +119,16 @@
                ReferencedContainer = "container:..">
             </BuildableReference>
          </TestableReference>
+         <TestableReference
+            skipped = "NO">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "GroupFeatureTests"
+               BuildableName = "GroupFeatureTests"
+               BlueprintName = "GroupFeatureTests"
+               ReferencedContainer = "container:..">
+            </BuildableReference>
+         </TestableReference>
          <TestableReference
             skipped = "NO">
             <BuildableReference
diff --git a/Examples/xx-messenger/Sources/GroupFeature/GroupComponent.swift b/Examples/xx-messenger/Sources/GroupFeature/GroupComponent.swift
new file mode 100644
index 0000000000000000000000000000000000000000..5c2b777330b660ad7266d6a366ea3c0cc6be9609
--- /dev/null
+++ b/Examples/xx-messenger/Sources/GroupFeature/GroupComponent.swift
@@ -0,0 +1,29 @@
+import ComposableArchitecture
+import XXModels
+
+public struct GroupComponent: ReducerProtocol {
+  public struct State: Equatable {
+    public init(
+      group: XXModels.Group
+    ) {
+      self.group = group
+    }
+
+    public var group: XXModels.Group
+  }
+
+  public enum Action: Equatable {
+    case start
+  }
+
+  public init() {}
+
+  public var body: some ReducerProtocol<State, Action> {
+    Reduce { state, action in
+      switch action {
+      case .start:
+        return .none
+      }
+    }
+  }
+}
diff --git a/Examples/xx-messenger/Sources/GroupFeature/GroupView.swift b/Examples/xx-messenger/Sources/GroupFeature/GroupView.swift
new file mode 100644
index 0000000000000000000000000000000000000000..95d24a1f5555da0e5d0faa3b7932ae2c6333dbc7
--- /dev/null
+++ b/Examples/xx-messenger/Sources/GroupFeature/GroupView.swift
@@ -0,0 +1,57 @@
+import AppCore
+import ComposableArchitecture
+import SwiftUI
+import XXModels
+
+public struct GroupView: View {
+  public typealias Component = GroupComponent
+  typealias ViewStore = ComposableArchitecture.ViewStore<ViewState, Component.Action>
+
+  public init(store: StoreOf<Component>) {
+    self.store = store
+  }
+
+  let store: StoreOf<Component>
+
+  struct ViewState: Equatable {
+    init(state: Component.State) {
+      group = state.group
+    }
+
+    var group: XXModels.Group
+  }
+
+  public var body: some View {
+    WithViewStore(store, observe: ViewState.init) { viewStore in
+      Form {
+        Section("Group name") {
+          Text(viewStore.group.name)
+        }
+      }
+      .navigationTitle("Group")
+      .task { viewStore.send(.start) }
+    }
+  }
+}
+
+#if DEBUG
+public struct GroupView_Previews: PreviewProvider {
+  public static var previews: some View {
+    NavigationView {
+      GroupView(store: Store(
+        initialState: GroupComponent.State(
+          group: .init(
+            id: "group-id".data(using: .utf8)!,
+            name: "Preview group",
+            leaderId: "group-leader-id".data(using: .utf8)!,
+            createdAt: Date(timeIntervalSince1970: TimeInterval(86_400)),
+            authStatus: .participating,
+            serialized: "group-serialized".data(using: .utf8)!
+          )
+        ),
+        reducer: EmptyReducer()
+      ))
+    }
+  }
+}
+#endif
diff --git a/Examples/xx-messenger/Tests/GroupFeatureTests/GroupComponentTests.swift b/Examples/xx-messenger/Tests/GroupFeatureTests/GroupComponentTests.swift
new file mode 100644
index 0000000000000000000000000000000000000000..9fe423d526ba53f970b647020061c85d77a8b8a3
--- /dev/null
+++ b/Examples/xx-messenger/Tests/GroupFeatureTests/GroupComponentTests.swift
@@ -0,0 +1,30 @@
+import ComposableArchitecture
+import XCTest
+import XXModels
+@testable import GroupFeature
+
+final class GroupComponentTests: XCTestCase {
+  func testStart() {
+    let store = TestStore(
+      initialState: GroupComponent.State(
+        group: .stub()
+      ),
+      reducer: GroupComponent()
+    )
+
+    store.send(.start)
+  }
+}
+
+private extension XXModels.Group {
+  static func stub() -> XXModels.Group {
+    XXModels.Group(
+      id: "group-id".data(using: .utf8)!,
+      name: "Group name",
+      leaderId: "group-leader-id".data(using: .utf8)!,
+      createdAt: Date(timeIntervalSince1970: TimeInterval(86_400)),
+      authStatus: .participating,
+      serialized: "group-serialized".data(using: .utf8)!
+    )
+  }
+}