Today, ticker search is reachable only from the widget's `...` context menu -- the `newtab-stocks-menu-search` panel item ("Search ticker symbols") in `Stocks.jsx`, which reports `widget_source: "context_menu"` and `user_action: "search_tickers"`. HNT-3129 promotes search to a main action on the widget surface.
Design produced two treatments. We are going to compare them in a two-branch experiment rather than pick one up front, so both need to ship behind a Nimbus-controlled variable.
Spec: https://www.figma.com/design/i8wWurQ8yn9y5hCjnf8BYu/HNT---Nova?node-id=17968-46125
Treatment A (Proposal 1, design's recommendation): search exposed as an icon affordance in the Markets view, plus the shortened "Search" CTA in the Watchlist empty state. Follows the checklist pattern already used for the World Cup widget.
Treatment B (Proposal 2): search as a labelled CTA at the bottom of the large widget. The Markets view shows at most 3 rows, with no scroll bar for a 4th -- today `STOCKS_PLACEHOLDER_COUNT` is 4.
Settled behavior, common to both:
- Activating the entry point opens the existing search UI. This is a new entry point, not a new search surface, and not an inline type-into field. The reason is to keep a single search pattern, so the widget sizes and the Markets-view affordance do not each need their own treatment.
- Markets remains the default view on load. Defaulting to Watchlist was considered and deferred as a possible separate experiment.
- Empty-state CTA content is the shortened "Search" copy from content review.
Acceptance criteria
1. Both treatments are implemented and selected at runtime by a single Nimbus variable, defaulting to today's behavior when unset. Suggested `widgets.stocks.searchEntrypoint` with values `none` / `icon` / `cta`; confirm against the trainhop naming already used in `WidgetsRegistry.mjs`.
2. Treatment A matches the Figma: search icon affordance in the Markets view, "Search" CTA in the Watchlist empty state.
3. Treatment B matches the Figma: labelled search CTA at the bottom of the large widget, Markets capped at 3 rows, no scroll bar.
4. Each entry point reports a distinct `widget_source` alongside `user_action: "search_tickers"`, so search opens can be attributed per branch. `context_menu` keeps its current value.
5. Activating any entry point opens the same search UI the context-menu item opens today, with no behavior change inside search itself.
6. Markets is still the default view in both treatments.
7. Test coverage for each treatment and for the unset/default state, across the widget sizes each treatment applies to.
Open scope questions
- Whether the `...` "Search ticker symbols" item is removed from the context menu once search is a main action, or retained as a secondary path. Affects AC 4 and whether `newtab-stocks-menu-search` is retired.
This supersedes bug 2066215 (Stocks widget: adjustments to search), paused on 2026-08-31 while these options were explored.
Bug 2069512 Comment 0 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
Today, ticker search is reachable only from the widget's `...` context menu -- the `newtab-stocks-menu-search` panel item ("Search ticker symbols") in `Stocks.jsx`, which reports `widget_source: "context_menu"` and `user_action: "search_tickers"`. HNT-3129 promotes search to a main action on the widget surface.
Design produced two treatments. We are going to compare them in a two-branch experiment rather than pick one up front, so both need to ship behind a Nimbus-controlled variable. Spec: https://www.figma.com/design/i8wWurQ8yn9y5hCjnf8BYu/HNT---Nova?node-id=17968-46125
Treatment A: search exposed as an icon affordance in the Markets view, plus the shortened "Search" CTA in the Watchlist empty state. Follows the checklist pattern already used for the World Cup widget.
Treatment B: search as a labelled CTA at the bottom of the large widget.
Settled behavior, common to both:
- Activating the entry point opens the existing search UI. This is a new entry point, not a new search surface, and not an inline type-into field. The reason is to keep a single search pattern, so the widget sizes and the Markets-view affordance do not each need their own treatment.
- Markets remains the default view on load. Defaulting to Watchlist was considered and deferred as a possible separate experiment.
- Empty-state CTA content is the shortened "Search" copy from content review.
Acceptance criteria
1. Both treatments are implemented and selected at runtime by a single Nimbus variable, defaulting to today's behavior when unset. Suggested `widgets.stocks.searchEntrypoint` with values `none` / `icon` / `cta`; confirm against the trainhop naming already used in `WidgetsRegistry.mjs`.
2. Treatment A matches the Figma: search icon affordance in the Markets view, "Search" CTA in the Watchlist empty state.
3. Treatment B matches the Figma: labelled search CTA at the bottom of the large widget, Markets capped at 3 rows, no scroll bar.
4. Each entry point reports a distinct `widget_source` alongside `user_action: "search_tickers"`, so search opens can be attributed per branch. `context_menu` keeps its current value.
5. Activating any entry point opens the same search UI the context-menu item opens today, with no behavior change inside search itself.
6. Markets is still the default view in both treatments.
7. Test coverage for each treatment and for the unset/default state, across the widget sizes each treatment applies to.
Open scope questions
- Whether the `...` "Search ticker symbols" item is removed from the context menu once search is a main action, or retained as a secondary path. Affects AC 4 and whether `newtab-stocks-menu-search` is retired.
This supersedes bug 2066215 (Stocks widget: adjustments to search), paused on 2026-08-31 while these options were explored.