Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EUI Icons not rendering for some users #7852

Closed
scottybollinger opened this issue Jun 25, 2024 · 6 comments
Closed

EUI Icons not rendering for some users #7852

scottybollinger opened this issue Jun 25, 2024 · 6 comments
Labels
bug ⚠️ needs validation For bugs that need confirmation as to whether they're reproducible

Comments

@scottybollinger
Copy link
Contributor

scottybollinger commented Jun 25, 2024

Relates to https://github.com/elastic/docsmobile/issues/856

Describe the bug
We have an intermittent issue where some users see a grey box where icons should be. We've held off on opening the issue because it's so hard to consistently reproduce. We now have a hacky way to at least show what users are seeing. We are still on an old version of EUI but updated our staging server with the latest to confirm the issue still exists. See below.

Impact and severity
This is affecting the public facing docs on multiple pages.

Environment and versions

  • EUI version: 95.1.0
  • React version: 18.2.0
  • Kibana version (if applicable): N/A
  • Browser: Chrome
  • Operating System: MacOS

To Reproduce
Steps to reproduce the behavior:

  1. Go to docs staging site (currently on 95.1.0 for testing) also works on live docs (not yet upgraded) in Chrome
  2. Open dev tools
  3. Click on the Performance tab
  4. Click Record button in top left
  5. Refresh the page
  6. See icons broken

Expected behavior
Icons render with no gray boxes

Minimum reproducible sandbox
N/A

Screenshots

Video of repro steps:

2024-06-25_14-37-44.mp4

Other screenshot caught in wild. Note that even icons baked into components (dropdown arrows on left) are grayed out:

image

Additional context
The steps to repo above is the only way we can consistently get the error to occur. We've had several users report it and have yet to have a better way to consistently reproduce. This has been reported by 5-10 users and occurs on mobile Safari as well.

@scottybollinger scottybollinger added bug ⚠️ needs validation For bugs that need confirmation as to whether they're reproducible labels Jun 25, 2024
@JasonStoltz
Copy link
Member

For added context, this is occurring in a Next.js project.

EUI does not technically support Next.js, so your mileage may vary here.

Our dynamically loaded icons cause issues in number of environments, and I'm sure it's related to that.

@JasonStoltz
Copy link
Member

@scottybollinger Can you reproduce locally in Next.js, or only on live docs?

@scottybollinger
Copy link
Contributor Author

@scottybollinger Can you reproduce locally in Next.js, or only on live docs?

I cannot reproduce locally and have never seen it locally, personally.

@JasonStoltz
Copy link
Member

So what is different in the deployed docs vs local?

@scottybollinger
Copy link
Contributor Author

Other than the files being hosted locally, nothing.

@tkajtoch
Copy link
Member

tkajtoch commented Jul 8, 2024

From what I observed, it is likely related to Next.js static builds and how the app is hydrated in a browser. EuiIcon is not a fully server-side compatible component, and Next.js may not include the dynamically loaded icons in the page JS bundle.

As a workaround, I recommend manually importing the icon and passing it to the type prop of the EuiIcon component like so:

import { EuiIcon } from '@elastic/eui';
import { icon as checkIcon } from "@elastic/eui/lib/components/icon/assets/check";

const MyComponent = () => (
  <EuiIcon type={checkIcon} />
);

@JasonStoltz JasonStoltz closed this as not planned Won't fix, can't repro, duplicate, stale Jul 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug ⚠️ needs validation For bugs that need confirmation as to whether they're reproducible
Projects
None yet
Development

No branches or pull requests

3 participants