Miniwall Docs
SDK

Platform differences

Where the web and mobile SDKs behave differently, plus fonts, text size, accessibility, images and layout on a phone.

Every page of this section applies to all platforms unless it says otherwise. The mobile SDK's layout is checked against the web renderer's output on a shared set of test screens, so a screen looks the same on every platform. This page collects the differences.

Web and mobile at a glance

TopicWebMobile (iOS, Android, React Native, Flutter)
Access checkAllowed sources checks the page's origin (Website entries).Apps send no origin. Allowed sources (optional, iOS and Android entries) checks the app's ID, sent in the X-Miniwall-App header. A request without the header passes. The public key (pk_...) is the credential, and it can only read published screens and send events.
TriggersPage load, delay, scroll, exit intent.App open, delay, event. See Auto placements.
DisplayPopup, full screen, banner, slide-in, toast, drawer or launcher.A full-screen cover, a sheet, a banner or a toast. See Display modes.
Closing and skippingonClose and onSkip callbacks.The result of present carries closed and skipped.
EmbeddingmountPaywall, React <Paywall> and <uikit-paywall>.Native SDKs only (MiniwallView, MiniwallScreen). See Embed a screen.
PrivacyCookie banner and CSP. See Security and CSP.App Store and Play privacy answers. See Events and privacy.
FontsWeb font files.TrueType files for the fonts in the Miniwall catalog.
Targeting factslocale, device, path, seen_count, days_since_first_seen.Adds platform, os_version, app_version and country; no path. See Targeting attributes.
Offline and failed sendsSaved copy in localStorage. A failed event send is dropped.Saved copy in the cache directory. Events wait on the device until there is a connection.

Fonts (mobile)

iOS and Android cannot read web font files. Fonts you pick from the Miniwall catalog in the editor are downloaded to the device as TrueType files, cached, and used at the weight the screen asks for. The download happens before the screen shows (preload does it ahead of time). All fonts of a screen download at once and each waits at most 6 seconds; one that does not arrive uses the system font at the same weight. A font name that is not in the catalog also uses the system font.

On Android versions before 8.0 (API 26) variable fonts show at their default weight.

Text size (mobile)

Text follows the system text size (Dynamic Type on iOS, font size on Android) up to 1.6 times, set by maxFontScale in configure (1 turns it off). Line height stays 1.5 times the size, like the web. A box with a fixed height does not grow, so large text can be clipped inside it. Leave room in the design, or set the height to auto in the editor.

Accessibility (mobile)

  • VoiceOver and TalkBack read text, buttons with their labels, the selected package, toggles and carousel pages ("Page 2 of 3").
  • A continue button that waits for a required answer is read as dimmed (iOS) or disabled (Android).
  • Decorative icons and background images are hidden from screen readers. Give a button that only shows an icon a name in the editor: the name is read as its label.
  • Animations follow the system setting for reduced motion.

Images and layout (mobile)

  • Text uses the system's text engine, so a line can wrap at a different word than in the editor preview, and a text block's height can differ by a fraction of a line.
  • Large images are decoded at the size a phone can show (up to about 2048 px on the long side on Android).
  • An image set to fit without a fixed width takes its width from the image file; on the web this can differ in a few rare layouts.
  • Icons are drawn as vector shapes in one colour. The shapes of Lucide icons come along with the screen, so opening it does not need an outside icon service.
  • The keyboard may cover a text field at the bottom of a screen; the screen does not scroll to the field yet.
  • A carousel with Loop goes from the last page back to the first with a reverse slide.

On this page