“Install App” ads — which ask mobile website users to install the site’s application on their mobile device — are quite common on mobile e-commerce sites, with 53% of sites during testing displaying one.

Indeed, it’s entirely understandable that e-commerce sites that have apps would want to promote them while users are on their website.

Yet our newest round of large-scale mobile e-commerce usability testing reveals severe and disruptive issues caused by these “Install App” ads. These include:

  • “Install App” blocking the view for critical site content (e.g., blocking an “Add to Cart” button),
  • “Install App” appearing multiple times even after users have dismissed it, or
  • “Install App” narrowing the viewport when users choose to ignore it, leaving them with a reduced view of the main page content.

These issues make it clear that having an ad for “Install App” has a high cost in terms of causing an often severe negative impact on users’ product-browsing and -purchasing experience on the mobile website. During our testing “Install App” banners were the direct and sole cause of several abandonments of some of the world’s largest e-commerce websites.

In this article, we’ll discuss the test findings from our latest mobile usability study related to “Install App” ads. In particular, we’ll discuss:

  • Severe usability issues caused by “Install App” ads
  • 3 ways issues caused by “Install App” ads can be minimized
  • Carefully weigh the benefits vs. drawbacks to showing ‘Install App’ ads

Observed Issues Caused by ‘Install App’

It’s a bit of a disaster now, it’s not very straightforward. I can’t see where it says ‘Add to Cart’. A subject at Sephora, who had already decided that she wanted to add a lipstick to the cart, was unable to do so. She scrolled the product page multiple times, scanning for an “Add to Cart” button, then went to the cart and assumed she had to sign in to add the product to the cart. This was a stopping point for her, and only after the facilitator asked her to close the “Install App” ad did she see the “Add to Cart” button. Such a severe block to users’ ability to make a product-purchase decision will be a direct cause of site abandonments.

In testing, the most severe outcome of having the “Install App” ad displayed was when it covered critical site elements — for example, the “Add to Cart” button. As one user said, “‘Add to Basket’ was underneath the little flash pop-up thing. Yeah, that’s stupid [laughs]. That annoyed me.”

With the “Install App” ad displayed, some users won’t be able to add products to their cart without first dismissing the ad — which testing revealed not all users will think to do. Consequently, in some cases the “Install App” ad will be a direct cause of abandonments.

“I don’t know how to get out of this…Oh there”. A user at Under Armour was viewing images of shoes in an image gallery overlay. When she was finished she wanted to return to the product page but couldn’t figure out how to exit the overlay. She first tried tapping the page behind the overlay but nothing happened (first image). Stumped, she wasn’t sure what to do, before she finally noticed and closed the “Install App” ad, which revealed a “Back” link to exit the overlay (second image).

At Under Armour, the “Install App” ad blocks critical product filters (“Gender” and “Category”; first image) until another user dismisses the ad (second image).

“Is there a way I can find it for “Men” and not “Youth”? None of them are clickable. It doesn’t seem like I’ve got size options. There should be something underneath “Size” that I can click…I don’t know what to do.” A different user at Under Armour never thinks to dismiss the “Install App” ad — consequently, he never discovers the filters for “Gender” and “Category”, which were required selections in order to see “Size” filters. He ended up with an overly broad product list that was difficult to navigate.

At B&H Photo, the “Install App” ad covers the “Done” button to apply filters. This user initially exited the filter interface and was confused when his filter changes weren’t applied. He reentered the filter interface, dismissed the app ad, then noticed the “Done” button to apply his filtering choices.

Covering the “Add to Cart” button is obviously a severe issue, but other instances of the “Install App” ad covering crucial content were uncovered as well during testing. For example, the “Install App” ad covering buttons or links needed to exit interfaces or apply selections (such as filters).

These instances, while less severe than when the “Install App” ad covers the “Add to Cart” button, are also quite disruptive for users, as they begin to feel lost and no longer in control of the interface.

Furthermore, some users will never think to dismiss the ad and, consequently, will never find whatever the ad is covering (e.g., crucial filter types). Other users may go back-and-forth between different interfaces as they try to figure out why their selections aren’t being applied (e.g., when the “Install App” ad is covering the “Done” button in filtering interfaces), before finally thinking to dismiss the ad.

Indeed, the “Install App” ad is, for many users, an example of “banner blindness”, where despite its prominence it is ignored. Users missing banner ads for promoted products is one thing, but missing crucial site elements and features because an “Install App” ad is covering them is a much more harmful case of banner blindness.

At Overstock a custom “Install App” ad, combined with a tracking privacy notice, severely limits the actual page content a user is able to see (despite using a tall iPhone XS). Even when “Install App” ads aren’t covering crucial site content they limit a user’s viewport — and therefore hinder the product-browsing experience.

