Browser Feature Watch

This page serves as an one-stop shop for me to keep track of feature compatability in browsers, ordered by level of support and updated daily.

A lot of inspiration for this living collection comes from Michelle Barker, who wrote about upcoming browser features on Smashing Magazine and on CSS { In Real Life }.

Please feel free to suggest new features or even other browsers.

<dialog> (HTML)

Native element for displaying a dialog/modal window.

Desktop support:

  • Chrome: 37
  • Edge: 79
  • Firefox: 98
  • Safari: 15.4

Mobile / Tablet support:

  • Android Browser: 101
  • Chrome (Android): 101
  • Firefox (Android): 100
  • Safari (iOS): 15.4
  • Samsung Internet: 4

Browser support data for dialog comes from caniuse.com and is up-to-date as of .

:focus-visible (CSS)

More discrete condition for focus styles.

Desktop support:

  • Chrome: 86
  • Edge: 86
  • Firefox: 4
  • Safari: 15.4

Mobile / Tablet support:

  • Android Browser: 101
  • Chrome (Android): 101
  • Firefox (Android): 100
  • Safari (iOS): 15.4
  • Samsung Internet: 14

Browser support data for css-focus-visible comes from caniuse.com and is up-to-date as of .

:is() (CSS)

Takes a list of selectors as its argument and targets any matching selector in the list. I find it useful for grouping headings, types of elements, and even interaction-based pseudo-classes for anchors, buttons, and the like.

Desktop support:

  • Chrome: 88
  • Edge: 88
  • Firefox: 78
  • Safari: 14

Mobile / Tablet support:

  • Android Browser: 101
  • Chrome (Android): 101
  • Firefox (Android): 100
  • Safari (iOS): 14
  • Samsung Internet: 15

Browser support data for css-matches-pseudo comes from caniuse.com and is up-to-date as of .

Logical Properties (CSS)

Properties used to define size-based values, what we’re used as being width, height, margin-left, and so on, but in such a way that works hand-in-hand with writing-mode without the need to redefine the “top” or “bottom” of an element to do so.

Desktop support:

  • Chrome: 89
  • Edge: 89
  • Firefox: 66
  • Safari: 15

Mobile / Tablet support:

  • Android Browser: 101
  • Chrome (Android): 101
  • Firefox (Android): 100
  • Safari (iOS): 15
  • Samsung Internet: 15

Browser support data for css-logical-props comes from caniuse.com and is up-to-date as of .

CSS Gradients (CSS)

Methods for defining (linear / radial) gradients with CSS.

Desktop support:

  • Chrome: 10
  • Edge: 12
  • Firefox: 36
  • Safari: 15.4

Mobile / Tablet support:

  • Android Browser: 4
  • Chrome (Android): 101
  • Firefox (Android): 100
  • Safari (iOS): 15.4
  • Samsung Internet: 4

Browser support data for css-gradients comes from caniuse.com and is up-to-date as of .

Cascase Layers (CSS)

Gives us tighter control on the reigns of the cascade. This adds a layer of complexity to specificity in our CSS but allows us to designate different parts of our CSS to different layers, much like the concept of stacking with z-index. This complexity actually makes the practise of overriding selector specificity, using !important (proactively, of course!), and a number of other silly tricks we've added to our toolkit over the years.

Desktop support:

  • Chrome: 99
  • Edge: 99
  • Firefox: 97
  • Safari: 15.4

Mobile / Tablet support:

  • Android Browser: 101
  • Chrome (Android): 101
  • Firefox (Android): 100
  • Safari (iOS): 15.4
  • Samsung Internet: No

Browser support data for css-cascade-layers comes from caniuse.com and is up-to-date as of .

Font Palette (CSS)

Define a palette from a color font.

Desktop support:

  • Chrome: 101
  • Edge: No
  • Firefox: No
  • Safari: 15.4

Mobile / Tablet support:

  • Android Browser: 101
  • Chrome (Android): 101
  • Firefox (Android): No
  • Safari (iOS): 15.4
  • Samsung Internet: No

Browser support data for css-font-palette comes from caniuse.com and is up-to-date as of .

Colrv1 Font Formats (CSS)

A font format with additional graphic capabilities: different colours, gradients, and blend modes to name a few.

Desktop support:

  • Chrome: 98
  • Edge: 98
  • Firefox: No
  • Safari: No

Mobile / Tablet support:

  • Android Browser: 101
  • Chrome (Android): 101
  • Firefox (Android): No
  • Safari (iOS): No
  • Samsung Internet: No

Browser support data for colr-v1 comes from caniuse.com and is up-to-date as of .

Viewport Unit Variants (CSS)

Small, large, and dynamic viewport units allow us clearer and more concise definitions for layout.

Desktop support:

  • Chrome: No
  • Edge: No
  • Firefox: 101
  • Safari: 15.4

Mobile / Tablet support:

  • Android Browser: No
  • Chrome (Android): No
  • Firefox (Android): No
  • Safari (iOS): 15.4
  • Samsung Internet: No

Browser support data for viewport-unit-variants comes from caniuse.com and is up-to-date as of .

:has() (CSS)

The fabled “parent selector”! This allows us to finally style an element based on its children.

Desktop support:

  • Chrome: No
  • Edge: No
  • Firefox: No
  • Safari: 15.4

Mobile / Tablet support:

  • Android Browser: No
  • Chrome (Android): No
  • Firefox (Android): No
  • Safari (iOS): 15.4
  • Samsung Internet: No

