android / android/nowinandroid

AppState Class Contradicts the definition in the official Guide to App Architecture Documentation

Open
#1,973 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Kotlin
Stars
21.8k
Forks
4.6k
Avg merge
19h 20m
Merged PRs (30d)
2

Description

I noticed the [StateHolder guide](https://developer.android.com/topic/architecture/ui-layer/stateholders?utm_source=chatgpt.com)
describes plain class state holders as UI-only, without business logic. But in the Now in Android code, NiaAppState:

directly references UserNewsResourceRepository, NetworkMonitor, and TimeZoneMonitor (i.e. data layer)

computes derived state related to “unread resources” (some business logic)

is instantiated via remember, not through a ViewModel

So NiaAppState is not a pure “plain class state holder” per the guide. It behaves more like an app-level UI coordinator / state orchestrator, combining UI logic with lightweight access to domain data for navigation and cross-feature state.

Could you clarify:

1. Was NiaAppState deliberately designed this way (blending data and UI logic) for sample simplicity or is there another architectural reason?

2. In your view, should some of the data access / business-logic portions be moved to a ViewModel or domain layer instead?

I can also propose a stricter refactoring version that aligns more closely with the guide’s architecture!

Contributor guide

Open the contributing guide

Research direction

Start by reading the StateHolder guide and the NiaAppState entry point mentioned in the issue, along with its references to UserNewsResourceRepository, NetworkMonitor, and TimeZoneMonitor. Compare the implementation with the guide and document whether the current design is intentional; done requires a decided architectural direction, not just a code change.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, kotlin
Domain
mobile
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.