In addition to covering site content, “Install App” ads were also observed in testing to severely limit users’ ability to view main page content.

On mobile, screen real estate is already at a premium, and small viewports are simply a fact of life.

However, making the effective viewport even smaller by showing an “Install App” ad — which, again, not all users will actually dismiss right away — makes it even more difficult to browse and evaluate products. This is especially true when the app ads are combined with privacy notices and other nonproduct-related content, which combined may reduce a user’s ability to see actual page content by 50% or more.

Additionally, it’s worth noting that issues were caused in testing both by the native “Smart App Banners” and custom-designed “Install App” banners.

Now, an obvious solution to the issues caused by the “Install App” ad is not to display one at all to users. In fact, 47% of sites during testing didn’t show an “Install App” ad when users were browsing the sites.

If opting not to display the “Install App” ad at all on the site due to potential usability issues, consider other, less-distracting ways the app can be promoted to users. For example, displaying the ad only on the order confirmation page (after users have placed an order) or including links in marketing emails and newsletters.

Adopting a more subtle approach may allow sites to straddle the line between disrupting users and promoting their app: ensuring that users are allowed to browse free of issues caused by the “Install App” ad while satisfying business interests to promote the app to users.

Three Ways to Minimize Issues Caused by ‘Install App’

While we advise great caution before using “Install App” ads, if it’s deemed that the business case is sufficient for disrupting website users with “Install App” ads then consider the following 3 implementation details, which we observed can greatly impact the cost / benefit ratio.

1) Incentivize users to install the app. While showing an overlay immediately on page load is disruptive, at least Amazon offers users an incentive to download their app.

1) Incentivize users to install the app. If the business case is strong enough to accept losing some mobile website users due to the “Install App” ad, then consider at least incentivizing users to download the app from the site. Offering users “10% off your first order” or “Get $10 to use after installing the app” may get more users to actually install the app on their device, and therefore may offset to some extent the users lost due to usability issues caused by the “Install App” ad on the website.

2) Don’t permanently display the ad. At Walmart an “Install App” ad persists despite this user having been on Walmart for several minutes. This is disruptive to the product-browsing experience. Additionally, it’s likely that few users will decide to download an app when they’re already minutes into their browsing on the mobile website.

2) Don’t permanently display the ad. If an “Install App” ad must be displayed, it should be removed once users have navigated to a new page on the site or have been on the same page for a certain amount of time. Once users have been on the site awhile, or have navigated to new pages, the benefit of showing the “Install App” ad decreases, while the potential to distract users is constant or increases.

As mentioned above, “Install App” ads were observed during testing to suffer from banner blindness, where some users simply ignored them. For these users, the end result will be that they’ll have a much more limited view of the main site content for the duration of their time on the site, if the ad is permanently displayed. Furthermore, these users will potentially never see some critical site elements that are hidden by the “Install App” ad.

3) Show the ad only on certain pages. At Amazon, the “Install App” ad was automatically removed once this user moved from the homepage (first image) to viewing search results (second image) — greatly reducing how potentially distracting the ad is to users.

3) Show the ad only on certain pages. Showing the ad only on certain pages — for example, only on the homepage — also will limit the damage to users’ browsing experience by removing the ad from potentially problematic areas (e.g., product lists, product pages, or search results).

Additionally, limiting where the ad is shown will allow potential issues that the ad may be causing to be better monitored (e.g., overlaying important site elements or content). Conversely, displaying the ad universally throughout the site makes it nearly impossible to control adverse effects that are caused by the ad.

Carefully Weigh the Benefits vs. Drawbacks to Showing ‘Install App’ Ads

The “Install App” ad partially covers the “Added to Cart” overlay for another user at Under Armour.

Sites that choose to display “Install App” ads are clearly hoping users will download the app and then use it on their mobile device to make purchases, rather than going to the mobile website. The reasoning likely is that users using the app are likely to be more frequent and loyal customers.

However, as illustrated above, displaying an “Install App” ad to users isn’t a “freebie” and, depending on the implementation, will either directly or indirectly lead to mobile website abandonments (e.g., if users are unable to find the “Add to Cart” button or if it’s more difficult to find products using filters).

Sites should weigh these costs carefully against the benefit of having a minority of users actually install the app on their device, and then also use it instead of the website.

If “Install App” ads must be displayed to users, then be sure to minimize the disruption for users, by:

1) users are incentivized to download the app,

2) ads are temporary, and

3) ads are only displayed on a select few pages

