w3c / w3c/csswg-drafts

Define concepts of batching and flushing of style and layout information

Open
#5,115 8 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Help Wanted HTML Needs Thought tag-tracker unknown/future spec
Dominant language
Bikeshed
Stars
4.9k
Forks
816
PR merge metrics
PR metrics pending

Description

It's not entirely clear what spec this should go in, but I think it is within the CSS Working Group's space.

In whatwg/html#3246 there's a discussion about better specifying the concepts of batching and flushing of style and layout information. I believe it's desirable to specify this in a good bit more detail than it's specified now, because it has significant effects on things like:

  • performance characteristics of APIs
  • the order in which various events or notifications fire (which can affect interoperability)

That doesn't mean it should necessarily be specified in all detail. It might be desirable to leave room for optimizations that don't exist today, such as updating style or layout for part of a document tree rather than all of it -- though those optimizations might also be difficult to do because of compatibility issues (which would suggest that the details they depend on should be specified).

So, in particular, I think some document in the CSS working group needs to define the idea that certain sets of changes can be buffered up rather than being executed immediately, and then it needs to export definitions that other specs can link to for something like flush style and flush layout. This can then allow other APIs to say when they do these things, and also allow various other things that send notifications (like resize events, IntersectionObserver, or ResizeObserver) to specify more clearly whether the notifications are triggered by any layout, or only by the primary layout within the update the rendering steps.

This would also help make progress on the broader goal of helping other specifications figure out how to integrate with batching/flushing and with the update the rendering steps.

(Filed during a breakout at the TAG's virtual face-to-face where @hober and I are discussing w3ctag/design-reviews#489.)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the discussion in whatwg/html#3246 and the linked HTML “update the rendering” section, then review the related TAG design review w3ctag/design-reviews#489. Determine which CSS Working Group document should define batching, style flushing, and layout flushing. Done means the concepts and cross-specification integration points have an agreed home and sufficiently precise definitions.

Written by the indexing model from the issue text.

Assessment

Tech stack
css
Domain
web-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.