Difference between Chrome Apps and Extensions - google-chrome

What is the difference between Chrome Apps and Extensions?
What can you do with apps that you can't do with extensions or vice versa?

Quoting from https://developer.chrome.com/webstore/apps_vs_extensions:
We’ve already had the concept of “web apps” in the browser for a few years, as something more rich and interactive than a website, but less cumbersome and monolithic than a desktop application. Examples include games, photo editors, and video players; all of these categories are viable as tightly focused apps running inside the browser. Google Chrome is just formalizing the web app concept in a way that will be familiar to anyone who’s used apps on a smartphone.
Extensions ... extend the functionality of Google Chrome and the websites being viewed in it. For example, they can extend Google Chrome by adding a new button to the address bar, such as an ever-present currency converter. Buttons like this can also apply to the current website being viewed—for example, click the currency converter button to convert all prices on the website you’re viewing. Similarly, you can introduce new items to the context menu, change the behavior of the omnibox (the input field on the address bar), access the user’s browsing history (with consent), and much more. You can alter web pages too—for example, embed a “mail this” button next to every link in every page, or customize the layout of your favorite website.
Compared to apps, extensions cut across websites and web apps; they are usually in effect across all websites (though some are site-specific). Apps don’t combine with other apps in this way; they run standalone, like any regular website.
(emphasis added)
From what I can tell, Chrome apps are just web applications that are registered with Chrome's Web Store (Gmail, e.g.). They're basically just glorified bookmarks. Google seems to have introduced them in order to make their browser more "operating system"-like, in preparation for tablets running Chrome OS. Since Chrome OS won't have any native applications apart from Chrome, they need some way for you to be able to "install" applications... even if those applications are just websites.
Extensions can actually affect the way that the browser behaves (ad blocking, e.g.). They can add buttons to Chrome's toolbars, intercept web requests, change the DOM, etc.

Here is an excellent resource from the Google Chrome team explaining the differences in detail.
It also contains a decision tree flow chart shown below.

Please refer to the following link:
(chrome app vs extension).
It basically says that there are two kinds of apps: hosted and packaged. Hosted apps are glorified bookmarks. But packaged apps provide you with a somewhat best of both worlds features- of both extensions and apps.
Extensions of course extend the core browser functionality providing little or no additional UI apart from what is already provided by chrome.

There are three Chrome distribution channels for developers.
In order of increasing functionality they are:
Chrome extensions — little to no UI
Chrome hosted apps
Chrome packaged apps
More information and fuller discussion is contained in this video.

quoting from http://www.chromeplugins.org/extensions/chrome-web-apps-extensions-spot-the-difference/
(as the explanation is very good)
Major Differences Between Chrome Extension and Chrome Web Apps
One of the major differences between Chrome extensions and web
applications is their location. Majority of the Chrome extensions can
be downloaded from Chrome Extensions Gallery whereas Chrome Web Apps
can be installed from Chrome Web Store.
Another major difference between Chrome extensions and web apps is the
fact that while extensions are used to enhance the functionality of
the Chrome Browser, web apps run within the browser having a different
user interface. Unlike web applications, extensions have little or
sometimes no UI component.
From a technical perspective the major difference between Chrome Apps
and extensions is the presence of “launch” parameter in apps which
indicates Chrome to show when user starts an application installed by
him/her.

Related

Custom Firefox / Chromium install with Pre-installed extension (non enterprise)

