Skimmer
The Skimmer pool care example: eight localized App Store screenshots in four languages with Tailwind v4, photo backgrounds and per-locale device captures.
Skimmer is a pool and hot tub maintenance app. Its asset project is the most complete example of localized screenshots.

| Collection | Source size | Templates | Locales | Exports |
|---|---|---|---|---|
App Icon icon | 1024×1024 | 1 | - | 1024px (1024×1024), 512px (512×512) |
App Store Screenshots screenshots | 440×956 | 8 | en, ar, de, ja | iPhone 6.9" (1320×2868), iPhone 6.7" (1290×2796), iPhone 6.5" (1284×2778), iPhone 6.1" (1179×2556) |
Source: examples/skimmer on GitHub.
Techniques
- Compiled Tailwind v4.
src/styles.cssimports Tailwind and defines a brand palette in an@themeblock (--color-sk-navy,--color-sk-sea,--color-sk-coraland so on). Templates link the compiled../../dist/styles.css, so renders never touch the network. - A shared stylesheet for the set.
assets/screenshots/_shared.cssholds the frame, device and headline classes that all eight screenshots use. Because templates reference it with a relativehref, changes to it count toward each template's checksum inassets.lock. - Every string localized. Headlines are
{{hero_line1}},{{hero_accent}}and so on, resolved fromlocalizations.json. The collection rendersen,ar,deandja, even though the file holds more locales. - Per-locale device captures. The phone image carries
data-locale-img="01_pools_list", and a smallMutationObserverswaps itssrctopublic/screenshots/<lang>/...when Open Assets setslangon the page. Arabic screenshots show the Arabic app. - Photo backgrounds. Full-bleed photos from
public/screenshots-bg/sit under a gradient scrim so white headlines stay readable. - outFile per locale. Each size writes to
exports/screenshots/{locale}/iphone-6.9/{template}.png, a layout ready for upload tools.
Run it
cd examples/skimmer
npm install
npm run dev # Tailwind watch + dev server
npm run render # build CSS, then rendernpm run render runs build:css first, so the compiled CSS is always current.
What to copy
- The
package.jsonscripts:devwithconcurrently, andrenderthat builds CSS before rendering. - The
data-locale-imgscript, if your screenshots embed real app captures per language. - The
_shared.csssplit: one file for the system, one HTML file per screenshot.
See Localization and RTL for the underlying features.
Last updated on
Examples
Six real Open Assets projects from shipped apps, with App Store screenshots, icons, Product Hunt galleries and social headers you can clone, run and copy from.
Tax Days
The Tax Days example: App Store and Google Play screenshot collections sharing one 38-locale strings file, with phone and tablet sizes written through outFile.