Re: Definition of browser vs. WebView

AFAIK a specification definition should not refer to specific technologies
like Android Webview anyway, so I do think it would be right to come up
with a definition that categorizes a browser built using a webview as a
browser, and not as a webview solely because of the technology choice.

Another approach is to focus on capabilities of webviews, but I think that
is still a pretty complicated route to go down. For example if we define a
webview as web content where the requests and responses can be intercepted,
you can also do that with a browser extension. So does that mean a web
browser with a browser extension intercepting requests becomes a webview?
If a browser is defined by its access to the user's cookies, then if you
switch to private browsing or a guest account, does that become a webview?
In both cases the answer is obviously not, which I think is a sign it will
be tricky to get a capabilities-based definition.

So unless the CG still disagrees, I think focusing on the UX or general
usage of the app is the right way to define it. My first definition based
on the URL bar was a first attempt at that and I think lines up with what
Niklas said about "browsing" being about "freely navigating the web".

Perhaps "freely navigating the web" is actually a better basis for a
definition, as it doesn't actually refer to any specific user interface
elements like a URL bar. Under a "free navigation of the web"
definition, Android Custom Tabs and SFSafariViewController would still
qualify as browsers, as there is no restriction on following links. The
categorization of a browser in kiosk mode would depend on if navigation is
restricted.

Or perhaps there is something else about the UX we could consider - maybe
it could be to do with back/forward buttons, bookmarks, downloads, a
resizable window, or something else? Personally I'm now leaning towards a
definition based on "freely navigating the web".

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

> 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 Friday, 9 May 2025 08:08:19 UTC