Browser support data for css-has comes from caniuse.com and is up-to-date as of .

Subgrid (CSS)

Allows grid to cascade into children of a grid container, rather than the need for a flat layout.

Desktop support:

  • Chrome: No
  • Edge: No
  • Firefox: 71
  • Safari: No

Mobile / Tablet support:

  • Android Browser: No
  • Chrome (Android): No
  • Firefox (Android): 100
  • Safari (iOS): No
  • Samsung Internet: No

Browser support data for css-subgrid comes from caniuse.com and is up-to-date as of .

color() (CSS)

Specify a color in a different color space.

Desktop support:

  • Chrome: No
  • Edge: No
  • Firefox: No
  • Safari: 15

Mobile / Tablet support:

  • Android Browser: No
  • Chrome (Android): No
  • Firefox (Android): No
  • Safari (iOS): 15
  • Samsung Internet: No

Browser support data for css-color-function comes from caniuse.com and is up-to-date as of .

lab()/lch() (CSS)

Alternate, more-understandable color functions. lab() defines colors using lightness and a and b values which define the hue. lch() defines colors using lightness, chroma, and hue.

Desktop support:

  • Chrome: No
  • Edge: No
  • Firefox: No
  • Safari: 15

Mobile / Tablet support:

  • Android Browser: No
  • Chrome (Android): No
  • Firefox (Android): No
  • Safari (iOS): 15
  • Samsung Internet: No

Browser support data for css-lch-lab comes from caniuse.com and is up-to-date as of .

Container Queries (CSS)

Like media queries, but even better. Basically, allows us to write context-aware CSS by querying an element’s parent.

Desktop support:

  • Chrome: No
  • Edge: No
  • Firefox: No
  • Safari: No

Mobile / Tablet support:

  • Android Browser: No
  • Chrome (Android): No
  • Firefox (Android): No
  • Safari (iOS): No
  • Samsung Internet: No

Browser support data for css-container-queries comes from caniuse.com and is up-to-date as of .

Nesting (CSS)

This one is a huge part of what makes Sass/SCSS so appealing to developers. Of course, there will always be a value in pre-rendering some parts of our CSS, but I’m excited to see more features like this that will make life easier for developers all the way through from “beginner” to “expert”.

Desktop support:

  • Chrome: No
  • Edge: No
  • Firefox: No
  • Safari: No

Mobile / Tablet support:

  • Android Browser: No
  • Chrome (Android): No
  • Firefox (Android): No
  • Safari (iOS): No
  • Samsung Internet: No

Browser support data for css-nesting comes from caniuse.com and is up-to-date as of .

@when/@else (CSS)

Similar to conditionals in other programming languages. Could be useful for making complex media queries more logical.

Desktop support:

  • Chrome: No
  • Edge: No
  • Firefox: No
  • Safari: No

Mobile / Tablet support:

  • Android Browser: No
  • Chrome (Android): No
  • Firefox (Android): No
  • Safari (iOS): No
  • Samsung Internet: No

Browser support data for css-when-else comes from caniuse.com and is up-to-date as of .

Scroll Timeline (CSS)

Native-CSS animations based on scroll position—no more need for JS!

Desktop support:

  • Chrome: No
  • Edge: No
  • Firefox: No
  • Safari: No

Mobile / Tablet support:

  • Android Browser: No
  • Chrome (Android): No
  • Firefox (Android): No
  • Safari (iOS): No
  • Samsung Internet: No

Browser support data for css-scroll-timeline comes from caniuse.com and is up-to-date as of .

attr() (CSS)

Expands the use of the attr() function by making it available to more properties and by allowing a type or unit to be passed alongside the targetted attribute. This could be used for things like passing a url-type attribute to background-image.

Because this is still an experimental feature, caniuse.com data is currently unavailable from API.

color-contrast() (CSS)

Given one color, chooses from a list of other colors to output the one with the highest contrast.

Because this is still an experimental feature, caniuse.com data is currently unavailable from API.

color-mix() (CSS)

Mixes two colors together.

Because this is still an experimental feature, caniuse.com data is currently unavailable from API.

hwb() (CSS)

Define colors using hue, whiteness, and blackness.

Because this is still an experimental feature, caniuse.com data is currently unavailable from API.

Inert (HTML)

A single HTML attribute that allows you designate parts of your document as inactive, disallowing any interaction (mouse/keyboard/otherwise) within those elements.

Because this is still an experimental feature, caniuse.com data is currently unavailable from API.

Array.prototype.at() (JavaScript)

Like indexOf() but allows us to pass a negative integer, rather than hinging upon the array’s length.

Because this is still an experimental feature, caniuse.com data is currently unavailable from API.

Relative Colors (CSS)

Gives us the ability to generate colours from other colours, with the ability to destructure the colour channels and manipulate them on the way.

Because this is still an experimental feature, caniuse.com data is currently unavailable from API.

Trigonometry Functions (CSS)

I love this stuff and it actually proves very useful if you know how to leverage it! Excited to see them become native.

Because this is still an experimental feature, caniuse.com data is currently unavailable from API.

4 Responses

  1. Avatar for dletorey preventDavesFault(💙💛)
  2. Avatar for dletorey preventDavesFault(💙💛)
  3. Avatar for MicheBarks Michelle Barker
Replies:
  1. Avatar for MicheBarks
    Nice work! 🙌