Page MenuHomePhabricator

[M] Show Skeleton and Loading Graphics While Hybrid Search Results Load
Open, MediumPublic2 Estimated Story Points

Description

User Story

As a reader using Hybrid Search, when my search is in progress, I want to see a clear loading state that reflects the type of results being fetched, so that I understand the app is working and don’t assume the search failed or stalled.

Description

When a user executes a search in the Hybrid Search experiment, display a skeleton loading state and lightweight graphics that indicate results are being retrieved.

The loading state should:

  • Acknowledge the user’s action immediately
  • Match the structure of the expected results layout
  • Avoid implying failure, empty results, or lack of coverage

This applies to both lexical and semantic retrieval paths.

Requirements

Trigger Conditions

  • User presses Enter / Search or taps a search suggestion
  • Hybrid Search request is initiated

Loading State Behavior

  • A skeleton UI is displayed while results are loading
  • Skeleton structure mirrors the final results layout:
    • Vertical placeholders for lexical results
    • Horizontal placeholders for semantic results (when applicable)
  • Loading graphics are neutral and non-distracting
  • No “no results” or error messaging is shown during loading

Transition to Results

  • Skeleton state is replaced immediately when results return
  • Partial loading states are handled gracefully (e.g., lexical returns before semantic)
  • If semantic retrieval times out, fallback behavior applies without exposing errors

Scope

  • Applies only to users in the Hybrid Search experiment
  • Control group retains existing loading behavior

Note: Skeletons should not include real text, images, or misleading placeholders. Accessibility considerations (e.g. reduced motion) should be respected.


Design:

Figma mockup

Gif highlighting behaviour:

skeleton-loading-example.gif (1×712 px, 871 KB)

Note: please use material design's skeleton loader https://m3.material.io/styles/motion/transitions/transition-patterns#b39a0641-1b44-4864-83f5-fac38e0bd94a - The Figma file was built using a custom component to represent the idea of a skeleton loader.


Copy and Layout: TBD

Event Timeline

JTannerWMF renamed this task from Show Skeleton and Loading Graphics While Hybrid Search Results Load to [M] Show Skeleton and Loading Graphics While Hybrid Search Results Load.Jan 6 2026, 9:54 PM
Dbrant set the point value for this task to 5.Jan 12 2026, 6:31 PM
JTannerWMF changed the point value for this task from 5 to 2.Tue, Jan 27, 5:26 PM
JTannerWMF triaged this task as Medium priority.Tue, Jan 27, 5:42 PM

Hi, @TLessa-WMF , this is ready for design review.

Please go to the feature branch
https://github.com/wikimedia/apps-android-wikipedia/pull/6221

Steps to download the APK
Click on "Checks" -> find "Android branch build" -> scroll down and find "Artifacts" -> Download the "app_alpha_release" file

To test this:

  1. Turn of developer settings
  2. In Developer Settings, search Hybrid, set 1 for the Hybrid Search test group (if needed), and enable hybridSearchEnabled to access the feature.
  3. Search any title and select it to see the skeleton loaders.

Tested! All good.
Also tested for accessibility as stated below. Working as expected.

Note: Skeletons should not include real text, images, or misleading placeholders. Accessibility considerations (e.g. reduced motion) should be respected.