i wanted to build a custom browser install that would fit the following specs, i found ways to do it using enterprise deployement, but my intent is to distribute it to friends and family without having to go through the enterprise distribution.
Can be sourced from Firefox or Chromium (or even other as webkit)
Should be easy to customize (ideally no C++ coding)
Should be able to embed extension or hard code the extension within the browser. (i've coded a custom adblock that is lighter and faster than the ones on FF or Chrome store and would also like to embed TOR connection extension)
Remove the ability to install other extensions (i want to ensure this browser cannot be victim of bloatware extensions installs)
Customize UI
Protect the browser against Search engine / HP / New tab settings change.
If you could point me to the right direction it would be awesome and i'll make sure to share this browser's link here once done.
I just saw this in the corner of my eye and figured I'd share this question/answer to possibly help you:
Standard way to build a Chrome extension into Chromium

Developing a Chrome Desktop App

I would like to get a good tutorial on building a chrome desktop app.
I found some good ones for Chrome Extensions, Chrome Apps that don't do anything but redirecting to a website - What I want is an app like Any.do, like Google Keep, like Sunrise Calendar:
Apps that work without chrome and in a different window, but I hope I can make one with HTML-CSS-JS.
Do you know where I can find any documentation for that?
Thanks!!
This was previously called a "packaged app", and now is simply called "Chrome App", as opposed to what's called "hosted app" (link to a website).
The main documentation is here.
Note that Chrome Apps have, in some regards, more power, but they don't integrate much with the browser as Extensions do. They are intended to behave as self-contained. They don't work completely without Chrome, but they do have independent windows.

Google Cast capabilities on Chrome Mobile

The goal is to start casting a content (video or other), from chrome mobile. Just like it is possible on standard Chrome for youtube or netflix videos, through the dedicated extension. I'm not talking about displaying the content of the mobile tab on the TV but just launching a cloud or LAN video on the big screen.
I know extensions are not available on chrome mobile (yet) but I was just wondering if there were any plans on making that possible in Chrome Mobile (with or without extensions).
It would be cool to be able to write a webapp that could launch videos on the big screen. The same webapp could be used on a smartphone, on a tablet or a on desktop computer.
Update:
I was thinking it could be easy to write a simple standalone js library for Google Cast device discovery. This could also be used to control the playback of cloud/LAN files within a webapp.
By looking at the chrome extension code, it looks like the discovery of Google Cast devices is done through the chrome.dial.* API. This API is not public yet. The extension asks for the following permissions:
"permissions": [
"tabs",
"tabCapture",
"dial",
"storage",
"networkingPrivate",
"https://*/*",
"http://*/*"
],
At this point, there is probably no hope of writing a standalone js library that would do the device discovery through chrome.dial.* as its access is restricted to extensions having asked for the specific permission.
Conclusion: To leverage the chrome.dial.* API, an extension is needed. And there are no public plans for extensions in Chrome Mobile.
Interesting links:
http://www.dial-multiscreen.org/dial-protocol-specification
http://en.wikipedia.org/wiki/Simple_Service_Discovery_Protocol
It is a little unclear what you're asking, but it seems like you're asking if there is any hope of getting a native extension on the mobile version of Chrome.
From https://developers.google.com/chrome/mobile/docs/faq
Does Chrome for Android support apps and extensions?Chrome apps and extensions are currently not supported on Chrome for Android. We have no plans to announce at this time.
I wouldn't plan on having extensions anytime soon. You could always write a native application to the operating system and broadcast from there.

Does mobile Google Chrome support browser extensions?

Can I create a plugin or an extension for Google Chrome MOBILE (Android Google Chrome)?
If not, can I create an extension for Google Chrome (desktop), which will add a button in Google Chrome bar. This button will open the page in another web browser (in my own web browser), so, this button should launch my own web browser.
Extensions are not supported, see: https://developers.google.com/chrome/mobile/docs/faq .
Specifically:
Does Chrome for Android now support the embedded WebView for a hybrid native/web app?
A Chrome-based WebView is included in Android 4.4 (KitKat) and later. See the WebView overview for details.
Does Chrome for Android support apps and extensions?
Chrome apps and extensions are currently not supported on Chrome for
Android. We have no plans to announce at this time.
Can I write and deploy web apps on Chrome for Android?
Though Chrome apps are not currently supported, we would love to see great interactive web sites accessible by URL.
You can use bookmarklets (javascript code in a bookmark) - this also means they sync across devices.
I have loads - I prefix the name with zzz, so they are eazy to type in to the address bar and show in drop down predictions.
To get them to operate on a page you need to go to the page and then in the address bar type the bookmarklet name - this will cause the bookmarklet to execute in the context of the page.
edit
Just to highlight - for this to work, the bookmarklet name must be typed into the address bar while the page you want to operate in is being displayed - if you go off to select the bookmarklet in some other way the page context gets lost, and the bookmarklet operates on a new empty page.
I use
zzzpocket - send to pocket.
zzztwitter tweet this page
zzzmail email this page
zzzpressthis send this page to wordpress
zzztrello send this page to trello
and more...
and it works in chrome whatever platform I am currently logged on to.
Some extensions like blocksite use the accessibility service API to deploy extension like features to Chrome on Android. Might be worth a look through the play store. Otherwise, Firefox is your best bet, though many extensions don't work on mobile for some reason.
https://play.google.com/store/apps/details?id=co.blocksite&hl=en_US
Just use a different browser.
Follow the steps given below to install Chrome extensions on your Android device.
Step 1: Open Google Play Store and download Yandex Browser. Install the browser on your phone.
Step 2: In the URL box of your new browser, open 'chrome.google.com/webstore’ by entering the same in the URL address.
Step 3: Look for the Chrome extension that you want and once you have it, tap on 'Add to Chrome.’
The added Chrome extension will now be automatically added to the Yandex browser.
I imagine that there are not many browsers supporting extension. Indeed, I have been interested in this question for the last year and I only found Dolphin supporting add-ons and other cool features announced few days ago. I want to test it soon.

Possible to use omnibox in Google Chrome Web Application?

I would like to add the possibility to a simple Chrome web app, to use the Chrome Omnibox. The app should just be an icon on the start-page of chrome and add Omnibox functionality.
Adding the attribute "omnibox": { "keyword" : "x" } to my manifest.json brings up the message
Feature 'omnibox' is not accessible. Not allowed for specified package type (theme, app, etc.).
Is it possible to enable this functionality or can I develop an extension which behaves exactly like an Chrome web app, so I could use the omnibox inside that extension?
Thanks for your advise.
If you're making a Hosted App, you are very limited in what you can access. I believe a Hosted App can only perform actions that a normal HTML5 web page could (with a few narrow exceptions, like long-running background pages). If you want to include omnibox functionality, you'll have to make it a Packaged App -- but it could be a Packaged App that opens your web page like your current app and includes omnibox support, since the functionality of Packaged Apps is a superset of Hosted Apps functionality.