This article presents the research findings from just 1 of the 690 UX guidelines in Baymard Premium – get full access to learn how to create a “State of the Art” mobile e-commerce user experience.

Authored by
Edward Scott. Published on
August 20, 2019.


React developers can get the advantages of Ionic to build hybrid mobile apps and progressive web apps. In this tutorial, we’ll be using Ionic and React to build a mobile app from scratch.

Ionic has recently added support for React; so now, React developers can get the advantages of Ionic to build hybrid mobile apps and progressive web apps (PWAs). In this post, we’ll show you how to get started using Ionic with React by building a simple demo app from scratch.


In order to properly follow this tutorial, you’ll need the following prerequisites:

  • recent versions of Node.js and npm installed on your system,
  • working knowledge of TypeScript and React.

You can check that you have the latest Node.js version (v10) installed by running the following command:

$ node -v

Introducing React And Ionic

Let’s start with brief introductions to both React and Ionic.

According to the official website:

“React is a declarative, efficient, and flexible JavaScript library for building user interfaces. It lets you compose complex UIs from small and isolated pieces of code called ‘components’.”

React focuses on building UIs and doesn’t provide any built-in tools for the common tasks required in web development, such as fetching remote data and routing, so you’ll need to use some existing third-party libraries for these tasks.

According to the Ionic website:

“Ionic Framework is the free, open-source mobile UI toolkit for developing high-quality cross-platform apps for native iOS, Android, and the web — all from a single codebase.”

Basically, it’s a set of UI components that you can use with plain JavaScript or any popular front-end framework or library, such as Angular, React or Vue, to build a hybrid mobile app and PWA.

In this tutorial, we’ll see and use some Ionic UI components such as the following:

  • IonMenu: With this, a navigation drawer will slide in from the side of the current view.
  • IonToolbar: These top bars are positioned above or below the content.
  • IonHeader: This parent component holds the toolbar component.
  • IonContent: This component provides a content area, with methods to control the scrollable area and other things. You need only one content component inside a single view.
  • IonList: This component contains items with similar data content, such as images and text. It’s made up of IonItem objects.
  • IonItem: This component may contain text, icons, avatars, images, inputs and any other native or custom element.
  • IonButton: This component provides a clickable element, which can be used in a form or anywhere that needs simple, standard button functionality.

Installing Ionic CLI v5

Ionic’s command line interface (CLI), version 5, has support for creating Ionic projects based on React. So, let’s get started by installing the tool from npm.

Open a CLI, and run the following command:

$ npm install -g ionic

At the time of writing, Ionic’s CLI v5.2.3 is the latest.

Note: *According to how you installed Node.js in your system, you may need to add sudo before your command in macOS or Linux or run the command prompt as administrator in Windows if you get any permission errors. You can also simply fix your npm permissions or use a tool such as nvm.*

Next, install Cordova Resources (which is used to generate Cordova resources locally) and Native Run (used to deploy app binaries to devices):

$ npm install -g cordova-res native-run

These are required only if you want to test your application on a real mobile device or emulator.

Creating An Ionic And React Project

Now, let’s create a project based on React. Go back to your terminal, make sure you are in your working directory, and run the following command:

$ ionic start myApp --type=react

We use --type=react to generate a project based on React. You’ll next need to choose a starter template from the available ones. Let’s pick sidemenu for a starter template with a side menu and navigation.

After generating the project and installing the dependencies, you can serve your app locally using the following commands:

$ cd ./myApp
$ ionic serve

Your app will be available from the http://localhost:8100 address, and you can actually use your web browser to start playing with it.

Ionic is called a hybrid mobile framework because it makes use of web technologies that were originally designed to create web apps, along with a native container (Cordova or Capacitor), to build mobile apps without using native technologies for the target platforms, such as Java or Kotlin for Android or Swift for iOS.

Because your mobile app is actually a web application, you can do most development by testing in a web browser without using an emulator or a real mobile device, except for testing native device features such as the camera or the SQLite storage, in case you’ve used them in your app. In fact, it’s even possible to use certain techniques to mimic the plugins that provide the native features and do the entire testing during development in your web browser.

Cleaning Our Project

We have the app’s basic structure, with two pages (home and list) and a menu. Let’s remove the list page since it’s just boilerplate code.

First, remove the src/pages/List.tsx file, then open the src/App.tsx file, and remove the entry for the list page from the appPages array:

