Improve It — Google Finance, on mobile

October 2026

Stocks jump and drop for a reason. The chart never tells you which.

Catalyst puts the news behind big moves right on the chart. Drag your finger across it and the moments that matter explain themselves.

Mobile UIiOS + AndroidDesign systemConcept
Role
Product designer, UI
Platforms
iOS, Android
Tools
Figma: components, variants, auto layout, variables
Deliverables
Interactive prototype, design system, handoff specs

Try it

Drag across the chart

This is the working prototype. Switch platforms and themes, change the range, tap a marker, open a story.

Platform
Theme
  1. Drag across the line. The price above follows your finger.
  2. Slide onto a marker. It snaps, ticks, and a card shows what happened.
  3. Tap the card to open the full story in a sheet.
  4. Switch to 5Y. Crowded moments cluster into one marker.
  5. Keyboard: focus the chart, use arrows, Shift + arrow to jump events, Enter to open.

What you get today

A price and a date. That's it.

Hover a stock chart on Google Finance and you get a line telling you where you are. Nothing about why it fell off a cliff that week. Hover this recreation.

Halcyon Labs112.48 USD

Desktop chart, recreated. No context on any of the spikes.

So people go find out themselves

1Notice a big drop
→
2Leave the app
→
3Google "HLCN down why"
→
4Skim headlines from the wrong week
→
5Guess

The numbers

More people trade than ever. Few know why prices move.

1 in 5US stock trades are retail20.9% of volume, Q3 2025 · Bloomberg Intelligence
$308Bretail inflows into US stocks in 2025A record, up 14% on 2021 · Reuters
29%rely on social media for investing infoFINRA Foundation, 2024 NFCS
40%feel confident judging if financial info is accurateFINRA survey · the other 60% are guessing

Most of these people trade on their phones. The context they need already exists as news. It just lives in a different app than the chart.

Process

Lo-fi to hi-fi

Three states carried through every round: scrubbing, snapped to a moment, and the story open.

Scrub. Price swaps to the day under your finger. Line after the cursor dims.
Snap. Card sits above the finger so the thumb never covers it.
Read. Sheet holds the headline, the move, a "possibly related" note, and the source.
Scrub. Real type scale and spacing. No color yet, so hierarchy has to carry it.
Snap. Shape, not color, tells up from down. Triangles survive grayscale.
Read. Sheet order tested: headline first, then the move, then the caveat.
Scrub. Line takes the range's direction color. Past the cursor it dims.
Snap. Marker scales, a halo pulses, the device ticks once.
Read. Mini chart shows the days around the move so the drop has context.

Native on both

Same feature, built for each platform

One component spec, two native renderings. The behavior is shared. The controls, type, sheets and haptics follow each platform.

  • Type SF Pro, Dynamic Type
  • Range Segmented control
  • Sheet 12pt radius, grabber, detents
  • Nav Tab bar with labels
  • Haptic UISelectionFeedbackGenerator on snap
  • Type Roboto, M3 type scale
  • Range Filter chips
  • Sheet 28dp radius, drag handle
  • Nav Navigation bar, pill indicator
  • Haptic HapticFeedbackConstants.CLOCK_TICK on snap

Design system

Tokens first, then components

Built to drop into an existing enterprise library. Everything references semantic tokens, so light, dark, and a brand's own palette are a variable swap, not a redraw.

Color

TokenLightDark
surface/default#FFFFFF#14171C
surface/raised#FFFFFF#1C2027
text/primary#0E1116#F2F4F7
text/secondary#5B6270#A0A8B6
border/subtle#E7E9ED#262B33
accent/default#3D5AFE#7C8CFF
signal/gain#0E9F6E#3DD68C
signal/loss#E5484D#FF6B6B

Type

$112.48price/display · 34/40 · bold · tabular
Halcyon joins S&P MidCap 400title/sheet · 20/26 · semibold
Raises full-year guidancebody/strong · 14/19 · semibold
Oct 6 · Earningscaption · 12/16 · regular

Space, radius, motion

space/1 · 4
space/2 · 8
space/3 · 12
space/4 · 16
space/6 · 24
radius/sm 8
radius/md 14
radius/xl 28
motion/snap120ms · ease-out
motion/card180ms · cubic-bezier(.22,1,.36,1)
motion/sheet320ms · cubic-bezier(.32,.72,0,1)

Components

Event markertype × state
GainLossNo newsClusterDefault3Active3
Variants: type (4) × state (2)Fixed 12×12 frame, 44pt hit area
Catalyst cardsingle · cluster · none
Auto layout: horizontal, hug × fixed 236Props: headline, move, type, count
Range selectoriOS · Android
One component, platform variantVariables: mode = Light / Dark

Handoff

Specs an engineer can build from

Every number maps to a token. Positioning rules are written as logic, not pixels, so the card behaves at any screen width.

ContainerW 236 fixed · H hug · padding 10 · gap 10 · radius/md 14 · elevation/2
Thumbnail44 × 44 · radius/sm 10 · image fill · type glyph 18
Overlinecaption 11/14 · semibold · text/secondary
Headlinebody/strong 13.5/18 · max 2 lines · truncate tail
Move pillH 20 · padding 0 6 · radius 6 · signal/* at 12% fill
PlacementCenter on point · 16 above it · flip below if top < 2 · inset 8 from screen edges
SnapNearest marker within 14px of the touch x · one haptic per new marker
MotionIn: motion/card, scale .96 → 1 from the point · Out: 120ms fade
Hit targetWhole card is one button · min 44 tall

Edge cases

Where this could break

No news matched

The marker still shows, labeled "No clear catalyst," with how the sector moved that day. Silence is information too.

Several moves close together

Markers within 14px merge into a numbered cluster. The card leads with the biggest move. The sheet lists the rest.

Card near an edge

It slides inward to stay 8px from the screen edge. Near the top of the chart it flips below the line.

Thumb covers the chart

The card always opens above the touch point, and the price readout sits above the chart, never under the finger.

Moved after hours

The marker lands on the next session's open, tagged "After hours," with the time the news broke.

Paywalled source

The summary always shows in the app. The link says "Subscription may be required" before you tap.

Wrong attribution

Copy says "Possibly related," never "caused by." Every card shows its source. Users can report a mismatch.

Short, quiet ranges

On 1M there may be no big moves. The list says so plainly instead of padding it with small ones.

Accessibility

Shape and color

Up is a triangle pointing up, down points down, no-news is a dashed circle. Works in grayscale and for color blindness.

Screen readers

You can't scrub a chart by ear. The "Why it moved" list carries the same events, read as "Up 7.2 percent, Mar 14, joins S&P MidCap 400."

Keyboard and switch

Arrows move along the chart, Shift + arrow jumps between events, Enter opens the story. Try it in the prototype.

Text size and motion

The card headline grows to 3 lines at large text sizes. Reduce Motion turns off the halo and sheet spring.

Every spike has a story.

Catalyst just puts it where you're already looking.

Concept. Halcyon Labs, its ticker, prices and headlines are fictional. Not affiliated with Google or any brokerage. Not investment advice.