Google has killed the Chrome app store for desktops, making way for Progressive Web Apps that can work cross-platform, on all devices, uniformly.

Chrome app store is now dead, Google bringing PWAs for desktops s...

Google had warned more than a year back that Chrome Apps will soon die out on Windows, Mac and Linux some time in 2017. That day has arrived and the App Store on Google Chrome is no longer available. This means you can’t install Chrome apps on your desktop anymore. 

Google had explained its rationale in a blog post last year. Chrome apps are being killed because people hardly use them. “Approximately 1 percent of users on Windows, Mac and Linux actively use Chrome packaged apps.” 

Chrome apps are not completely gone though. You can still install a Chrome app by directly linking. So currently, only the searchable app section is dead. The Chrome apps are now listed in the Extensions section. 

However, with the death of Chrome apps, Google is working on bringing Progressive Web Apps (PWAs) to the desktop browser. PWAs are essentially websites with app-like features. You get a full screen interface, push notifications, offline capabilities and an installable app icon. PWAs are already live on Chrome for Android and once it comes to desktops, PWAs could very well become the only app type to work across desktop and mobiles. Google has said it will roll out PWAs for desktop sometime in mid-2018. 

Till today, the Chrome app store housed apps in two flavours: “Hosted apps” and “Packaged apps.” Hosted apps were basically glorified links to websites with its own icon to easily access it from the homepage. It gave Chrome users a way to pin bookmarks to certain sections of the browser but didn’t really make any sense for a desktop user when there is already a bookmarks bar. 

The second flavour, “packaged apps” were more of the real deal. Packaged apps (RIP) can run in the background and have access to hardware-level features like the USB ports. 

There are also Chrome extensions which aren’t going anywhere. They are also desktop only and can be installed through the Chrome Web Store. Extensions usually live right next to the Address Bar. Password managers, ad blockers, and the likes are Chrome extensions, and are a key element in the Chrome desktop experience. 

PWAs, on the other hand, aren’t exactly standard apps. It’s more of a catch-phrase for existing W3C standards for app icons, background updates, push notifications, etc. PWAs work across browsers and are not locked inside a single browser. Even Windows have announced it will bring PWAs to Windows 10 while Apple is already working on adding support for PWAs to Safari. 

Digit NewsDeskDigit NewsDesk

‘).insertAfter(‘.inside-container p:eq(1)’); */
// $( ” ).insertAfter(‘.inside-container p:eq(0)’);
//method to trunkate the text
function shorten(text, maxLength) {
var ret = text;
if (ret.length > maxLength) {
ret = ret.substr(0,maxLength-3) + “…”;
return ret;

//function to put utm on DontMiss links
$(‘div.dontMiss > a’).each(function(){
$(this).prop(‘href’, $(this).prop(‘href’)+’?utm_source=within_article&utm_medium=desktop&utm_campaign=related’);
//trunkate dont miss content
var sub = shorten($(this).html(),47);
$(‘div.dontMiss > a’).each(function(){
$(this).prop(‘href’, $(this).prop(‘href’)+’?utm_source=within_article&utm_medium=mobile&utm_campaign=related’);

//disabled method to append dontmiss links to page content by Mayank
/*$(‘div.dontMiss > a’).each(function(index){
//loop over each list item

// if(index%2 > 0){
// index = index – 1;
// }
if($(‘.inside-container > p:eq(‘+index+’)’).length){
$(‘.inside-container > p:eq(‘+((index * 2) + 1)+’)’).append(‘

Related: ‘ + $(this).html() + ‘‘ );
$(‘.inside-container > p:eq(‘+((index * 2) + 1)+’)’).append(‘

Related: ‘ + $(this).html() + ‘‘ );

/* if(isDesktop()) {
} */

* ga event tracking on page scroll start and end by Mayank

// Debug flag
var debugMode = false;

// Default time delay before checking location
var callBackTime = 100;

// # px before tracking a reader
var readerLocation = 150;

// Set some flags for tracking & execution
var timer = 0;
var scroller = false;
var endContent = false;
var didComplete = false;

// Set some time variables to calculate reading time
var startTime = new Date();
var beginning = startTime.getTime();
var totalTime = 0;

// Get some information about the current page
var pageTitle = document.title;

// Track the aticle load — disabled
if (!debugMode) {
// ga(‘send’, ‘event’, ‘Reading’, ‘ArticleLoaded’, pageTitle, {‘nonInteraction’: 1});
// console.log(“ga(‘send’, ‘event’, ‘Reading’, ‘ArticleLoaded’, pageTitle, {‘nonInteraction’: 1}”);
} else {
alert(‘The page has loaded. Woohoo.’);

// Check the location and track user
function trackLocation() {
bottom = $(window).height() + $(window).scrollTop();
height = $(document).height();

// If user starts to scroll send an event
if (bottom > readerLocation && !scroller) {
currentTime = new Date();
scrollStart = currentTime.getTime();
timeToScroll = Math.round((scrollStart – beginning) / 1000);
if (!debugMode) {
ga(‘send’, ‘event’, ‘Reading’, ‘StartReading’, pageTitle, timeToScroll, {‘metric1’ : timeToScroll});
} else {
alert(‘started reading ‘ + timeToScroll);
scroller = true;

// If user has hit the bottom of the content send an event
if (bottom >= $(‘.inside-container’).scrollTop() + $(‘.inside-container’).innerHeight() && !endContent) {
currentTime = new Date();
contentScrollEnd = currentTime.getTime();
timeToContentEnd = Math.round((contentScrollEnd – scrollStart) / 1000);
if (!debugMode) {
if (timeToContentEnd = height && !didComplete) {
currentTime = new Date();
end = currentTime.getTime();
totalTime = Math.round((end – scrollStart) / 1000);
if (!debugMode) {
ga(‘send’, ‘event’, ‘Reading’, ‘PageBottom’, pageTitle, totalTime, {‘metric3’ : totalTime});
} else {
alert(‘bottom of page ‘+totalTime);
didComplete = true;

// Track the scrolling and track location
$(window).scroll(function() {
if (timer) {

// Use a buffer so we don’t call trackLocation too often.
timer = setTimeout(trackLocation, callBackTime);

‘).insertAfter(“.inside-container p:eq(2)”);


Source link