I’ve used the Empty State design from patternfly-react: PatternFly 4 • Empty state
Here is the PR: Fixes #33026 - Add React error boundary by laviro · Pull Request #8671 · theforeman/foreman · GitHub
and this is how it looks like at the moment:
any suggestions or concerns?
Much needed functionality
Added also a copy-to-clipboard section with the logs:
@tbrisker also suggested that we would use this error template for sever-side errors.
which we will do as a follow-up, opened redmine: Refactor #33052: Use React error boundary template for server side errors - Foreman
Will this be able to catch errors such as the dreaded
e[t] is undefined?
 - Bug #27345: Products page sometimes does not load - Katello - Foreman
Also the non-react page talks about request UUID and a rake task to fetch more details. See foreman/500.html.erb at develop · theforeman/foreman · GitHub for what it all contains. Should we keep similar information there? While this error is on the frontend side, it may be interesting to connect it to related backend request (if there was some), OTOH it may also be misleading, if you performed many client side steps meanwhile.
the React error boundary works as a try/catch in React render methods,
so if that error (which actually seems like a bundle error (?)) causes a React component not to render,
than the error boundary should catch it.
OTOH it may also be misleading, if you performed many client side steps meanwhile.
imho if the server returned the error I think we should display only server message,
Should we keep similar information there?
I think it would be great if we can pass the actual server logs into the component, can we run that rake task and return its log output for the user?
Well the reason we added the rake task was, some users complained they don’t want to show backtraces to users. So we instead started to give instructions on how to get such traceback when they report an issue (and requires shell access to the machine, which typically sysadmins have)
makes sense, then I guess that if there’s an immediate error we should display that,
additionally, we can mention how to get the rest of the logs.