Contact emails

yyanagis...@chromium.org, sisidov...@chromium.org

Explainer

https://github.com/WICG/service-worker-static-routing-api

Specification

https://github.com/w3c/ServiceWorker/pull/1701

Summary

This API allows developers to configure the routing, and allows them to
offload simple things ServiceWorkers do.  If the condition matches, the
navigation happens without starting ServiceWorkers or executing JavaScript,
which allows web pages to avoid performance penalties due to ServiceWorker
interceptions.


Blink component

Blink>ServiceWorker
<https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EServiceWorker>

TAG review

https://github.com/w3ctag/design-reviews/issues/863

TAG review status

Issues addressed

Chromium Trial Name

ServiceWorkerStaticRouter

Link to origin trial feedback summary

https://docs.google.com/document/d/1mE3tngHQdz0s66Z_iIGksFxQui3taogP8pDafLUHMEg/edit#heading=h.ia9i7k1ocjnq


Origin Trial documentation link

https://github.com/WICG/service-worker-static-routing-api?tab=readme-ov-file#origin-trial

Risks

Interoperability and Compatibility

Gecko: Positive (https://github.com/mozilla/standards-positions/issues/828)

WebKit: No signal (https://github.com/WebKit/standards-positions/issues/206)
Informal positive signals at TPAC, but no official standards position.

Web developers: Positive (https://github.com/w3c/ServiceWorker/issues/1373)
We see many positive signals and feedback from developers on the Github
issue and other places (e.g.
https://jakearchibald.com/2019/service-worker-declarative-router/#disqus_thread).
Also, we have partners who participated in the OT (feedback
<https://docs.google.com/document/d/1mE3tngHQdz0s66Z_iIGksFxQui3taogP8pDafLUHMEg/edit#heading=h.ia9i7k1ocjnq>
).

Other signals:

WebView application risks

Does this intent deprecate or change behavior of existing APIs, such that
it has potentially high risk for Android WebView-based applications?

Authors don’t foresee any obvious issue with WebView. WebView supports
ServiceWorkers, and any existing applications would not be affected unless
they opt-in to the static routing API explicitly.


Debuggability

The registered router rules are visible via
chrome://serviceworker-internals and the DevTools application panel.  The
matched rule can be seen in the size field of the DevTools network panel.


Will this feature be supported on all six Blink platforms (Windows, Mac,
Linux, ChromeOS, Android, and Android WebView)?

Yes

Is this feature fully tested by web-platform-tests
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
?

Yes

https://wpt.fyi/results/service-workers/service-worker/tentative/static-router?label=master&label=experimental&aligned

https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/web_tests/external/wpt/service-workers/service-worker/tentative/static-router/?q=service-workers%2Fservice-worker%2Ftentative%2Fstatic-router


Flag name on chrome://flags

#service-worker-static-router

Finch feature name

ServiceWorkerStaticRouter

Requires code in //chrome?

False

Tracking bug

https://bugs.chromium.org/p/chromium/issues/detail?id=1371756

Launch bug

https://launch.corp.google.com/launch/4261120

Measurement

The number of partners who started to use the API in their production.
UKM's LCP and the partner's business metrics. UseCounter:
ServiceWorkerStaticRouter_AddRoutes and ServiceWorkerStaticRouter_Evaluate

Availability expectation

Feature will eventually be available on Web Platform mainline. The
URLPattern became the standard, and currently no concerns exist.

Adoption expectation

Feature is considered as a best practice to mitigate the ServiceWorker
performance issue on its cold start. Several internal/external partners
have already started trying the feature during the OT, and some of them see
performance improvement. They are expected to use the feature within 12
months of launch in Chrome.

Adoption plan

We have already started the incubation process with several partners. We
intend to move them forward to help them launch. By using the results as
case studies, we intend to expand usage by helping libraries support the
API.

Non-OSS dependencies

Does the feature depend on any code or APIs outside the Chromium open
source repository and its open-source dependencies to function?

n/a

Estimated milestones

Shipping on desktop

123

OriginTrial desktop last

121

OriginTrial desktop first

116

Shipping on Android

123

OriginTrial Android last

121

OriginTrial Android first

116

OriginTrial webView last

121

OriginTrial webView first

116



Anticipated spec changes

Open questions about a feature may be a source of future web compat or
interop issues. Please list open issues (e.g. links to known github issues
in the project for the feature specification) whose resolution may
introduce web compat/interop risk (e.g., changing to naming or structure of
the API in a non-backward-compatible way).

Limit the size of rules.

https://github.com/WICG/service-worker-static-routing-api/issues/5

https://github.com/WICG/service-worker-static-routing-api/issues/6

If the limit is large enough to cover the relevant usages, it should not be
a source of issues.

Timing Info

https://github.com/WICG/service-worker-static-routing-api/issues/19

The timing info for the API will be decided in a backward-compatible way.
It should not be a source of issues.

Making subsequent subresource request uses the navigation request’s source

https://github.com/WICG/service-worker-static-routing-api/issues/7

This can be implemented as another condition, and should not break backward
compatibility.

https://github.com/WICG/service-worker-static-routing-api/blob/main/final-form.md

tells conditions and sources that can be added in the future.  The time
condition and conditional syntaxes are not implemented yet.  Also, some
sources are considered to have fields.  However, they should come as new
conditions / sources, it should not break backward compatibility.


Link to entry on the Chrome Platform Status

https://chromestatus.com/feature/5185352976826368

Links to previous Intent discussions

Intent to prototype:
https://groups.google.com/a/chromium.org/g/blink-dev/c/fyvsde2ay2A/m/RH9E8hB0AgAJ
Intent to Experiment:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGMyg-abNsH2mfBw3%2BiaJgMn3SKCEzBzw0FuMudbmQ9XhkjEVg%40mail.gmail.com

Intent to Extend Experiment:
https://groups.google.com/a/chromium.org/g/blink-dev/c/gTy-fpBOXDM

Intent to Ship:
https://groups.google.com/a/chromium.org/g/blink-dev/c/gTy-fpBOXDM


This intent message was generated by Chrome Platform Status
<https://chromestatus.com/>.

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPNB-6WZdPweNTAvcG4k3kuB9EzV2AbGVme4Byxzg%2BRKganb2Q%40mail.gmail.com.

Reply via email to