web3ui / web3uikit

Lightweight reusable Web3 UI components for dapps.
https://web3uikit.com
MIT License
1.72k stars 269 forks source link

Compatibility issue with Google Chrome core 112 and 113 #1084

Closed sshlapakovvlad closed 1 year ago

sshlapakovvlad commented 1 year ago

The web3uikit/web3 library uses chainsafe, which in turn uses numeric-separator inside @chainsafe/persistent-merkle-tree/lib/proof/compactMulti.js inside getBit() function inside a switch block.

Screenshot 2023-05-05 at 20 56 31

This implementation works perfectly fine on Google Chrome core 111 or less, but on Google Chrome core 112 and 113, it crashes with the following error message: "Module parse failed: Identifier directly after number (62:27)"

Screenshot 2023-05-05 at 20 57 10

I have tried setting up a Babel script to support plugin-proposal-numeric-separator, but it didn't help. The issue should focus on finding a solution to make the web3uikit/web3 library compatible with Google Chrome core 112 and 113.

Environment:

Operating system: MacOS Ventura 13.3.1 Node version: v18.16.0 web3uikit/core version: 1.0.0 web3uikit/icons version: 0.4.1 web3uikit/web3 version: 0.3.2

Steps to reproduce:

Run web3uikit/web3 library on Google Chrome core 112 or 113. Observe that it crashes with the error message mentioned above.

Expected behavior:

The web3uikit/web3 library should work correctly on Google Chrome core 112 and 113.

Additional information:

@chainsafe/persistent-merkle-tree version: @chainsafe/persistent-merkle-tree@0.6.1 Babel script used to support plugin-proposal-numeric-separator:

{
  "presets": [
    "@babel/preset-env"
  ],
  "plugins": [
    "@babel/plugin-proposal-numeric-separator"
  ]
}

I would appreciate any help or suggestions to resolve this issue. Thank you!

BillyG83 commented 1 year ago

I do not think this is in scope to fix, we dont import or use chainsafe so its a dependancy of a dependancy issue. I assume this is part of the /web3 section of the repo that is depreciated also.

If you want to try and fix it that would be appreciated 💚

sshlapakovvlad commented 1 year ago

I was not aware of the deprecation of the /web3 section. Can you please provide more information on this and whether there are any plans to support the components from the /web3 package, such as the ConnectButton, in the future? This information would be helpful as we evaluate our options for addressing the compatibility issue. Thank you for your help.

BillyG83 commented 1 year ago

hey @sshlapakovvlad if you want to take advantage of these i would fork the repo. The current connect button is dependent on either of an old service Moralis no longer supports, or a self hosted work around.

After a lot of thought I do not think its something that a UI kit should deliver especially with all the dependancy issues that come with it.

I would highly recommend using RainbowKit or Magic UI that are far better alternatives with whole businesses focused on delivering good DX.

The next iteration of the kit will be focused on helping people build quality, customisable UI that will take Moralis API data as its input. If you would like to be involved in community contributions that would be fantastic.

sshlapakovvlad commented 1 year ago

Thank you for your response and for the explanation about the deprecation of the /web3 section. I appreciate your recommendation of using RainbowKit or Magic UI as alternative options.

I completely understand the decision not to include the ConnectButton component in the UI kit, given the dependency issues that come with it. I wish you the best of luck with the development of the next iteration of the kit, and I would be happy to be involved in community contributions if there are any opportunities in the future. Thank you again for your help.