const appPages: AppPage[] = [
    title: 'Home',
    url: '/home',
    icon: home

Also, remove the import of the list page from the file:

import  List  from  './pages/List';

Next, remove from the App component:

const App: React.FunctionComponent = () => (
             } />

export default App;

The App component is the root component that gets rendered by our application. If you open the src/index.tsx file, you’ll find the following code:

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';

ReactDOM.render(, document.getElementById('root'));

The render() method is used to render a React element into the DOM in the supplied root element.

Theming The App

Having created, served and cleaned our Ionic project, let’s now see how we can change the colors of the UI so that it looks more professional.

Let’s get started with the side menu. Open the src/components/Menu.tsx file, and add a color attribute with a primary value to the IonToolbar, IonContent, IonList and IonItem UI components:

const Menu: React.FunctionComponent = ({ appPages }) => (
        {, index) => {
          return (

Ionic provides some default colors (primary, secondary, tertiary, success, warning, danger, light, medium and dark) that can be used to change the color of UI components. A color can be applied to an Ionic component in order to change the default colors using the color attribute. See “Colors” for more information.

These colors have default values, but you can customize them via some predefined CSS variables. See “Modifying Colors“.

This is a screenshot of our menu:

Ionic menu
Ionic menu. (Large preview)

Next, let’s change the color of the Home page. Open the src/pages/Home.tsx file, and set the color attribute of the IonToolbar and IonContent components to primary:

const HomePage: React.FunctionComponent = () => {
  return (


This is a screenshot of the page:

Ionic home
Ionic home. (Large preview)

Installing Axios And Consuming A REST API

We’ll see how to install Axios and consume a third-party RESTful API in our application, and we’ll also see how to display the fetched data using Ionic card and list components.

Having themed our application, let’s now see how to fetch data using Axios. We’ll use the third-party API available from

First, we need to grab an API key, so that we can communicate with the API. Go to the registration page, enter your information, and register an account. You’ll be given an API key; note it, and let’s continue.

Head back to your terminal, and run the following command to install Axios:

$ npm install axios --save

Next, open the src/pages/Home.tsx file, and start by importing Axios and IonButton:

import {
} from '@ionic/react';

import axios from 'axios';

Next, define the API_KEY and URL constant variables:

const  API_KEY  =  "";
const  URL  =  `${API_KEY}`;

In the URL variable, we’ll add an endpoint to get the top headlines from our source, TechCrunch. You can use any source you want from the available sources.

Note: Make sure to put your own API key in the API_KEY variable.

Next, define the fetchArticles() method as follows:

const fetchArticles = () => {

  return axios({
    url: URL,
    method: 'get'
  }).then(response => {


We simply call the axios() method to send a GET request to the news endpoint, and the result from the method is a promise that needs to be resolved in order to get the news data.

Next, update the HomePage component as follows to call the fetchArticles() method and resolve the returned promise:

const HomePage: React.FunctionComponent = () => {

  const [articles, setArticles] = React.useState([]);
  const items: any[] = [];

  React.useEffect(() => {

    fetchArticles().then(data => setArticles(data.articles));

  }, []);

  return (

   => {

              return (


In our function component, we first call the useState() hook of React to create the articles state variable, which will hold the news articles after we fetch them from the API.

useState() returns the state variable, which has the empty array as its initial value and a function that we can use to change the value of the variable. We use destructuring assignment to unpack the values from the returned pair into distinct variables (i.e. articles and setArticles()).

Next, we call the useEffect() hook to perform a side effect in our component. In our case, the side effect is to fetch data from the news API using the fetchArticles() method, which returns a promise. Once the promise is resolved, we call the setArticles() method to assign the news data to the articles variable.

Both useState() and useEffect() are built-in React hooks that were introduced in React 16.8; they simply let you use state and other React features without having to write a class. The useEffect() hook is equivalent to calling the componentDidMount, componentDidUpdate and componentWillUnmount lifecycle methods combined in class-based components.

Finally, in the view template, we iterate over the articles array using the map() method, and we display the title of each news article inside an IonItem element of the IonList component, and also a button that takes us to the page of the full article.

This is a screenshot of the page:

Ionic news app
Ionic news app (Large preview)

You can find the source code in this GitHub repository.


In this tutorial, we have started using both Ionic and React and used them to build a simple mobile application that fetches and displays news data from a third-party API using the Axios client. We have also seen how to use hooks in React — namely, the useState() and useEffect() hooks — to create state and perform side effects inside React function components. With Ionic, we’ve seen how easy it is to generate a project based on React and how we can theme the application using the color attributes of components.

Smashing Editorial(dm, al, yk, ra, il)

introduced new Mobile Ads Tools that allow advertisers to create campaign on their mobile devices. Advertisers can choose a Pin from their business profile, and create a campaign for it by selecting automated or custom targeting options, daily budget rules and the duration of the campaign.

Advertisers will also be able to complete billing information to run the ad without having to access their account from a desktop.

Why we should care

Being able to create ad campaigns from a mobile device makes it easier for smaller advertisers and SMBs to create ads — especially those who may not have the resources to support a full-on social media marketing team.

It also provides an added level of flexibility for advertisers that want to create campaigns “on the go,” making it possible to seize a timely ad opportunity should it present itself.

In addition to creating campaigns, the new mobile ad tools allow advertisers to adjust budgets and targeting, and pause campaigns. They can also edit the URL destination within the ad and campaign name.

Fount, a leather goods company, reported a 4,430% increase in daily engagement with their Pins since using Mobile Ads Tools. “Pinterest is bringing more traffic to our site than Facebook and Instagram, where we also run ads,” said Fount CEO Phillip Wachter.

More on the news

  • Mobile Ads Tools are available to all U.S. business accounts and currently rolling out globally.
  • Promoted Pins created with Mobile Ads Tools can include video, carousel and standard Pin formats.
  • Advertisers will be able to track ad spend, remaining campaign duration, impressions, clicks, CTRs and saves on mobile.

About The Author


Whether you already have some coding experience or are starting from scratch, the good news is that you don’t have to be chained to your desk in order to learn how to code.

What’s even better is that you don’t have to spend years mastering programming either. Thanks to numerous coding apps available for both Android and iOS devices, you can easily level up your coding skills even when you’re on the go.

Create your own professional website with Wix dot com.

Create your own professional website with

In this post, we’ve rounded up the best coding apps that will help you learn to code like a pro.


SoloLearn is an app available for both iOS and Android devices and it also has a web app so you can use it to learn to code from anywhere. The app offers a number of different courses in languages such as JavaScript, Python, Java, and more. The app offers free trial as well as paid monthly and yearly plans.



Encode is an Android app that offers lessons in programming in bite-sized portions. The app has programming challenges that you have to solve in order to progress further. It also includes practical examples and teaches you how to program in HTML, CSS, JavaScript, and Python. On top of that, the app has offline mode so you can continue learning even if you aren’t connected to the Internet.



Codemurai offers hundreds of bite-sized coding lessons that were created by industry experts on web development, mobile app, and game development. The app has lessons for languages that include HTML, CSS, JavaScript, Python, TypeScript, Angular 2, MongoDB, Node, React, and more. You will learn programming through fun coding challenges and then have the ability to test your knowledge with quizzes.



Mimo is a programming app that allows you to develop programming skills that will help you develop an app or a game, make a website or become a hacker. Based on your preferences and interests, you will get a personalized track that will teach you the necessary skills. It’s available for both iOS and Android devices and offers courses in JavaScript, Ruby, Swift, C, C , and other popular languages.



Grasshopper is a free iOS and Android app that teaches you how to code through JavaScript puzzles that you have to solve in order to progress. This app is very easy to use as it allows you to use blocks and arrange them in a logical order in order to create a working code. You also get real-time feedback and unlock achievements as you become more proficient.


Programming Hero

Programming Hero is an Android-only app that offers personalized paths towards coding mastery. The emphasis of this app is on making coding fun and it does so through teaching you how to build your own game while learning how to code at the same time. The app also offers forums where you can chat with other app users and exchange knowledge and tips.

Programming Hero


While Tynker is primarily geared for kids and parents or educators looking to take their children’s and student’s education further, there’s a lot you can learn from this app. For starters, the app supports not only game design but also basics of robotics and more advanced languages such as JavaScript and Python. The app offers challenges, quizzes, and even level editors and character creation. The app is available for iOS devices.


Enki App

Try the Enki app if you want a personalized track that will allow you to improve your programming skills. You can easily track your progress as you learn Python, Linux, JavaScript, HTML, CSS, Java or Git. What makes this app different is the fact that you can set daily goals to learn programming and keep track of your streak. Each lesson offers a summary of the main concept for the day as well as an attached article that goes more in-depth. Enki is available for iOS and Android devices.


Programming Hub

Programming Hub was named Google Play’s Editor’s Choice app and with good reason. It supports a wide array of languages and delivers the lessons in bite-sized interactive lessons and courses. Supported languages include Java, C , C programming, HTML, CSS, JavaScript, and more. What’s more, the app was developed in collaboration with Google experts. The app is available for both Android and iOS devices.

Programming Hub

Easy Coder

Easy Coder is an Android app that focuses on teaching Java programming exclusively. The app provides step-by-step interactive lessons, quizzes, and programming challenges which will teach you the basic programming concepts and prepare you to develop your skills even further. Lessons are short and concise so that you consume them even if you’re on the go and the app also comes with practical examples to clarify the programming concepts.