webpack-dev-server icon indicating copy to clipboard operation
webpack-dev-server copied to clipboard

improve our overlay

Open alexander-akait opened this issue 3 years ago • 20 comments

  • [ ] This is a bug
  • [x] This is a modification request

Code

improve our default overlay:

  1. Allow to catch runtime errors
  2. Improve errors/warnings reporting (ideally we should have )
  3. Improve styles
  4. More?

CRA has react-error-overlay, I think we can union with them and create the one great overlay

/cc @raix

Please paste the results of webpack-cli info and webpack-cli version here, and mention other relevant information

Expected Behavior

Better DX

Actual Behavior

Our overlay is very simple and in some places have bad DX

alexander-akait avatar Aug 19 '21 13:08 alexander-akait

Not sure if it's possible, but it would be awesome if compilation errors were shown after refreshing the page! 🙂 Currently if the page is refreshed when there's a compilation error, we just get a whitescreen and no overlay is shown.

Eli-Black-Work avatar Aug 23 '21 02:08 Eli-Black-Work

I'd be happy to try implementing these improvements.

SuneelFreimuth avatar Aug 23 '21 05:08 SuneelFreimuth

Not sure if it's possible, but it would be awesome if compilation errors were shown after refreshing the page! slightly_smiling_face Currently if the page is refreshed when there's a compilation error, we just get a whitescreen and no overlay is shown.

Can you provide reproducible steps, I think it is bug

alexander-akait avatar Aug 23 '21 12:08 alexander-akait

react-error-overlay seems to be easily integrable, adding it to the client works out of the box. Two notes:

  • it doesn't support build warnings, i.e., build errors are not dismissable
  • it also displays runtime errors, which is not the existing overlay did. If the dev server decides to support this, source code fetch logic should be also updated

ylemkimon avatar Aug 31 '21 09:08 ylemkimon

@ylemkimon yep, feel free to start it, for runtime errors we need a new options for overlay, i.e. overlay.runtimeErrors

alexander-akait avatar Aug 31 '21 10:08 alexander-akait

how can I customize overlay behavior?

I've tried this

devServer: {
   overlay: {
      warnings: false,
      errors: true
    }
}
```

but it did not worked

sibelius avatar Sep 16 '21 20:09 sibelius

Should work, what is the problem?

alexander-akait avatar Sep 17 '21 11:09 alexander-akait

@sibelius If you're using dev server v4, you should put overlay in client (https://github.com/webpack/webpack-dev-server/blob/master/migration-v4.md):

devServer: {
   client: {
      overlay: {
         warnings: false,
         errors: true
       }
   }
}

ylemkimon avatar Sep 17 '21 11:09 ylemkimon

I think all the 3 listed can be implemented independently.

I would like to share my current thought on number 3 (improve styles).

Based on what I've seen in react-error-overlay, it uses React to render the overlay, I think we should avoid bringing in React just for overlay.

Instead, we can stick with current approach (manually constructing the HTML using plain JS), and just port-in the style.

malcolm-kee avatar Sep 19 '22 07:09 malcolm-kee

@malcolm-kee What we need to implement more, and I will update our check list or maybe we need a small dicussion about other features from CRA (or other good overlays)

alexander-akait avatar May 07 '23 12:05 alexander-akait

CRA error stack was pretty nice as it showed code snippet, but I not sure if that's possible given that we don't have control over devtool options.

Other than that I'm thinking of making runtime overlay less intrusive, like showing at bottom right, since it usually doesn't break application code like compilation error does.

malcolm-kee avatar May 07 '23 13:05 malcolm-kee

@malcolm-kee

Other than that I'm thinking of making runtime overlay less intrusive, like showing at bottom right, since it usually doesn't break application code like compilation error does.

Sounds good, even more, I think we can add an option for this, even for compilation errors/warnings

CRA error stack was pretty nice as it showed code snippet, but I not sure if that's possible given that we don't have control over devtool options.

Can you show me, because we can use generate source maps (if they were enabled)

alexander-akait avatar May 07 '23 13:05 alexander-akait

Can you show me, because we can use generate source maps (if they were enabled)

Found the following gif from here.

cra-runtime-error

malcolm-kee avatar May 07 '23 14:05 malcolm-kee

hm, I see, I think we can improve it on webpack side, I will look deeply on this before preparing the new release and will say how we can achive it

alexander-akait avatar May 07 '23 15:05 alexander-akait

Another inspiration from React Native:

React Native Error

We can probably support shortcut key so it's easy to show/hide the error.

malcolm-kee avatar May 11 '23 11:05 malcolm-kee

Adding some design: https://www.figma.com/file/xyeFjFzImMya1MdDDn7vii/Webpack-Error-Overlay?type=design&node-id=0%3A1&t=SgABTKrN4qJU6k15-1

Feedbacks are welcomed.

Compilation error

compilation-error

Runtime error notification

This notification button will be positioned fixed at bottom right

runtime-notification

Runtime error (when clicked)

runtime-error

malcolm-kee avatar May 12 '23 15:05 malcolm-kee

@malcolm-kee These designs look awesome. Sad that it's unlikely they will ever get implemented.

levrik avatar Jan 19 '24 08:01 levrik

@levrik I am fine with such improvements and the new design, if you want to send PR - welcome

alexander-akait avatar Jan 19 '24 11:01 alexander-akait

I can try implementing this design post major version release.

snitin315 avatar Jan 19 '24 13:01 snitin315

@alexander-akait I would love to but doubt I'll find the time for it. @snitin315 This would be awesome!

levrik avatar Jan 19 '24 15:01 levrik