webdevpuneet.com

App Store Card — Free App Listing UI HTML CSS Snippet

App Store Card · Mobile · Plain HTML, CSS & JS · Live preview

Copy & paste

Source Code

<div class="as-card">
  <div class="as-head">
    <div class="as-icon"><svg viewBox="0 0 48 48" width="62"><defs><linearGradient id="asg" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#6366f1"/><stop offset="1" stop-color="#ec4899"/></linearGradient></defs><rect width="48" height="48" rx="12" fill="url(#asg)"/><path d="M16 32l8-16 8 16-8-5z" fill="#fff"/></svg></div>
    <div class="as-meta">
      <h3>Lumen</h3>
      <p>Photo &amp; Video Editor</p>
      <button type="button" class="as-get" id="asGet"><span class="as-bar"></span><b>GET</b></button>
    </div>
  </div>
  <div class="as-stats">
    <div><b>4.8</b><div class="as-stars" aria-label="4.8 stars"></div><small>12.4K ratings</small></div>
    <div class="as-sep"></div>
    <div><b>#3</b><small>Photo &amp; Video</small></div>
    <div class="as-sep"></div>
    <div><b>4+</b><small>Age</small></div>
  </div>
  <div class="as-shots">
    <span class="s1"></span><span class="s2"></span><span class="s3"></span>
  </div>
</div>

Extend with AI

Take This Snippet Further With AI

The AI prompt for this one is for Patreon supporters ($3 a month), along with a site with no ads. Supporters enter the passcode once and it is remembered in this browser.

· Become a supporter

What's included

Features

Install progress button
GET fills with progress then becomes OPEN.
Three-state logic
Idle, installing, and done in one variable.
Organic progress
Random increments make the fill look real.
CSS star strip
A masked gradient draws stars with no images.
Stats strip
Rating, rank, and age with 1px dividers.
Gradient assets
Self-contained icon and screenshot placeholders.
Grid-ready
Drop several into an app gallery.
No dependency
Pure HTML/CSS/JS for store listings.

About this UI Snippet

App Store Card — App Listing with Install Progress

Screenshot of the App Store Card snippet rendered live

An app store card is the listing tile you see in the App Store or Play Store — app icon, name, category, a GET/install button, ratings, rank, and screenshots. This snippet recreates one in HTML and CSS with an animated install button that fills with progress and settles to OPEN, in vanilla JavaScript with no dependency. It's a polished, reusable component for app directories and marketing pages.

The GET button that installs

The standout is the button. Tapping it switches from idle to an installing state: the label clears and an absolutely-positioned .as-bar grows from 0 to 100% width behind the text, driven by a setInterval that adds a random increment each tick (so progress looks organic, not linear). At 100% it flips to a green .done state reading OPEN. The three states (idle → installing → done) are tracked in one variable, mirroring the real store interaction where GET becomes a progress indicator then OPEN.

A CSS star rating with no images

The rating stars are a clever single element: a solid amber bar with a mask of repeating-linear-gradient that punches transparent gaps between fixed-width segments, leaving five star-width blocks. It's drawn with pure CSS — no SVG, no five separate icons — and the amber shows through only in the star areas. (For a precise fractional rating you'd overlay a clipped copy; here it reads as a clean five-star strip.)

The stats strip

Rating, chart rank, and age sit in a flex row separated by thin 1px dividers (flex: 0 0 1px), each a centered number with a small label — the compact metadata layout the stores use. It's all flexbox, so it stays evenly spaced at any card width.

Gradient screenshots and icon

The app icon is an inline SVG with a gradient and a glyph, rounded and shadowed like a real app icon, and the screenshot thumbnails are gradient placeholders you'd swap for real images. Using gradients keeps the demo self-contained and shows where your assets go.

Reusing it

Replace the icon, copy, stats, and screenshots with real data, and wire the install button to a real download or a store deep-link. Drop several into a grid for an app gallery, or feature one beside a phone mockup on a landing page.

Step by step

How to Use

  1. 1
    Paste HTML, CSS, and JSAn app store card renders with an icon, stats, and screenshots.
  2. 2
    Tap GETThe button fills with install progress behind the label.
  3. 3
    Wait for installAt 100% it turns green and reads OPEN.
  4. 4
    Read the statsRating, rank, and age sit in a divided strip.
  5. 5
    Swap the assetsReplace the icon and screenshot gradients with images.
  6. 6
    Wire the buttonPoint install at a real download or store link.

Real-world uses

Common Use Cases

App directory listings
List apps in a grid next to a feature cards section, with icon, category, rank and age stats on every card.
Mobile app promo sections
Feature an app alongside a phone mockup, with a masked-gradient star strip drawing ratings without any image assets.
Download calls to action
Pair with an app download hero, where GET fills with progress and turns into OPEN to demonstrate the install journey.
Ratings in context
Show review detail beside a rating breakdown, keeping the three install states, idle, installing and done, in one variable.
Marketplace install buttons
Reuse the progress button inside a product card, with random increments making the fill look like a real download.
Related: Alphabet Jump Index — Contacts-Style A–Z Scroll Navigation
See the Alphabet Jump Index — Contacts-Style A–Z Scroll Navigation for a related mobile pattern worth pairing with this one.
Related: Swipe Tab Switcher
See the Swipe Tab Switcher for a related mobile pattern worth pairing with this one.
Related: Mobile Boarding Pass Screen
See the Mobile Boarding Pass Screen for a related mobile pattern worth pairing with this one.
Related: Mobile Appearance Settings Screen
See the Mobile Appearance Settings Screen for a related mobile pattern worth pairing with this one.
Related: Mobile Delivery Order Tracking Screen
See the Mobile Delivery Order Tracking Screen for a related mobile pattern worth pairing with this one.

Got questions?

Frequently Asked Questions

Tapping GET moves through three states held in one variable: idle, installing, done. In installing, an absolutely-positioned bar grows from 0 to 100% width behind the label, driven by a setInterval that adds a random increment each tick so it looks organic. At 100% it switches to a green done state labeled OPEN.

The stars are a single amber bar with a CSS mask made from a repeating-linear-gradient that alternates solid and transparent segments. The amber shows through only in the star-shaped blocks, producing a five-star strip with no SVG or separate icons. For a precise fractional value you'd overlay a clipped second copy.

Yes. The icon is an inline SVG with a gradient and the screenshots are gradient placeholders — both are just markup you replace. Swap the icon for your <img> or SVG and the screenshot spans for real images; the layout, shadows, and rounded corners stay the same.

It's a flex row where each stat is a flex:1 centered block and the dividers are flex:0 0 1px elements. Flexbox distributes the space evenly regardless of card width, and the fixed-width dividers keep their hairline thickness, so the strip stays balanced as the card resizes.

Render the icon, copy, stats, and screenshots from props, and hold the install state (idle/installing/done) in component state. Put the progress interval in the click handler and clear it on completion or unmount. Bind the bar width and label to state. In Tailwind, build the stats strip with flex and the star mask with an arbitrary mask utility or a small style block.