Major web browsers (Chrome, Brave, Firefox, Edge, and others) are rolling out a change called
Local Network Access permissions. This change
breaks MWA wallet connections for mobile web apps and PWAs, because MWA communicates with
mobile wallets over the local network.
If your app is a mobile web app or PWA that uses Mobile Wallet Adapter, this
change will affect you. Update @solana-mobile/wallet-standard-mobile to
v0.5.0 or later to mitigate the issue.
With Local Network Access enforcement, browsers require explicit user permission before a
web page can connect to local network endpoints. Without the update, MWA wallet signing
requests will silently fail.
Open your app and trigger a wallet signing flow. You should see:
An informational dialog explaining what the upcoming permission is for.
Info dialog shown before the browser permission prompt.
The browser permission prompt asking the user to allow local network connections.
Browser permission prompt for local network access.
A success dialog confirming the permission was granted, with a button to connect the wallet.
Success dialog after granting the permission.
Once the user accepts, wallet signing works as normal. This prompt only appears once per
browser — it will not reappear unless the user resets their browser permissions.
3
Verify normal signing flow
After accepting the permission, confirm that subsequent wallet signing requests proceed
without any additional prompts.
The updated library handles the new browser requirement with minimal friction:
One-time prompt — Users see the browser permission request only once.
Contextual info dialog — Before the browser prompt, an informational dialog
explains why the permission is needed, so users are not surprised by the system prompt.
No ongoing impact — After granting the permission, the wallet signing flow behaves
exactly as before.
Mobile Wallet Adapter relies on local WebSocket connections between your app
and the wallet app on the device. With Local Network Access enforcement,
browsers now require explicit user permission before allowing these local
connections. The updated library detects whether this permission has been
granted and requests it before attempting a wallet connection.
Does this affect native Android apps?
No. This change only affects mobile web apps and PWAs running in a browser.
Native Android apps using MWA are not impacted.
What if a user denies the permission?
Wallet signing will not work until the user grants local network access. They
can update their browser permissions at any time through the browser’s site
settings.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Solana Mobile Docs","colors":{"primary":"#000000","light":"#EF5C6F","dark":"#EF5C6F"},"logo":{"light":"https://mintcdn.com/solanalabs/TqbmPoBvHph_ccql/logo/light.png?fit=max\u0026auto=format\u0026n=TqbmPoBvHph_ccql\u0026q=85\u0026s=1521aea54cb9a58ad8a4dc762f7e09fb","dark":"https://mintcdn.com/solanalabs/kMNOLb20KE24UVGL/logo/dark.svg?fit=max\u0026auto=format\u0026n=kMNOLb20KE24UVGL\u0026q=85\u0026s=099c9770f78a15840ff19eb457b57feb","href":"/"},"favicon":"https://mintcdn.com/solanalabs/JcpEBaAjfQ94V5J-/favicon.ico?fit=max\u0026auto=format\u0026n=JcpEBaAjfQ94V5J-\u0026q=85\u0026s=2a17f5cfd557f7f5ce8bb00d8b26210c","appearance":{"default":"dark"},"background":{"decoration":"gradient"},"navbar":{"links":[{"href":"https://discord.gg/solanamobile","label":"Discord"}],"primary":{"type":"button","label":"Publish","href":"https://publish.solanamobile.com/"}},"footer":{"socials":{"x":"https://twitter.com/solanamobile","github":"https://github.com/solana-mobile","discord":"https://discord.gg/solanamobile","youtube":"https://www.youtube.com/@solanamobile"},"links":[{"header":"Community","items":[{"label":"Stack Exchange","href":"https://solana.stackexchange.com/"},{"label":"Discord","href":"https://discord.gg/solanamobile"},{"label":"Twitter","href":"https://twitter.com/solanamobile"}]},{"header":"More","items":[{"label":"GitHub","href":"https://github.com/solana-mobile"},{"label":"Seeker Release Notes","href":"/seeker/release-notes"}]},{"header":"Legal","items":[{"label":"Terms of Service","href":"https://solanamobile.com/tos-homepage-web"},{"label":"Privacy Policy","href":"https://solanamobile.com/privacy-policy-homepage-web"},{"label":"Developer Agreement","href":"https://solanamobile.com/developer-agreement-web"},{"label":"dApp Store Terms of Use","href":"https://solanamobile.com/dapp-store-tos"},{"label":"Cookie Policy","href":"https://solanamobile.com/cookie-policy-web"},{"label":"Your Privacy Choices","href":"https://solanamobile.com/cookie-policy-web"}]}]},"fonts":{"heading":{"family":"__ppMori_c9a5a4","source":"https://mintlify-assets.b-cdn.net/EHeAzD6gM8HDt9NQftiBgWSV3A.woff2","format":"woff2"},"body":{"family":"__ppMori_c9a5a4","source":"https://mintlify-assets.b-cdn.net/EHeAzD6gM8HDt9NQftiBgWSV3A.woff2","format":"woff2"}},"integrations":{"gtm":{"tagId":"GTM-KT4PN29R"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"metadata":{"timestamp":true},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"solanalabs","hasAudioNarration":false,"actualSubdomain":"solanalabs","customDomains":["docs.solanamobile.com"],"gitSource":{"type":"github","owner":"solana-mobile","repo":"solana-mobile-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adef66ead3ed130d8d6b47c","collectionId":"a8a9cd6a-3b49-4d29-812d-d732cfaeda2c","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adef66ead3ed130d8d6b47c"},"feedback":{"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED","enabled":"DISABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6adef66ead3ed130d8d6b47c","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"Get Started","count":22},{"language":"default","tag":"Mobile Wallet Adapter SDK","count":15},{"language":"default","tag":"dApp Store","count":14},{"language":"default","tag":"Recipes","count":12},{"language":"default","tag":"Solana Mobile Stack","count":11},{"language":"default","tag":"CLI","count":10},{"language":"default","tag":"Commands","count":8},{"language":"default","tag":"Seeker","count":8},{"language":"default","tag":"Release Notes","count":8},{"language":"default","tag":"Publishing","count":7}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"img[src*=sample_app_imgs]{min-height:200px;object-fit:cover}.dark li[id=topbar-cta-button]>a>div>span,li[id=topbar-cta-button]>a>div>span{color:#000!important}img.no-zoom{cursor:default!important;touch-action:manipulation;pointer-events:auto}li[id=topbar-cta-button]>a>div>svg>path{stroke:#000!important}.ot-sdk-show-settings{align-items:center;display:inline-flex;gap:.5rem;max-width:none!important;overflow:visible!important;white-space:nowrap}.ot-sdk-show-settings .ccpa-opt-out-icon{flex:none;height:14px;margin:0;width:30px}"}],"page":{"pagePath":"recipes/mobile-wallet-adapter/local-network-access","slug":"/recipes/mobile-wallet-adapter/local-network-access","pageMetadata":{"title":"Local Network Access Permission","description":"Handle the browser Local Network Access permission change that affects MWA wallet connections in mobile web apps and PWAs.","sidebarTitle":"Local Network Access","href":"/recipes/mobile-wallet-adapter/local-network-access"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Handle the browser Local Network Access permission change that affects MWA wallet connections in mobile web apps and PWAs.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];const FooterDisclaimer=()=>{return _jsxs(`p`,{className:`not-prose mint-mt-16 mint-text-center mint-text-xs mint-text-gray-500 dark:mint-text-gray-400`,children:[`Code samples on this page are subject to the`,` `,_jsx(`a`,{className:`mint-underline mint-underline-offset-2`,href:`https://www.apache.org/licenses/LICENSE-2.0`,children:`Apache 2.0 license`}),`.`]})};function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,CodeBlock,Frame,Heading,OptimizedImage,Step,Steps,Warning,_MdxComponentBoundary}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Warning)_missingMdxReference(`Warning`,true);if(!_MdxComponentBoundary)_missingMdxReference(`_MdxComponentBoundary`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`overview`,children:`Overview`}),`\n`,_jsxs(_components.p,{children:[`Major web browsers (Chrome, Brave, Firefox, Edge, and others) are rolling out a change called\n`,_jsx(_components.a,{href:`https://developer.chrome.com/blog/local-network-access`,children:`Local Network Access`}),` permissions. This change\n`,_jsx(_components.strong,{children:`breaks MWA wallet connections`}),` for mobile web apps and PWAs, because MWA communicates with\nmobile wallets over the local network.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`If your app is a mobile web app or PWA that uses Mobile Wallet Adapter, this\nchange `,_jsx(_components.strong,{children:`will`}),` affect you. Update `,_jsx(_components.code,{children:`@solana-mobile/wallet-standard-mobile`}),` to\n`,_jsx(_components.strong,{children:`v0.5.0 or later`}),` to mitigate the issue.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`what-happens`,children:`What happens`}),`\n`,_jsx(_components.p,{children:`With Local Network Access enforcement, browsers require explicit user permission before a\nweb page can connect to local network endpoints. Without the update, MWA wallet signing\nrequests will silently fail.`}),`\n`,_jsx(Heading,{level:`2`,id:`how-to-update`,children:`How to update`}),`\n`,_jsxs(_components.p,{children:[`The mitigation is already built into the library — `,_jsx(_components.strong,{children:`no code changes are needed`}),`. Just update the\npackage version and verify that wallet signing works.`]}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Update @solana-mobile/wallet-standard-mobile`,children:[_jsxs(_components.p,{children:[`Update to `,_jsx(_components.strong,{children:`v0.5.0 or later`}),`. That’s it — no implementation changes required.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` @solana-mobile/wallet-standard-mobile@latest`})]}),`\n`]})})})]}),_jsxs(Step,{title:`Test wallet signing`,children:[_jsx(_components.p,{children:`Open your app and trigger a wallet signing flow. You should see:`}),_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`An `,_jsx(_components.strong,{children:`informational dialog`}),` explaining what the upcoming permission is for.`]}),`\n`]}),_jsx(Frame,{caption:`Info dialog shown before the browser permission prompt.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/solanalabs/7X4XlQ8bE9H5pyJE/images/static/img/mwa-lna-dialog1.png?fit=max\u0026auto=format\u0026n=7X4XlQ8bE9H5pyJE\u0026q=85\u0026s=c64878ed735814c8206131a59cce774c`,alt:`Info dialog`,style:{maxWidth:`360px`,margin:`0 auto`},\"data-og-width\":`1080`,width:`1080`,\"data-og-height\":`2400`,height:`2400`,\"data-path\":`images/static/img/mwa-lna-dialog1.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/solanalabs/7X4XlQ8bE9H5pyJE/images/static/img/mwa-lna-dialog1.png?w=280\u0026fit=max\u0026auto=format\u0026n=7X4XlQ8bE9H5pyJE\u0026q=85\u0026s=8874a1ee5ef1b135b8ec50e70733c49a 280w, https://mintcdn.com/solanalabs/7X4XlQ8bE9H5pyJE/images/static/img/mwa-lna-dialog1.png?w=560\u0026fit=max\u0026auto=format\u0026n=7X4XlQ8bE9H5pyJE\u0026q=85\u0026s=8b0c57da8c9baddc8ab44afd3868408f 560w, https://mintcdn.com/solanalabs/7X4XlQ8bE9H5pyJE/images/static/img/mwa-lna-dialog1.png?w=840\u0026fit=max\u0026auto=format\u0026n=7X4XlQ8bE9H5pyJE\u0026q=85\u0026s=db1e9e209e9b038b187a37cc575924ea 840w, https://mintcdn.com/solanalabs/7X4XlQ8bE9H5pyJE/images/static/img/mwa-lna-dialog1.png?w=1100\u0026fit=max\u0026auto=format\u0026n=7X4XlQ8bE9H5pyJE\u0026q=85\u0026s=1fcea3b331b29c43d961bec62b574ea7 1100w, https://mintcdn.com/solanalabs/7X4XlQ8bE9H5pyJE/images/static/img/mwa-lna-dialog1.png?w=1650\u0026fit=max\u0026auto=format\u0026n=7X4XlQ8bE9H5pyJE\u0026q=85\u0026s=da8d7d8ac1f24fc2daf4b3b272b3cba4 1650w, https://mintcdn.com/solanalabs/7X4XlQ8bE9H5pyJE/images/static/img/mwa-lna-dialog1.png?w=2500\u0026fit=max\u0026auto=format\u0026n=7X4XlQ8bE9H5pyJE\u0026q=85\u0026s=42a58387f4b6983c2dd5f84c0e670e82 2500w`})}),_jsxs(_components.ol,{start:`2`,children:[`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.strong,{children:`browser permission prompt`}),` asking the user to allow local network connections.`]}),`\n`]}),_jsx(Frame,{caption:`Browser permission prompt for local network access.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/solanalabs/7X4XlQ8bE9H5pyJE/images/static/img/mwa-lna-prompt.png?fit=max\u0026auto=format\u0026n=7X4XlQ8bE9H5pyJE\u0026q=85\u0026s=21c860dfa1b4bad444de6e2632102c87`,alt:`Browser permission prompt`,style:{maxWidth:`360px`,margin:`0 auto`},\"data-og-width\":`1080`,width:`1080`,\"data-og-height\":`2400`,height:`2400`,\"data-path\":`images/static/img/mwa-lna-prompt.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/solanalabs/7X4XlQ8bE9H5pyJE/images/static/img/mwa-lna-prompt.png?w=280\u0026fit=max\u0026auto=format\u0026n=7X4XlQ8bE9H5pyJE\u0026q=85\u0026s=28ac5bb8349256f4552e5e07ab4047cf 280w, https://mintcdn.com/solanalabs/7X4XlQ8bE9H5pyJE/images/static/img/mwa-lna-prompt.png?w=560\u0026fit=max\u0026auto=format\u0026n=7X4XlQ8bE9H5pyJE\u0026q=85\u0026s=a6365936ae2f8e4070ff3cdf7c635a86 560w, https://mintcdn.com/solanalabs/7X4XlQ8bE9H5pyJE/images/static/img/mwa-lna-prompt.png?w=840\u0026fit=max\u0026auto=format\u0026n=7X4XlQ8bE9H5pyJE\u0026q=85\u0026s=4e1b424776856a641750eeff85e15afe 840w, https://mintcdn.com/solanalabs/7X4XlQ8bE9H5pyJE/images/static/img/mwa-lna-prompt.png?w=1100\u0026fit=max\u0026auto=format\u0026n=7X4XlQ8bE9H5pyJE\u0026q=85\u0026s=e1e5bdbffeefb47ae637fb3781d4c38c 1100w, https://mintcdn.com/solanalabs/7X4XlQ8bE9H5pyJE/images/static/img/mwa-lna-prompt.png?w=1650\u0026fit=max\u0026auto=format\u0026n=7X4XlQ8bE9H5pyJE\u0026q=85\u0026s=c18357917fe599f3c2f4db41ba9d1ee5 1650w, https://mintcdn.com/solanalabs/7X4XlQ8bE9H5pyJE/images/static/img/mwa-lna-prompt.png?w=2500\u0026fit=max\u0026auto=format\u0026n=7X4XlQ8bE9H5pyJE\u0026q=85\u0026s=c94ea443137efc460dce50164b10ddd3 2500w`})}),_jsxs(_components.ol,{start:`3`,children:[`\n`,_jsxs(_components.li,{children:[`A `,_jsx(_components.strong,{children:`success dialog`}),` confirming the permission was granted, with a button to connect the wallet.`]}),`\n`]}),_jsx(Frame,{caption:`Success dialog after granting the permission.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/solanalabs/7X4XlQ8bE9H5pyJE/images/static/img/mwa-lna-dialog2.png?fit=max\u0026auto=format\u0026n=7X4XlQ8bE9H5pyJE\u0026q=85\u0026s=3b6769023820c5d5681760b558781a7a`,alt:`Success dialog with connect wallet button`,style:{maxWidth:`360px`,margin:`0 auto`},\"data-og-width\":`1080`,width:`1080`,\"data-og-height\":`2400`,height:`2400`,\"data-path\":`images/static/img/mwa-lna-dialog2.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/solanalabs/7X4XlQ8bE9H5pyJE/images/static/img/mwa-lna-dialog2.png?w=280\u0026fit=max\u0026auto=format\u0026n=7X4XlQ8bE9H5pyJE\u0026q=85\u0026s=13e6ef17e70e799b02a75586f98f10f9 280w, https://mintcdn.com/solanalabs/7X4XlQ8bE9H5pyJE/images/static/img/mwa-lna-dialog2.png?w=560\u0026fit=max\u0026auto=format\u0026n=7X4XlQ8bE9H5pyJE\u0026q=85\u0026s=67c7b6d17f766fe9a5d07a5312dc99c2 560w, https://mintcdn.com/solanalabs/7X4XlQ8bE9H5pyJE/images/static/img/mwa-lna-dialog2.png?w=840\u0026fit=max\u0026auto=format\u0026n=7X4XlQ8bE9H5pyJE\u0026q=85\u0026s=ff5152d143a07e95834183c476612cf5 840w, https://mintcdn.com/solanalabs/7X4XlQ8bE9H5pyJE/images/static/img/mwa-lna-dialog2.png?w=1100\u0026fit=max\u0026auto=format\u0026n=7X4XlQ8bE9H5pyJE\u0026q=85\u0026s=d781f0ddc2f23e1c636954474b711feb 1100w, https://mintcdn.com/solanalabs/7X4XlQ8bE9H5pyJE/images/static/img/mwa-lna-dialog2.png?w=1650\u0026fit=max\u0026auto=format\u0026n=7X4XlQ8bE9H5pyJE\u0026q=85\u0026s=6f7cc6a2b916dca918639de9b69cb22e 1650w, https://mintcdn.com/solanalabs/7X4XlQ8bE9H5pyJE/images/static/img/mwa-lna-dialog2.png?w=2500\u0026fit=max\u0026auto=format\u0026n=7X4XlQ8bE9H5pyJE\u0026q=85\u0026s=e7abdebd0317fbf0599af0b835a604c9 2500w`})}),_jsxs(_components.p,{children:[`Once the user accepts, wallet signing works as normal. This prompt only appears `,_jsx(_components.strong,{children:`once`}),` per\nbrowser — it will not reappear unless the user resets their browser permissions.`]})]}),_jsx(Step,{title:`Verify normal signing flow`,children:_jsx(_components.p,{children:`After accepting the permission, confirm that subsequent wallet signing requests proceed\nwithout any additional prompts.`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`user-experience`,children:`User experience`}),`\n`,_jsx(_components.p,{children:`The updated library handles the new browser requirement with minimal friction:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`One-time prompt`}),` — Users see the browser permission request only once.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Contextual info dialog`}),` — Before the browser prompt, an informational dialog\nexplains why the permission is needed, so users are not surprised by the system prompt.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`No ongoing impact`}),` — After granting the permission, the wallet signing flow behaves\nexactly as before.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`faq`,children:`FAQ`}),`\n`,_jsx(Accordion,{title:`Why is this change needed?`,id:`why-is-this-change-needed`,children:_jsx(_components.p,{children:`Mobile Wallet Adapter relies on local WebSocket connections between your app\nand the wallet app on the device. With Local Network Access enforcement,\nbrowsers now require explicit user permission before allowing these local\nconnections. The updated library detects whether this permission has been\ngranted and requests it before attempting a wallet connection.`})}),`\n`,_jsx(Accordion,{title:`Does this affect native Android apps?`,id:`does-this-affect-native-android-apps`,children:_jsx(_components.p,{children:`No. This change only affects mobile web apps and PWAs running in a browser.\nNative Android apps using MWA are not impacted.`})}),`\n`,_jsx(Accordion,{title:`What if a user denies the permission?`,id:`what-if-a-user-denies-the-permission`,children:_jsx(_components.p,{children:`Wallet signing will not work until the user grants local network access. They\ncan update their browser permissions at any time through the browser’s site\nsettings.`})}),`\n`,_jsx(_MdxComponentBoundary,{name:`FooterDisclaimer`,children:_jsx(FooterDisclaimer,{})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{FooterDisclaimer,default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Local Network Access Permission","description":"Handle the browser Local Network Access permission change that affects MWA wallet connections in mobile web apps and PWAs.","sidebarTitle":"Local Network Access","href":"/recipes/mobile-wallet-adapter/local-network-access"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Overview","slug":"overview","depth":2,"children":[]},{"title":"What happens","slug":"what-happens","depth":2,"children":[]},{"title":"How to update","slug":"how-to-update","depth":2,"children":[]},{"title":"User experience","slug":"user-experience","depth":2,"children":[]},{"title":"FAQ","slug":"faq","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/solanalabs/e9d8e2dff41e3ddf/privacy-choices.js"],"dynamicCss":".mint-mt-16 {\n margin-top: 4rem\n}\n.mint-text-center {\n text-align: center\n}\n.mint-text-xs {\n font-size: 0.75rem;\n line-height: 1rem\n}\n.mint-text-gray-500 {\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity, 1))\n}\n.mint-underline {\n text-decoration-line: underline\n}\n.mint-underline-offset-2 {\n text-underline-offset: 2px\n}\n.dark\\:mint-text-gray-400:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(156 163 175 / var(--tw-text-opacity, 1))\n}","subdomain":"solanalabs","siteName":"Solana Mobile Docs","title":"Local Network Access Permission - Solana Mobile Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-26T06:43:01.633Z","gitLastModified":"2026-10-26T06:42:51.000Z","originalFileLocation":"recipes/mobile-wallet-adapter/local-network-access.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Handle the browser Local Network Access permission change that affects MWA wallet connections in mobile web apps and PWAs.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Solana Mobile Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/solanalabs/NqXin8GWnXcFlaEh/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/solanalabs/NqXin8GWnXcFlaEh/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/solanalabs/NqXin8GWnXcFlaEh/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/solanalabs/NqXin8GWnXcFlaEh/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/solanalabs/NqXin8GWnXcFlaEh/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/solanalabs/NqXin8GWnXcFlaEh/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/solanalabs/NqXin8GWnXcFlaEh/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/solanalabs/NqXin8GWnXcFlaEh/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/solanalabs/NqXin8GWnXcFlaEh/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Local Network Access Permission - Solana Mobile Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Handle the browser Local Network Access permission change that affects MWA wallet connections in mobile web apps and PWAs.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Solana Mobile Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.solanamobile.com/recipes/mobile-wallet-adapter/local-network-access\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://solanalabs.mintlify.app/_mintlify/api/og/v2?division=Mobile+Wallet+Adapter\u0026amp;title=Local+Network+Access+Permission\u0026amp;description=Handle+the+browser+Local+Network+Access+permission+change+that+affects+MWA+wallet+connections+in+mobile+web+apps+and+PWAs.\u0026amp;theme=1d07aafd7ef25c3eb674a743\u0026amp;signature=c98cff523abf6b400fe5139a432868b1dcf7b93ef53eeede929021c6431e7188\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Local Network Access Permission - Solana Mobile Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Handle the browser Local Network Access permission change that affects MWA wallet connections in mobile web apps and PWAs.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://solanalabs.mintlify.app/_mintlify/api/og/v2?division=Mobile+Wallet+Adapter\u0026amp;title=Local+Network+Access+Permission\u0026amp;description=Handle+the+browser+Local+Network+Access+permission+change+that+affects+MWA+wallet+connections+in+mobile+web+apps+and+PWAs.\u0026amp;theme=1d07aafd7ef25c3eb674a743\u0026amp;signature=c98cff523abf6b400fe5139a432868b1dcf7b93ef53eeede929021c6431e7188\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/solanalabs/NqXin8GWnXcFlaEh/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Solana Mobile Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#000000\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.solanamobile.com/recipes/mobile-wallet-adapter/local-network-access\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/recipes/mobile-wallet-adapter/local-network-access.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.solanamobile.com/#organization\",\"name\":\"Solana Mobile Docs\",\"url\":\"https://docs.solanamobile.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/solanalabs/TqbmPoBvHph_ccql/logo/light.png?fit=max\u0026auto=format\u0026n=TqbmPoBvHph_ccql\u0026q=85\u0026s=1521aea54cb9a58ad8a4dc762f7e09fb\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.solanamobile.com#website\",\"name\":\"Solana Mobile Docs\",\"url\":\"https://docs.solanamobile.com\",\"publisher\":{\"@id\":\"https://docs.solanamobile.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.solanamobile.com/recipes/mobile-wallet-adapter/local-network-access#webpage\",\"url\":\"https://docs.solanamobile.com/recipes/mobile-wallet-adapter/local-network-access\",\"name\":\"Local Network Access Permission\",\"description\":\"Handle the browser Local Network Access permission change that affects MWA wallet connections in mobile web apps and PWAs.\",\"dateModified\":\"2026-10-26T06:42:51.000Z\",\"isPartOf\":{\"@id\":\"https://docs.solanamobile.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.solanamobile.com/recipes/mobile-wallet-adapter/local-network-access#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.solanamobile.com/recipes/mobile-wallet-adapter/local-network-access#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Mobile Wallet Adapter\",\"item\":\"https://docs.solanamobile.com/recipes/mobile-wallet-adapter/caching-wallet-authorization\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Local Network Access Permission\",\"item\":\"https://docs.solanamobile.com/recipes/mobile-wallet-adapter/local-network-access\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.solanamobile.com/recipes/mobile-wallet-adapter/local-network-access#article\",\"headline\":\"Local Network Access Permission\",\"name\":\"Local Network Access Permission\",\"description\":\"Handle the browser Local Network Access permission change that affects MWA wallet connections in mobile web apps and PWAs.\",\"url\":\"https://docs.solanamobile.com/recipes/mobile-wallet-adapter/local-network-access\",\"mainEntityOfPage\":{\"@id\":\"https://docs.solanamobile.com/recipes/mobile-wallet-adapter/local-network-access#webpage\"},\"dateModified\":\"2026-10-26T06:42:51.000Z\",\"publisher\":{\"@id\":\"https://docs.solanamobile.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.solanamobile.com#website\"}}]}\u003c/script>","siteName":"Solana Mobile Docs","nav":{"global":null,"tabs":[{"tab":"Home","icon":"house","pages":[{"title":"Home","href":""}]},{"tab":"Get Started","icon":"book-open","pages":[{"title":"Get Started","href":"/get-started/overview"}]},{"tab":"Solana Mobile Stack","icon":"layer-group","pages":[{"title":"Solana Mobile Stack","href":"/solana-mobile-stack/overview"}]},{"tab":"CLI","icon":"terminal","pages":[{"title":"CLI","href":"/cli/overview"}]},{"tab":"dApp Store","icon":"store","pages":[{"title":"dApp Store","href":"/dapp-store/intro"}]},{"tab":"Recipes","icon":"utensils","groups":[{"group":"Recipes","pages":[{"title":"Recipes","sidebarTitle":"Overview","mode":"wide","href":"/recipes/overview"}]},{"group":"General","pages":[{"title":"Detecting Seeker Users","href":"/recipes/general/detecting-seeker-users"},{"title":"Test with any Android device","href":"/recipes/general/test-with-any-android-device"},{"title":"Publishing from Google Play to the dApp Store","sidebarTitle":"Publishing from Google Play","href":"/recipes/general/publishing-from-google-play"},{"title":"Publishing a Web App on the dApp Store","sidebarTitle":"Publishing a Web App","href":"/recipes/general/publishing-a-web-app"}]},{"group":"Mobile Wallet Adapter","pages":[{"title":"Caching MWA Authorization","sidebarTitle":"Cache wallet authorization","href":"/recipes/mobile-wallet-adapter/caching-wallet-authorization"},{"title":"Migrate to Wallet Standard","description":"On the web, Mobile Wallet Adapter (MWA) is available as a *standard wallet* with the package:","href":"/recipes/mobile-wallet-adapter/migrating-to-wallet-standard"},{"title":"Local Network Access Permission","sidebarTitle":"Local Network Access","href":"/recipes/mobile-wallet-adapter/local-network-access"},{"title":"Wallet Signing on iOS","description":"Why Mobile Wallet Adapter is unavailable on iOS, and which alternatives to use for wallet signing and key custody.","sidebarTitle":"Wallet Signing on iOS","href":"/recipes/mobile-wallet-adapter/wallet-signing-on-ios"}]},{"group":"Solana Development","pages":[{"group":"Anchor","pages":[{"title":"Use Anchor Programs in Kotlin","sidebarTitle":"Kotlin","href":"/recipes/solana-development/anchor/kotlin"},{"title":"Use Anchor Programs in React Native","sidebarTitle":"React Native","href":"/recipes/solana-development/anchor/react-native"}]}]}]},{"tab":"Saga","hidden":true,"pages":[{"title":"Saga","href":"/saga/release-notes"}]},{"tab":"Sample Apps","icon":"grid-2","pages":[{"title":"Sample Apps","href":"/sample-apps/sample_app_overview"}]},{"tab":"Seeker","icon":"mobile","pages":[{"title":"Seeker","href":"/seeker/release-notes"}]},{"tab":"Security","icon":"shield-halved","pages":[{"title":"Security","href":"/security"}]}]},"title":"Local Network Access Permission - Solana Mobile Docs","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-DYplxqhs.js","DynamicMarkdown-Cc6AuSHS.js","zoom-image-lightbox-BNnMwe0F.js","lightbox-handle-r17bVUz3.js"]}