Unsynchronized Feedback Timing

Id UnsynchronizedFeedbackTiming
Summary Feedback is delayed or triggered too early relative to the visible update
Severity N/A
Category Assistive Technologies / Dynamic Feedback
Affects Kotlin and Java files
Implementation Manual testing – automatic detection of incorrect timing of accessibility announcements is challenging because it requires simulating real user navigation, observing UI transitions, and listening to actual screen reader output.

Symptom

Screen readers announce UI states that don't accurately reflect the current or intended screen state due to timing issues, race conditions, or premature announcements during transitions.

Rationale

Provides misleading information to assistive technology users about screen content and functionality, leading to confusion and potentially incorrect user actions based on inaccurate state information.

Example

Kotlin Code

class PostListActivity : AppCompatActivity() {
    private lateinit var statusText: TextView
    private lateinit var postList: RecyclerView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        loadPosts() // Loading posts when activity starts
    }

    private fun loadPosts() {
        // Announces "No posts available" before knowing if posts exist
        statusText.text = "No posts available"
        statusText.announceForAccessibility("No posts available")

        // Correction: Announce empty state only after knowing there are no posts
        // fetchPostsAsync { posts ->
            // if (posts.isEmpty()) {
            //     statusText.text = "No posts available"
            //     statusText.announceForAccessibility("No posts available")
            // }
            // else { ... }
        }
    }
}

GitHub issues under this tag