Groww

Interaction Design

01 November’25

Trading experience made 40% faster

Prelude

Prelude:

Placing orders is a core experience for any trader. A traders places 5-6 orders on average. Placing order as fast as possible is really important to make profits.


Old experience on Groww was a multi-step process, which made the app feel slow. Traders were frustated.


How can we reduce steps, save time, and create a perception of speed?

Placing orders is a core experience for any trader. A traders places 5-6 orders on average. Placing order as fast as possible is really important to make profits.


Old experience on Groww was a multi-step process, which made the app feel slow. Traders were frustated.

How can we reduce steps, save time, and create a perception of speed?

Impact

Impact:

Reducing steps by 50% (from 6 to 3) and load time by 40% (2400ms to 1450ms)


Solution now processes 6M+ daily orders from 1M+ users on Groww. Led end-to-end product development from design through prototyping to production launch

Reducing steps by 50% (from 6 to 3) and load time by 40% (2400ms to 1450ms)


Solution now processes 6M+ daily orders from 1M+ users on Groww. Led end-to-end product development from design through prototyping to production launch

Timeline

Timeline:

Took 3 weeks to design & 2 sprints to ship

Took 3 weeks to design & 2 sprints to ship

Team

Team:

PM - Aayush Sharma

Design - Rakshit Keswani

PM - Aayush Sharma

Design - Rakshit Keswani

Tools

Tools:

Sketching • Figma • ProtoPie

Sketching • Figma • ProtoPie

Problem

Problem

Stock prices change 5 times/ second. Every millisecond can mean the difference between profit and loss.

Stock prices change 5 times per second. Every millisecond of delay can mean the difference between profit and loss.

User comments

User comments:

Slowness made traders frustated & angry

Slowness made traders frustated & angry

UX issues

UX issues

  1. Too many steps 🐌

  2. Loaders created a slow perception ⏱️

  3. Broken transitions 🥲

  1. Too many steps 🐌

  2. Loaders created a slow perception ⏱️

  3. Broken transitions 🥲

→ Success screen comes everytime you place an order 🤔

→ Success screen comes everytime you place an order 🤔

Trading experience made 40% Faster

Too many steps (Before)

  1. Bottomsheet open

  2. Order card open

  3. Enter Qty

  4. Buy/Sell

  5. Success screen

  6. Done

  7. Positions(end)

Loaders → Slowness

Multiple transitions at once

SOLUTION

SOLUTION

Ordering module 2.0
Ordering module 2.0

Phase 1

Phase 1

Clean, smooth & elegant transitions

Fixing the transitions:

Before: Clicking 'Buy' closes the bottom sheet, then the order card appears in a separate step.




Now: The bottom sheet expands to full screen and the order card renders immediately.

Before: Clicking 'Buy' closes the bottom sheet, then the order card appears in a separate step.



Now: The bottom sheet expands to full screen and the order card renders immediately.

→ Transitions were designed, prototyped & shipped using Protopie ❤️

→ Transitions were designed, prototyped & shipped using Protopie ❤️

Bottom sheet → Order Card (Now)

Phase 2

Phase 2

Replaced success screen with a toast. For trader placing multiple orders, this helped save a lot of time.

Replaced success screen with a toast. For trader placing multiple orders, this helped save a lot of time.

Fun Fact: Each screen in a flow adds ~1200ms of rendering time. This is before accounting for any API calls on that screen. 🖥️

Fun Fact: Each screen in a flow adds ~1200ms of rendering time. This is before accounting for any API calls on that screen. 🖥️

Order is stuck → Pending State

Failed → Screen with actions

Phase 3

Use Case:

Traders can schedule multiple orders to trigger early in the morning, resulting in multiple toast notifications firing simultaneously.

Traders can schedule multiple orders to trigger early in the morning, resulting in multiple toast notifications firing simultaneously.

Handling multiple orders (Now)

Dark Mode

Fling to dismiss / 4 sec auto dismiss

Phase 4

(Future)

Future proofing:

Basket Order feature allows traders to execute up to 20 orders simultaneously.

Primarily used by options sellers trading multi-leg strategies.

Basket Order feature allows traders to execute up to 20 orders simultaneously.

Primarily used by options sellers trading multi-leg strategies.

This was out of scope for V1. But, can our framework support this requirement in the future?

This was out of scope for V1. But, can our framework support this requirement in the future?

Current flow has a success screen (Before)

Toast can handle this (Suggested)

Partially failed orders

Partially executed (1), Partially failed (2) & both (3)

3

2

1

UPGRADE

UPGRADE

Before vs Now

Before vs Now

Before 🥲

Now 🌼

SHIPPED IN AUGUST 2024

SHIPPED IN AUGUST 2024

Learnings post launch

Learnings post launch

  • Traders placing more than 20 orders in a day want an option to turn off this toast notification when orders are successful, which is the case 90% of the time. 🤔

  • Traders placing more than 20 orders in a day want an option to turn off this toast notification when orders are successful, which is the case 90% of the time. 🤔

  • Handling for multi orders was scoped down to V2. Traders started demanding the same experience for those flows as well. (Good thing our designs can handle that) 😊

  • Handling for multi orders was scoped down to V2. Traders started demanding the same experience for those flows as well. (Good thing our designs can handle that) 😊

  • The 4-second toast duration was too long. We reduced it to 2 seconds. ⏰

  • The 4-second toast duration was too long. We reduced it to 2 seconds. ⏰

IN PORTFOLIO DECK 😊

IN PORTFOLIO DECK 😊

What more was done

What more was done

Fin

Fin

🌼

🌼

Let's have coffee?

User avatar
User avatar
User avatar

Mail

rakshit.design@gmail.com

Phone number

+1 (206)-571-4546

Blogs

Designed by Rakshit. Built with Framer & Cursor

Let's have coffee?

Mail

rakshit.design@gmail.com

Phone number

+1 (206)-571-4546

Blogs

Designed by Rakshit. Built with Framer & Cursor