Open andremfaria opened 3 months ago
Hi @andremfaria ! Thank you for reporting!
Are you doing pnpm run dev
or pnpm run build
+ serve the built folder?
I can see it working with both options though:
https://github.com/user-attachments/assets/37c2267d-4705-4af4-b557-80dfbf7ad0f4
Hello @christopherferreira9, thanks for your feedback!
I noticed in your video that you're not using the iframe. Could you please test it on http://local-ip:port/iframe/index.html? The issue only happens when using an iframe.
Hi @andremfaria ! You're right, got it to reproduce going into the proper route, I'm sorry for the confusion. Will escalate to investigate.
Hi @christopherferreira9, just an update: I tested with version 0.28.1
, and the issue is still occurring.
Heu @andremfaria , this looks like an IOS limitation. Are you saying it was working on previous versions? And which one?
The sdk is emitting this event: ' provider.emit('display_uri', qrcodeLink); ' which contains the link of the deeplink or qrcode.
One way you could do it, is by listening for the 'display_uri' event from sdk then communicate it back to the iframe and from the iframe open the deeplink...
Hello @abretonc7s,
The last version where it worked was 0.26.5
, and the issue began with 0.27.0
.
I'll try your suggestion and let you know the results.
Thanks
Hello @abretonc7s Just an update, I haven't tested yet on the real project, but on the reproducible code, I was able to connect by listening to that event and then opening the deep link.
Although I believe this isn't an iOS limitation, as setting the version to 0.26.5
or older on the reproducible code works fine. Most likely, this was a regression introduced when upgrading from 0.26.5
to 0.27.0
.
Hi @andremfaria , apologies for our slow response on this. I will have a deeper look and should have a fix by Monday.
Wait, @andremfaria did you say you now have it working?
A few notes:
Please confirm that you are unblocked and everything is working. If not, please specify the remaining issue and @abretonc7s can help.
hi @andremfaria ,
here is a simpler fix you can use:
ReactDOM.createRoot(document.getElementById('root')!).render(
<React.StrictMode>
<MetaMaskProvider debug={true}
sdkOptions={{
useDeeplink: true,
extensionOnly: false,
openDeeplink(arg) {
console.log("openDeeplink", arg)
window.open(arg, "_blank")
console.log(`deeplink opened: ${arg}`)
},
logging: {
developerMode: true,
sdk: true,
},
dappMetadata: {
name: "Demo React App",
url: window.location.protocol + '//' + window.location.host,
}
}}>
<App />
</MetaMaskProvider>
</React.StrictMode>,
)
Just add the opendeeplink function to the sdkOptions.
SDK
Web
Provide environment information
web sdk-react 0.27.0 safari 17.4
MetaMask SDK Version
0.27.0
MetaMask Mobile app Version
7.27.0
What browser are you using? (if relevant)
Safari 17.4
How are you deploying your application? (if relevant)
web
Describe the Bug
With the new version 0.27.0, if we are using an iframe and hit
sdk?.connect()
, nothing happens. This behaviour occurs in Safari on iOS.Video:
https://github.com/user-attachments/assets/8dcc9cb1-d27f-4ef6-88fc-2ad230cfcbbd
Expected Behavior
We should be able to connect on Safari@IOS within an Iframe.
Link to reproduction - Issues with a link to complete (but minimal) reproduction code will be addressed faster
https://github.com/andremfaria/mm-iframe/
To Reproduce
Run the Project: https://github.com/andremfaria/mm-iframe/
Open Safari on iOS:
Access the Local Server:
http://<your-local-ip>:5173/iframe/index.html
.<your-local-ip>
with your actual local IP address.Trigger the Issue: