Shopify / ui-extensions

MIT License
248 stars 35 forks source link

Bad apple among checkout ui extensions prevents other checkout ui extensions from loading #2076

Open FrankHeijden opened 2 weeks ago

FrankHeijden commented 2 weeks ago

Describe the bug

It seems checkout ui extensions are prevented from loading when one checkout ui extension times out while mounting. This doesn't seem like correct behaviour, if one checkout UI extension fails to load, it shouldn't block other ui extensions from loading.

Steps to reproduce the behavior:

Reproducibility is hard, since for us we found out about this error in the Instagram & Facebook sales channel app:

Screenshot 2024-06-13 at 14 29 26

The checkout page displays the skeleton loading page for around 10 (whole!) seconds, until the timeout messages are displayed in the console by the Facebook & Instagram sales channel. After which, the checkout ui page loads, but all other checkout ui extensions aren't loaded.

Expected behavior

Checkout UI extensions timing out shouldn't interfere with other checkout ui extensions.

Additional data

Might be related to https://github.com/Shopify/ui-extensions/issues/1957.

jun-shop commented 2 weeks ago

👋 hi @FrankHeijden thanks for reporting. do you know if this is on web or native mobile?

FrankHeijden commented 2 weeks ago

👋 hi @FrankHeijden thanks for reporting. do you know if this is on web or native mobile?

This happened on web, not sure for mobile native

jun-shop commented 2 weeks ago

Do you have control over all of the extensions that are being used here? If so one thing you could try is returning a SkeletonImage first and then updating the extension once data is available.

FrankHeijden commented 2 weeks ago

Unfortunately this one doesn't seem to be controllable as it's directly injected by the Facebook & Instagram sales channel app -- I believe this issue needs to be fixed in their web pixel ui extension.

However, I also believe this issue should also be investigated by Shopify, as no extension should prevent other extensions from loading on the checkout page.