Chromium Blog
News and developments from the open source browser project
Transitioning from SPDY to HTTP/2
Thursday, February 11, 2016
Last year we
announced
our intent to end support for the experimental protocol SPDY in favor of the standardized version,
HTTP/2
. HTTP/2 is the next-generation protocol for transferring information on the web, improving upon HTTP/1.1 with more features leading to better performance. Since then we've seen huge adoption of HTTP/2 from both
web
servers
and
browsers
, with most now supporting HTTP/2. Over 25% of resources in Chrome are currently served over HTTP/2, compared to less than 5% over SPDY. Based on such strong adoption, starting on May 15th — the anniversary of the
HTTP/2 RFC
— Chrome will no longer support SPDY. Servers that do not support HTTP/2 by that time will serve Chrome requests over HTTP/1.1, providing the exact same features to users without the enhanced performance of HTTP/2.
At the same time, Chrome will stop supporting the TLS protocol extension
NPN
, which allows servers to negotiate SPDY and HTTP/2 connections with clients. NPN has been superseded by the TLS extension
ALPN
, published by the IETF in 2014. ALPN is already used 99% of the time to negotiate HTTP/2 with Chrome, and the remaining servers can gain ALPN support by
upgrading their SSL library
.
We are looking forward to HTTP/2 continuing to gain adoption, bringing us an even faster web.
Update: To better align with Chrome's release cycle, SPDY and NPN support will be removed with the release of Chrome 51
.
Posted by Bence Béky, Network Protocol Engineer and HTTP/2 Enthusiast
The Physical Web expands to Chrome for Android
Wednesday, February 10, 2016
The
Physical Web
helps users discover URLs relevant to their surroundings via
Eddystone
bluetooth low-energy beacons. Last year, Chrome for iOS took an
initial step
in supporting the Physical Web, and the community has already begun exploring promising applications. Starting in version 49, Chrome for Android will also surface Physical Web content, making these experiences available to an even larger audience.
As
Physical Web-enabled beacons
are becoming more widespread, developers are experimenting with the platform in various ways. One
Physical Web demo
posted by a Mozilla community contributor shows users how to use bluetooth beacons to discover and interact with a drone. Brookwood Middle School
uses beacons
from BKON to circulate class notes, sports accomplishments, and news updates. Radius Networks, a beacon manufacturer, recently
deployed 1,500 beacons
to help attendees of
CES® (Consumer Electronics Show)
navigate showrooms. The Golden State Warriors
utilize the Physical Web
with the help of Signal360 to provide fans with highlight videos and welcome content at Oracle Arena.
Physical Web bluetooth beacons enabled a scavenger hunt at
CES® 2016.
Now, Physical Web developers can reach Chrome for Android users as well, starting with the Beta channel and rolling out more widely soon. When these users walk by a beacon for the first time, they’ll receive a notification allowing them to enable the Physical Web. On future encounters with beacons, users can quickly see a list of nearby URLs by tapping on a non-vibrating notification waiting for them.
Physical Web experience on Chrome for Android
Developers can make their web content discoverable on the Physical Web by configuring an
Eddystone-supported beacon
to broadcast a URL of their choice with the
Eddystone-URL
frame type. Now that the Physical Web is tightly integrated into Chrome for Android, a single deployment can deliver contextual information to Chrome users across multiple mobile platforms.
As we continue to improve the Physical Web experience, we’re excited to see what types of contextual experiences developers build. We encourage anyone to join the conversation on our
mailing list
and visit the
Physical Web cookbook
to learn more about what’s possible.
Posted by Ani Mohan, Physical Web Voyager
Chrome 49 Beta: CSS custom properties, background sync with service workers, and new ES2015 features
Tuesday, February 2, 2016
Unless otherwise noted, changes described below apply to the newest Chrome
Beta
channel release for Android, Chrome OS, Linux, Mac, and Windows.
CSS custom properties
Modern websites often have CSS files with repeated values, such as a few colors reused throughout the page in a color scheme. Altering this data can be tedious and error-prone, since it’s scattered throughout one or more CSS files.
To improve this, Chrome now supports
CSS custom properties
, allowing developers to define property variables in CSS without using external frameworks. Developers can then use the
var() function
to
reference these custom properties
anywhere in the document.
Changing a custom property can update multiple components in a website
CSS custom properties also inherit across
shadow roots
, so a web component can provide a “style API” that makes it possible to tweak and theme the component without knowing about its internals. The Polymer library uses this platform feature to
simplify customizing components
.
Background sync with service workers
Previously, sites could lose local changes or become out of sync if a user didn’t stay on the site until updates could be sent over the network. For example, an email client might lose a pending message if the user hit "send" and quickly navigated away. The new
Background Sync API
improves
networking reliability by allowing
service workers to schedule
a one-off sync of a user’s local changes
when the device next connects to the network, even if the site isn’t open.
Improved ECMAScript 2015 support
The
ES2015 specification
(ES6) is a major update to JavaScript that allows developers to write application logic that is more legible, powerful, and memory efficient. The
latest version of Chrome’s V8 engine
has
91% JavaScript ES2015 feature support
. Developers can now use
destructuring
and
default parameters
to avoid boilerplate code when extracting data from arrays and objects or when
setting function parameter defaults
.
Proxy objects
and the
Reflect API
can
customize previously hidden object behavior such as property lookup and assignment
. The latest version of Chrome also makes block-level constructs such as
class
and
let
available outside of
strict mode
.
Keygen and application/x-x509-user-cert
The
<keygen> element
is used to generate a key-pair as part of an HTML form. While this can be used to enhance user security, <keygen> and user certificates sent with the MIME type of application/x-x509-user-cert can be exploited to disrupt a user’s secure communication, interfere with the functioning of their devices, or track the user without consent. Going forward, <keygen> will return an empty string by default and user certificates sent with the MIME type of application/x-x509-user-cert will no longer be automatically downloaded and installed.
Other features in this release
With user consent, sites can
record audio and video
without relying on plugins by using the new
MediaRecorder API
.
Developers can now
control how fonts load
using
CSS font-display
, improving page load speed.
Sites can now detect which service worker client initiated a fetch request and return a specialized response using the
FetchEvent.clientID attribute
.
Chrome now
animates scrolling
for discrete scrolling devices like mouse wheels, allowing for a
smoother user experience
.
Chrome now more strictly
protects secure cookies
and allows developers to identify secure cookies using
cookie prefixes
.
Sites can now prevent media from playing remotely
using the disableRemotePlayback attribute
as part of the
Remote Playback API
.
Event.timeStamp is now a
DOMHighResTimeStamp
instead of a
DOMTimeStamp
, allowing for high-precision scroll latency and
pointer velocity measurements
.
Promise rejection handling can now be tracked using the
UnhandledRejection and RejectionHandled events
.
Developers can now
interact with the GET parameters of a URL
more easily using
URLSearchParams
.
The
WebAudio API
now supports
IIR Filters
,
OfflineAudioContext.suspend() and resume()
, and promises in
DecodeAudioData
.
WindowClient.navigate()
allows
service workers to navigate controlled windows
to a new URL.
Sites can detect if a user has requested reduced data usage and respond with a lighter experience by checking the
Save-Data header field
.
Mi
nor changes
Chrome’s
content security policy
now matches ‘script-src http:’ to both HTTP and HTTPS, preventing developers from accidentally rejecting secure resources.
The
Request.mode
enum of the
Fetch API
now
supports a navigate mode
, improving spec compliance.
Developers now have the option to
ignore case
when matching attribute selectors.
Developers can now create pop-ups that don’t expose which page opened them using
'rel=noopener'
.
addEventListener() and removeEventListener()
now require their first two arguments and can have the "capture" option specified using dictionary syntax, improving spec compliance and flexibility.
Chromium now supports the standardized version of
ChaCha-Poly1305 cipher suites
in TLS.
Navigator.getStorageUpdates() has been removed as it is no longer in the
Navigator spec
.
MouseEvent.webkitMovementX/Y has been removed in favor of the
unprefixed version
.
initTouchEvent
has been deprecated in favor of the
TouchEvent constructor
to improve spec compliance and will be removed altogether in Chrome 53.
Object.observe() has been deprecated as it is
no longer on the standardization track
and will be removed in a future release.
The
getComputedStyle(e).cssX
behaviour has been deprecated since it was not a part of the formal
spec
.
Some non-standard uses of RTCPeerConnection legacy methods have been deprecated to enable promise-based implementation of the
WebRTC spec
.
Document.defaultCharset
has been deprecated to improve spec compliance.
Posted by Josh Karlin, Syncing Samurai
Labels
$200K
1
10th birthday
4
abusive ads
1
abusive notifications
2
accessibility
3
ad blockers
1
ad blocking
2
advanced capabilities
1
android
2
anti abuse
1
anti-deception
1
background periodic sync
1
badging
1
benchmarks
1
beta
83
better ads standards
1
billing
1
birthday
4
blink
2
browser
2
browser interoperability
1
bundles
1
capabilities
6
capable web
1
cds
1
cds18
2
cds2018
1
chrome
35
chrome 81
1
chrome 83
2
chrome 84
2
chrome ads
1
chrome apps
5
Chrome dev
1
chrome dev summit
1
chrome dev summit 2018
1
chrome dev summit 2019
1
chrome developer
1
Chrome Developer Center
1
chrome developer summit
1
chrome devtools
1
Chrome extension
1
chrome extensions
3
Chrome Frame
1
Chrome lite
1
Chrome on Android
2
chrome on ios
1
Chrome on Mac
1
Chrome OS
1
chrome privacy
4
chrome releases
1
chrome security
10
chrome web store
32
chromedevtools
1
chromeframe
3
chromeos
4
chromeos.dev
1
chromium
9
cloud print
1
coalition
1
coalition for better ads
1
contact picker
1
content indexing
1
cookies
1
core web vitals
2
csrf
1
css
1
cumulative layout shift
1
custom tabs
1
dart
8
dashboard
1
Data Saver
3
Data saver desktop extension
1
day 2
1
deceptive installation
1
declarative net request api
1
design
2
developer dashboard
1
Developer Program Policy
2
developer website
1
devtools
13
digital event
1
discoverability
1
DNS-over-HTTPS
4
DoH
4
emoji
1
emscriptem
1
enterprise
1
extensions
27
Fast badging
1
faster web
1
features
1
feedback
2
field data
1
first input delay
1
Follow
1
fonts
1
form controls
1
frameworks
1
fugu
2
fund
1
funding
1
gdd
1
google earth
1
google event
1
google io 2019
1
google web developer
1
googlechrome
12
harmful ads
1
html5
11
HTTP/3
1
HTTPS
4
iframes
1
images
1
incognito
1
insecure forms
1
intent to explain
1
ios
1
ios Chrome
1
issue tracker
3
jank
1
javascript
5
lab data
1
labelling
1
largest contentful paint
1
launch
1
lazy-loading
1
lighthouse
2
linux
2
Lite Mode
2
Lite pages
1
loading interventions
1
loading optimizations
1
lock icon
1
long-tail
1
mac
1
manifest v3
2
metrics
2
microsoft edge
1
mixed forms
1
mobile
2
na
1
native client
8
native file system
1
New Features
5
notifications
1
octane
1
open web
4
origin trials
2
pagespeed insights
1
pagespeedinsights
1
passwords
1
payment handler
1
payment request
1
payments
2
performance
20
performance tools
1
permission UI
1
permissions
1
play store
1
portals
3
prefetching
1
privacy
2
privacy sandbox
4
private prefetch proxy
1
profile guided optimization
1
progressive web apps
2
Project Strobe
1
protection
1
pwa
1
QUIC
1
quieter permissions
1
releases
3
removals
1
rlz
1
root program
1
safe browsing
2
Secure DNS
2
security
36
site isolation
1
slow loading
1
sms receiver
1
spam policy
1
spdy
2
spectre
1
speed
4
ssl
2
store listing
1
strobe
2
subscription pages
1
suspicious site reporter extension
1
TCP
1
the fast and the curious
23
TLS
1
tools
1
tracing
1
transparency
1
trusted web activities
1
twa
2
user agent string
1
user data policy
1
v8
6
video
2
wasm
1
web
1
web apps
1
web assembly
2
web developers
1
web intents
1
web packaging
1
web payments
1
web platform
1
web request api
1
web vitals
1
web.dev
1
web.dev live
1
webapi
1
webassembly
1
webaudio
3
webgl
7
webkit
5
WebM
1
webmaster
1
webp
5
webrtc
6
websockets
5
webtiming
1
writable-files
1
yerba beuna center for the arts
1
Archive
2024
Aug
Jun
May
Apr
Mar
Feb
2023
Nov
Oct
Sep
Aug
Jun
May
Apr
Feb
2022
Dec
Sep
Aug
Jun
May
Apr
Mar
Feb
Jan
2021
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2020
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2019
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2018
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2017
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2016
Dec
Nov
Oct
Sep
Aug
Jun
May
Apr
Mar
Feb
Jan
2015
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2014
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2013
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2012
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2011
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2010
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2009
Dec
Nov
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2008
Dec
Nov
Oct
Sep
Feed
Follow @ChromiumDev
Give us feedback in our
Product Forums
.