Skip to content

[css-layout-api] Developer-friendly solution to avoiding FOUC #856

Open
@philipwalton

Description

@philipwalton

We discussed this briefly at TPAC last year (and I know there have been a few proposals to address the larger problem at a platform level), but I wanted to open an issue anyway as a reminder so it doesn't get overlooked, and also to solicit feedback from the larger development community.

At the moment, it's a bit tricky for web developers to use the CSS Custom Layout API in a way that doesn't lead to a flash of un/miss-styled content (FOUC). And this is especially import for a layout API because swapping from a fallback is likely to lead to really bad UX (which isn't necessarily true for something like custom paint).

Some current options are:

  • Wait for all CSS.layoutWorklet.addModule() calls to resolve and then add a class to the <body> when ready.
  • Wrap your CSS in an @supports rule and hide things until support is detected
  • Use hacks to inline the registerLayout() code (since IIUC there's not yet a way to load this outside of a worklet)

While these are OK solution, there's not particularly ergonomic, and I can see some developers avoiding custom layout entirely because it doesn't just work (i.e. doesn't just work like CSS).

At TPAC @bfgeek mentioned that he plans to support inlining the worklet code, and said there was some discussion of a document-level promise that the rendering engine could await before styling. These all seem like fantastic solutions, but I wanted to open this issue to see if anyone has any other ideas that may make this even easier.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions