Mijeong Won
Mijeong Won

Reputation: 351

In App browser vs Web View vs Embedded browser What's the difference?

Could anyone share an exact definition of In-App Browser, Web View or Embedded browser?

I have looked up and it seems like these 3 terms:

refer to the same thing.

Is there any difference between the 3 terms? or Is it just 3 different words for the same thing.

Upvotes: 11

Views: 20778

Answers (5)

Clockwork
Clockwork

Reputation: 269

One important difference between an InAppBrowser and a WebView, which another answer mentioned briefly, is the fact the InAppBrowser runs separately from the app/code itself and use the native browser directly without leaving the app.

This is an important difference when you are trying to follow OAuth 2.0 standard, because it provides you with all the advantages of the native browser (unlike the WebView) without redirecting you to your actual browser.

From what I gathered from the documentations from below, since an InAppBrowser will run the native browser from the device directly (unlike a WebView), not only will the browser be more secure (against some phishing attacks for example), but since it's not part of the app itself, user credentials cannot be accessed by the app itself, whereas with a WebView the app could grab everything from within, such as the credentials the user just typed into the login form.

See the following links for more information:

https://oauth.net/2/native-apps/

OAuth 2.0 for Native Apps (RFC 8252) describes security requirements and other recommendations for native and mobile applications using OAuth 2.0.

It describes things like not allowing the third-party application to open an embedded web view which is more susceptible to phishing attacks, as well as platform-specific recommendations on how to do so.

https://datatracker.ietf.org/doc/html/rfc8252

OAuth 2.0 authorization requests from native apps should only be made through external user-agents such as the system browser (including via an in-app browser tab).

https://datatracker.ietf.org/doc/html/rfc8252#section-3

"in-app browser tab" A programmatic instantiation of the browser that is displayed inside a host app but that retains the full security properties and authentication state of the browser.

https://datatracker.ietf.org/doc/html/rfc8252#section-4

For authorizing users in native apps, the best current practice is to perform the OAuth authorization request in an external user-agent (typically the browser) rather than an embedded user-agent (such as one implemented with web-views).

https://datatracker.ietf.org/doc/html/rfc8252#section-6

Some platforms support a browser feature known as "in-app browser tabs", where an app can present a tab of the browser within the app context without switching apps, but still retain key benefits of the browser such as a shared authentication state and security context. On platforms where they are supported, it is RECOMMENDED, for usability reasons, that apps use in-app browser tabs for the authorization request.

https://datatracker.ietf.org/doc/html/rfc8252#section-8.12

In typical web-view-based implementations of embedded user-agents, the host application can record every keystroke entered in the login form to capture usernames and passwords, automatically submit forms to bypass user consent, and copy session cookies and use them to perform authenticated actions as the user.

Upvotes: 0

dowonderatwill
dowonderatwill

Reputation: 119

I am also looking for the answer of this. Sharing my understanding so far. The mobile apps are built and execute in an ecosystem of mobile like its os and this ecosystem also have browser engines. (We know this, wrote to set context). E.g; iPhone has os is iOS and it has embedded browser engine as Safari. Now when I run the app and from app if I want to show the content of the url (without opening the external browser app, instead inside the app(which we generally do using the WebView widgets/component)) then in the backend it will use the embedded browser. So this brings my understanding of term embedded browser. The browser engine which is available (or used) in native os, this looks to be called as embedded browser.

Now when we use WebView to open the content of any url this will show the content inside the app. And for expression probably it is said that content is shown in in-app browser. Now this in-app browser can be using the embedded browser engine like Safari (headless) or some other browser engine. Hence there is subtle difference of in-app browser, and embedded browser.

And WebView, I think much clear as this is a component/widget/mechanism/function to present the content of url in apps.

Upvotes: 0

Ebin
Ebin

Reputation: 76

WebView is an embeddable browser that a native application can use to display web content.

Here, the native application can be an IOS mobile app built with swift, a Android app built with Java or Kotlin, a Windows desktop app built with C++ etc. Essentially its an application that is written in the language and framework that is optimized for the particular platform that is being used.

So, a WebView is sort of like an iframe that you can embed in your native application.

One could think of In-App Browsers or Embedded browsers as a use case of WebViews -A common place example of this is a feature that you would see in social media apps like facebook, twitter etc where in whenever there is a hyperlink, on click on which you would be redirected to a browser within the native app itself, instead of opening the link on full-fledged browser app.

In-App browser

Upvotes: 6

wikid
wikid

Reputation: 21

Also wondering the same thing - come across it for flutter. Still figuring it out but from what I can tell:

  • InAppBrowser
  • InAppWebView
  • HeadlessInAppWebView

Per plugin website documentation:

"The InAppBrowser class represents a native WebView displayed on top of the Flutter App, so it’s not integrated into the Flutter widget tree."

.. would mean a separate distinct browser presented within the app but not controlled or connected to the code. I'm not sure what the advantages or use-case would be.

"InAppWebView is a Flutter Widget for adding an inline native WebView integrated into the flutter widget tree."

.. would mean it embeds the page from url into the app for interactions, so lots of control from the app, which would seem like the whole point of calling a url from an app.

"HeadlessInAppWebView class represents a WebView in headless mode. It can be used to run a WebView in background without attaching an InAppWebView to the widget tree." (https://inappwebview.dev/docs/in-app-browser/basic-usage/). "It can be used to run a WebView in background without attaching an InAppWebView to the widget tree" (https://morioh.com/p/e3f1d830f85b)

Upvotes: 2

George S
George S

Reputation: 333

I was wondering the same thing during a meeting where I was working with embedded browsers on desktop applications, the presenter was working with webviews on mobile, headless browsers and I was wondering what's the difference between all these things. I saw that I am not the only one wondering this. It seems like they're interchangeable/semantic.

I know in the Microsoft documentation it calls these 'embedded browsers' and it seems like on MacOS and mobile they're called 'webviews'.

Over here we can see that Microsoft states:

embedded browser control (also known as a webview)

Upvotes: 0

Related Questions