Skip to content

feat: handle in app shield notification nav#39788

Merged
chaitanyapotti merged 3 commits intomainfrom
feat/notification-shield-in-app-nav
Feb 5, 2026
Merged

feat: handle in app shield notification nav#39788
chaitanyapotti merged 3 commits intomainfrom
feat/notification-shield-in-app-nav

Conversation

@tuna1207
Copy link
Member

@tuna1207 tuna1207 commented Feb 4, 2026

Description

Handle in app navigation for shield feature announcement notification

Open in GitHub Codespaces

Changelog

CHANGELOG entry: Shield notification in app navigation

Related issues

Fixes:

Manual testing steps

  1. Go to notfications page
  2. Select shield announcement notification
  3. Click on CTA button
  4. Should navigate to shield page in app instead of opening new tab

Screenshots/Recordings

Before

After

Screen.Recording.2026-02-04.at.19.46.32.mov

Pre-merge author checklist

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
  • I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.

Note

Low Risk
Low risk UI routing change limited to Shield-specific carousel/notification IDs, with URL parsing guarded by try/catch. Main risk is a mis-match on IDs or query-param handling causing the CTA to do nothing or navigate incorrectly.

Overview
Routes Shield marketing entry points in-app instead of opening a new tab. Adds SHIELD_ANNOUNCEMENT_NOTIFICATION_ID plus a shared helper (getShieldInAppNavigationFromExternalLink) that converts an external Shield URL into an internal SETTINGS_ROUTE navigation with showShieldEntryModal and preserved query params.

Updates the Shield carousel card click handler to use the shared helper, and changes the feature-announcement external CTA so the Shield announcement notification uses react-router navigation (no href/external icon) while still emitting the same analytics event.

Written by Cursor Bugbot for commit 77ce10f. This will update automatically on new commits. Configure here.

@metamaskbot metamaskbot added the team-onboarding Onboarding team label Feb 4, 2026
@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 4, 2026

✨ Files requiring CODEOWNER review ✨

👨‍🔧 @MetaMask/core-extension-ux (1 files, +3 -7)
  • 📁 ui/
    • 📁 components/
      • 📁 multichain/
        • 📁 carousel/
          • 📁 stack-card/
            • 📄 stack-card.tsx +3 -7

🔔 @MetaMask/notifications (1 files, +38 -3)
  • 📁 ui/
    • 📁 pages/
      • 📁 notifications/
        • 📁 notification-components/
          • 📁 feature-announcement/
            • 📄 annonucement-footer-buttons.tsx +38 -3

@github-actions github-actions bot added the size-S label Feb 4, 2026
@tuna1207 tuna1207 added area-shield team-shield Shield team and removed team-onboarding Onboarding team labels Feb 4, 2026
@tuna1207 tuna1207 marked this pull request as ready for review February 4, 2026 14:13
@tuna1207 tuna1207 requested review from a team as code owners February 4, 2026 14:13
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 3 potential issues.

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 4, 2026

Builds ready [77ce10f]
UI Startup Metrics (1359 ± 102 ms)
PlatformBuildTypePageMetricTest Title (ms)Persona (ms)Mean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--13591142167510214291518
load--117296314409612321336
domContentLoaded--116695914349612211330
domInteractive--271596182478
firstPaint--1516637972197287
backgroundConnect--23421228215241264
firstReactRender--17103041925
initialActions--104113
loadScripts--94875112149510051107
setupStore--1263051622
numNetworkReqs--231594201583
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--19811357643288118874360
load--11581014179315411641565
domContentLoaded--11441001178115211461556
domInteractive--36181612734115
firstPaint--1877254891240378
backgroundConnect--44828224594263411616
firstReactRender--23157492442
initialActions--105114
loadScripts--90377114241369001296
setupStore--1573861733
numNetworkReqs--1204725846150194
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--984778142611810521170
load--81366813071219101010
domContentLoaded--80666113001219001004
domInteractive--3220118232791
firstPaint--1356740170179280
backgroundConnect--41201702844127
firstReactRender--2511288382440
initialActions--105113
loadScripts--80365912981208951001
setupStore--1685791841
numNetworkReqs--231596211583
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--1248889197521313241786
load--72160912061197151068
domContentLoaded--71160411981197051054
domInteractive--34181142232101
firstPaint--1526463598192358
backgroundConnect--16113038648162319
firstReactRender--22164752430
initialActions--104111
loadScripts--70860211911177031045
setupStore--1242141519
numNetworkReqs--1334628752154262
19--------
FirefoxBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--16401374223318317512028
load--13791182183014214841638
domContentLoaded--13791176183014314831638
domInteractive--823324343101152
firstPaint--------
backgroundConnect--773324647103168
firstReactRender--1291711314
initialActions--103122
loadScripts--13371156168112614231609
setupStore--165159231262
numNetworkReqs--2512100221886
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--27932113720677728763946
load--15971219566462716182349
domContentLoaded--15961219566462716182349
domInteractive--13034632112130370
firstPaint--------
backgroundConnect--31010614733002951085
firstReactRender--18146791826
initialActions--207123
loadScripts--15521194560761715472217
setupStore--1437761195181640
numNetworkReqs--72401382993134
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--16651379214517018022004
load--14201205172611315181606
domContentLoaded--14201205172611315141606
domInteractive--1012824643131182
firstPaint--------
backgroundConnect--722619143117155
firstReactRender--14112421519
initialActions--103122
loadScripts--1376118516979614391531
setupStore--176256311253
numNetworkReqs--241296211883
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--26171966391240627313701
load--15301216250324816632054
domContentLoaded--15301216250324916632054
domInteractive--1153354690121355
firstPaint--------
backgroundConnect--2531071263196252834
firstReactRender--20155952328
initialActions--204123
loadScripts--14901202248123716072025
setupStore--21571162265334755
numNetworkReqs--67361592993119
19--------
📊 Page Load Benchmark Results

Current Commit: 77ce10f | Date: 2/4/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 997ms (±38ms) 🟢 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 691ms (±36ms) 🟢 | historical mean value: 727ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 77ms (±10ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 997ms 38ms 975ms 1.26s 1.04s 1.26s
domContentLoaded 691ms 36ms 672ms 940ms 733ms 940ms
firstPaint 77ms 10ms 64ms 168ms 88ms 168ms
firstContentfulPaint 77ms 10ms 64ms 168ms 88ms 168ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 451 Bytes (0.01%)
  • ui: 3.67 KiB (0.04%)
  • common: 2.79 KiB (0.03%)

@chaitanyapotti chaitanyapotti added this pull request to the merge queue Feb 5, 2026
Merged via the queue into main with commit 062761f Feb 5, 2026
183 checks passed
@chaitanyapotti chaitanyapotti deleted the feat/notification-shield-in-app-nav branch February 5, 2026 11:13
@github-actions github-actions bot locked and limited conversation to collaborators Feb 5, 2026
@metamaskbot metamaskbot added the release-13.18.0 Issue or pull request that will be included in release 13.18.0 label Feb 5, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-shield release-13.18.0 Issue or pull request that will be included in release 13.18.0 size-S team-shield Shield team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants