Choosing an App Type
As the following figure shows, if you already have a web app, you don't need to change it; you can just publish it as a hosted app. If you're willing to modify your app or build one from scratch, you have more options.
Note: 2GB is the current size limit for packaged apps. If your app (with all its essential assets) can't fit into a 2GB ZIP file, then your app is too big to be a packaged app.
If you're having trouble deciding what type of app to create, read the article Extensions, Packaged Apps, and Hosted Apps in the Chrome Web Store. Here's some additional information to help you choose:
A hosted app can work in all web browsers, as long as it doesn't depend on features that not all browsers support yet, such as background execution or WebGL. On the other hand, because only Chrome supports the Chrome Web Store, you have the option of tailoring your app to Chrome.
A packaged app will work only in Chrome. However, you can reuse the app's code for ordinary web apps.
If you're not sure whether you need a packaged app or an extension, it should probably be an extension.
Note: As a rule of thumb, a packaged app should feel like a hosted app, not like an extension.
Although an extension has little to no UI of its own, it can sometimes have a big effect on the UI of other pages and web apps. For example, an extension can replace a standard Chrome page, such as the History page (chrome://history). Or it can change the contents or formatting of some or all websites—to use different fonts, for example.
The Licensing API lets you check programmatically whether the user has paid for your app using Chrome Web Store Payments. The Licensing API is usually used only by hosted apps because packaged apps are stored locally and could be modified to circumvent the API call.
The chrome.* APIs let your packaged app or extension be tightly integrated with Chrome. They take advantage of Chrome support for functionality such as idle state, internationalization, tabs, and windows.