Re: Definition of browser vs. WebView

To add to this, it would be good to check with the existing guidelines in
the market. For example, I know that on Apple platforms "browser" apps can
unlock extra webview capabilities. I wonder if we could learn something
from their practice.

On Thu, May 8, 2025 at 11:11 AM Maxim Tsoy <maks.tsoy@gmail.com> wrote:

> Thanks for starting this discussion! I share the feeling that the
> definition can not be expressed in purely technical terms. We've touched
> upon that in the [old threads](
> https://github.com/WebView-CG/usage-and-challenges/issues/41).
> My sense is that there's an intuitive idea of a "web browser", something
> that most users have in mind when they search for a "browser" app in an app
> store.
> I wonder if the eventual definition of a browser should consist of 2 parts:
> 1. a general description in terms of UX (e.g. allowing to browse arbitrary
> links, consuming 3rd-party content, acting as a user agent, and managing
> security and privacy for the user). The goal of this part is to capture the
> intuitive notion of a "full" browser.
> 2. a more technical section clarifying for the specific cases such as
> MiniApps, EPUB readers, etc. This part can change over time as new types of
> apps emerge.
>
>
>
> On Wed, May 7, 2025 at 11:37 PM Niklas Merz <niklasmerz@apache.org> wrote:
>
>> This discussion took an unexpected direction from my original question in
>> the last meeting but I like this and would like to add some late night
>> thoughts.
>>
>> In light of these new questions and comments I came up with the cheesy
>> punchline: *Whether something is considered a browser or a WebView
>> depends not on what it is, but on how it is used.*
>>
>> If you have a closer look at the actual words this might become more
>> obvious:
>>
>> A browser let's the user freely navigate the web as the word "Browsing"
>> is defined:
>> - to look at a lot of things rather than looking for one particular thing
>> - to look through a book, newspaper, website, etc. without reading
>> everything
>> (from
>> https://www.oxfordlearnersdictionaries.com/definition/english/browse_2)
>>
>> WebView means a view that shows web content which is embedded in a native
>> app. The native app embedding the WebView has lot's of control over what
>> content the user sees and how they can interact with the WWW.  That should
>> cover both types of WebViews mentioned before and the original definition
>> of the hidden URL bar. Additionally app developers can apply additional
>> settings like allow lists or disabling JavaScript, CSS etc. that make
>> browsing the web impossible and make their WebView instances just a HTML
>> renderer for local content.
>>
>> This also means if you use let's say WebView2 on Windows to build you own
>> custom browser It's no longer considered a WebView because your whole app
>> becomes a browser. Therefore all apps on iOS that use WKWebView to build a
>> browser experience should be considered a browser. This makes me wonder if
>> their user agent says WKWebView or is customized to be similar to browsers
>> using their own engine.
>>
>>
>>
>> On May 7, 2025, Josh Kadis <josh@kadisco.com> wrote:
>>
>> I was just writing something along these lines, thanks Tim.. From my
>> perspective implementing both the web and native aspects of webviews in
>> iOS, the in-app browser SFSafariViewController is nearly identical to a
>> regular web browser. The only difference is whether the URL field hidden
>> and prefilled by the app or is exposed to the user.
>>
>>
>> On Wed, May 7, 2025 at 11:50 AM Tim Cappalli <timcappalli@cloudauth.dev>
>> wrote:
>>>
>>> Great discussion!
>>>
>>>
>>>
>>> Should the type of WebView also be part of the discussion? In the
>>> context of authentication-related APIs, we typically classify them into
>>> “system webviews” and “embedded webviews”.
>>>
>>>
>>>
>>> Embedded WebViews (ex: WKWebView) run in the context of the calling app
>>> when binding to other services (e.g. a passkey for WebAuthn would use the
>>> app’s context, not necessarily the web context), they don’t have access to
>>> any system level cookies or state, and the calling app can modify the
>>> request and response.
>>>
>>>
>>>
>>> System WebViews (ex: Custom Tabs, ASWebAuthenticationSession) use
>>> traditional browser context (e..g. runs in the web context, not the calling
>>> app), typically have access to system level cookies and state, and the
>>> calling app cannot modify the request or response.
>>>
>>>
>>>
>>> Some examples of how passkeys work with these two different types of
>>> webviews: Android
>>> <https://passkeys.dev/docs/reference/android/#webviews> | macOS
>>> <https://passkeys.dev/docs/reference/macos/#webviews>.
>>>
>>>
>>>
>>> tim
>>>
>>>
>>>
>>> *From: *Ben Wiser <bewise@google.com>
>>> *Date: *Wednesday, May 7, 2025 at 06:57
>>> *To: *Ashley Gullen <ashley@scirra.com>
>>> *Cc: *Mike Taylor <miketaylr@google.com>, public-webview@w3.org <
>>> public-webview@w3.org>
>>> *Subject: *Re: Definition of browser vs. WebView
>>>
>>> Thanks so much for kicking off this thread Ashley! (And sorry for making
>>> you take the lead of this 😅)
>>>
>>>
>>>
>>> I do suspect that the edge cases of experience around the UX will bring
>>> in more complications like the kiosk mode. My understanding of CTs is also
>>> that they are the same process and memory space of the regular browser
>>> process being used. I wonder if the definition of a WebView is less about
>>> Browser / WebView and more about WebView being a separate dimension? For
>>> example, if I build a thin web browser using a popular WebView library
>>> (thin meaning I add very little UX and the WebView is doing most of the
>>> work), it doesn't seem like that library necessarily stops being a WebView?
>>>
>>>
>>>
>>> On Wed, May 7, 2025 at 10:54 AM Ashley Gullen <ashley@scirra.com>
>>> wrote:
>>>
>>> This proposed specification definition of a webview doesn't rely on the
>>> UA string. I just meant it's a basis on which we could start to attempt to
>>> come up with webview statistics based on UA strings seen in the wild (a
>>> separate discussion at our last meeting where the question came up). Any
>>> statistics drawn from UA strings are always going to be imperfect, but it's
>>> all we have to go on for statistics purposes, so we will have to make do.
>>>
>>>
>>>
>>> Chrome in kiosk mode is an interesting case I hadn't thought of - under
>>> this definition it would count as a webview, and I don't think that's
>>> unreasonable, as again it's much like a Cordova app where the content you
>>> see is restricted. I suppose you could argue it's a third mode - just a
>>> special setting for a browser - but I'm not sure how useful it would be to
>>> go down that path, especially if we end up with a fourth, fifth mode etc.
>>> Personally I think an oversimplified definition is better than an
>>> overcomplicated one.
>>>
>>>
>>>
>>> In my view iframes are part of web content and so would never be
>>> categorized as a webview by themselves - perhaps the definition could be
>>> amended to clarify that though. Perhaps something like "if the app
>>> embedding web content allows entering a URL, then it is a browser". Really
>>> the intent is to describe the way the top level frame is embedded.
>>>
>>>
>>>
>>> Ashley
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Tue, 6 May 2025 at 17:46, Mike Taylor <miketaylr@google.com> wrote:
>>>
>>> On 5/6/25 8:54 AM, Ashley Gullen wrote:
>>>
>>> Hi all,
>>>
>>>
>>>
>>> At our last WebView CG meeting I volunteered to help work on the
>>> definition of a browser vs. webview, which quickly led to my promotion to
>>> lead on the topic, so... here we go!
>>>
>>>
>>>
>>> I've had a think and I want to come up with a simple definition that can
>>> easily be used to determine whether something is a webview, without
>>> referencing specific technologies (e.g. the Android Webview). I think this
>>> might be a good definition:
>>>
>>>    - If the user can enter their own URL to navigate to, then it is a
>>>    web browser.
>>>    - If the user cannot enter their own URL to navigate to, then it is
>>>    a webview.
>>>
>>> So based on this definition:
>>>
>>>    - Naturally the major browsers like Chrome, Safari and Firefox are
>>>    web browsers, as you can enter your own URL to navigate to.
>>>    - Web content embedded in apps, such as Cordova apps, count as a
>>>    webview as there is no user interface to enter your own URL to navigate to.
>>>    These use cases involve showing a fixed selection of web content determined
>>>    by the app developer, and may well block navigating to the open web for
>>>    security reasons.
>>>    - If an app embeds a webview, but adds a user interface to allow
>>>    users to enter their own URL to navigate to, then it qualifies as a web
>>>    browser. I think someone mentioned the DuckDuckGo browser does this, and
>>>    assuming it has a URL bar, then it is a browser under this definition
>>>    - In-app browsers like Android Custom Tabs
>>>    and SFSafariViewController qualify as webviews, since (as far as I can
>>>    tell) the user cannot edit the URL in this mode to browse to a different
>>>    website. Despite having many of the features of a web browser, it works
>>>    like showing the same content in a dismissable webview (which AFAIK is in
>>>    fact often what apps did prior to the introduction of in-app browsers), so
>>>    I feel like this is still an appropriate categorisation. Where the in-app
>>>    browser provides an option to open the viewed page in the actual browser
>>>    app (e.g. 'Open in Chrome browser' on Android), under this definition it
>>>    will switch the user from a webview to a browser, as in the browser they
>>>    can then edit the URL.
>>>
>>> It should be easy to tell with this definition: basically if you can
>>> type in a URL, it's a browser, otherwise it's a webview.
>>>
>>>
>>>
>>> This should then be a basis on which to categorise things like usage
>>> stats for browsers vs. webviews. The user agent string does not reliably
>>> tell you if there is an editable URL bar, but it gives us a basis from
>>> which to categorise the different user agent strings that are observed in
>>> the wild, such as DuckDuckGo Browser (browser) and Facebook in-app browser
>>> (webview).
>>>
>>> Categorizing "webview or not" via UA string seems like it falls apart in
>>> a scenario like "Chrome opened in kiosk mode", or any app using
>>> `setUserAgentString()` (or similar).
>>>
>>> Another thought: if the goal here to for traffic usage, do you consider
>>> traffic coming from iframes to be browser traffic, or webview traffic
>>> (given that users can't enter a URL into iframes).
>>>
>>>
>>>
>>> Any thoughts?
>>>
>>>
>>>
>>> Ashley
>>>
>>>
>
> --
> Best regards,
> Maxim Tsoy
>


-- 
Best regards,
Maxim Tsoy

Received on Thursday, 8 May 2025 09:16:44 UTC