Name

Overview

Windows Search is a critical feature of the operating system, used by nearly a billion daily active users. Given it's crucial nature, most work that happens on search is scrutinized heavily, going through multiple release cycles before making it to production.


During my time on the Windows design team, I worked on core search functions like natural language parsing, semantic search and optimizations to address latency.

Name

Different variants of the search box depending on the type of query

I also worked on the monetization vertical within Windows Search, primarily focused on the content browsing experience powered by Bing. I helped design experiments to increase engagement and track growth.

Name
Name

The content browsing experience refreshed everyday similar to the Google Doodle

Another role that I carried out involved helping partners integrate their services into the search box. I worked with them through their process and educate them on the best practices before eventually reviewing their proposed designs.

Name

Different elements to help integrate Microsoft Store apps within the search box

Finally, one of my larger efforts involved incorporating motion design into the search box, as I was the only designer with the required skill. Apart from establishing the motion guidelines, I focused on improving overall UX by adding animations with the intent to make the search experience better. The following is one such case study:

Case study:

Creating a loading indicator

This motion design project taught me the complexities of shipping at scale, working with legacy code and arriving at a solution from an idea all the way to handing off code.

Name

Problem

Windows Search integrates various providers or data indexes such as local applications, locally indexed files, cloud storage files, web results etc. When a user searches, the engine attempts to find matches across all these providers and give a result. Now these providers have differing speeds, which results in certain providers (like applications, web results..) to be shown more than others because they come in quicker.

Name

Provider speeds were in the milliseconds range, which in practice is very hard for customers to decipher

We ran a research study that revealed our customers often experienced confusion when local documents did not appear immediately in search results. This frequently led users to abandon their search because their documents wouldn't show up immediately.


To improve this we brainstormed and one proposed solution I had was to implement a loading indicator when searches would take too long. This would inform users that the search was ongoing, and they could expect results to appear shortly.

We ran a research study that revealed our customers often experienced confusion when local documents did not appear immediately in search results. This frequently led users to abandon their search because their documents wouldn't show up immediately.


To improve this we brainstormed and one proposed solution I had was to implement a loading indicator when searches would take too long. This would inform users that the search was ongoing, and they could expect results to appear shortly.

We ran a research study that revealed our customers often experienced confusion when local documents did not appear immediately in search results. This frequently led users to abandon their search because their documents wouldn't show up immediately.


To improve this we brainstormed and one proposed solution I had was to implement a loading indicator when searches would take too long. This would inform users that the search was ongoing, and they could expect results to appear shortly.

Process

Initial exploration

I began by investigating the constraints of the search box, utilizing existing research materials and specifications provided by my PM. This gave me a clear understanding of what an initial attempt at a loader might be, looking at some commonly used paradigms.

My first idea was the shimmer effect, an animating placeholder that helps create an illusion of loading

Different variants of the shimmer I tried using speed and scale

My PM partner had asked if we could show to the user which provider was being searched at a given point in time. I considered using progressive disclosure of information to clearly indicate this without overwhelming the user.

This idea begins by displaying all the different providers, then drops down to show content as they finish loading.

At this point, I realized that search returned results in the milliseconds range, which suggests most of these animations that I shared above would be too fast to notice. The human eye generally requires about a second to register movement.

This concept accurately reflects the speed at while search returned results. You easily miss the loader at the bottom left corner and there is a noticeable stutter while loading.

Simplifying the approach

I dropped the idea of showing text and realized we needed something that was clearly visible in the millisecond range. The progress bar came to mind, as it is widely recognized by users and conveys a sense of loading without the need for text.

First version of the progress bar, common and effectively visible at higher load times

We preferred displaying the progress bar at the top edge because of the customer's attention went to Best Match usually. Now, I was looking at implementation details such as when to trigger the animation, how it would behave while a user is typing.

The progress bar is triggered only when the user completes typing "C-A-L" at the bottom left. A blue dot on the left of the file name also indicates which file loaded last.

Name

Multiple variants of the progress bar, experimenting with different thicknesses and padding from the edges

Solution

We had multiple reviews with our stakeholders and decided on the most subtle implementation keeping in line with the Windows 11 design principles. The final solution incorporated a few more tweaks and changes to the motion parameters to ensure it was both effective and non-intrusive.

Final Design: A refined top edge progress indicator that is subtle yet effective.

Name

Implementation Details: Specific parameters on when and how long the loader should be displayed.

The next step was to implement the design in code and fine-tune the timing to ensure it was smooth. I dedicated extra time to this task, looking at existing references and tried out different parameters to ensure that the animation ran smooth. I have shared the result below that can be viewed on codepen.

Learnings

This project reinforced the importance of subtle design solutions, even for large-scale problems. Working on this taught me invaluable lessons about cross-functional collaboration with product partners, design system leaders, and engineering teams, as well as the complexities involved with large-scale design implementation.