geof-dev/nativephp-store-review

NativePHP Mobile plugin for native in-app store review prompts (iOS SKStoreReviewController & Android Play In-App Review)

Maintainers

Package info

github.com/geof-dev/nativephp-store-review

Type:nativephp-plugin

pkg:composer/geof-dev/nativephp-store-review

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.3 2026-04-11 11:10 UTC

This package is auto-updated.

Last update: 2026-04-12 05:09:08 UTC


README

A NativePHP Mobile plugin to trigger the native in-app review prompt on iOS and Android — letting users rate your app without leaving it.

Requirements

  • PHP 8.2+
  • nativephp/mobile ^3.0
  • iOS 15+ / Android 8.0+ (API 26)

Installation

composer require geof-dev/nativephp-store-review

The service provider is auto-discovered.

Usage

use Nativephp\StoreReview\Facades\StoreReview;

// Check if in-app review is available on this device
if (StoreReview::isAvailable()) {
    StoreReview::requestReview();
}

requestReview(): bool

Asks the OS to display the native review prompt. Returns true if the request was successfully dispatched to the system.

Important: returning true does not mean the dialog was shown to the user. Both iOS and Android throttle how often the prompt appears (iOS limits it to ~3 times per 365-day window per app). The OS decides whether to actually display it — this is by design and cannot be overridden.

isAvailable(): bool

Returns true if the current platform supports in-app reviews. Use this to hide review CTAs on unsupported environments (e.g. running in a browser during development).

Listening for Events

The plugin dispatches a StoreReviewCompleted event when the native flow finishes:

use Livewire\Attributes\On;

#[On('native:Nativephp\StoreReview\Events\StoreReviewCompleted')]
public function handleReviewCompleted($result, $id = null)
{
    // $result — raw result payload from the native layer
}

Best Practices

Apple and Google both discourage prompting users at arbitrary moments. A few guidelines:

  • Don't ask too early. Wait until the user has experienced the value of your app (completed a task, finished onboarding, used it several times).
  • Never tie the prompt to a button labeled "Rate us". Apple's guidelines forbid triggering SKStoreReviewController from an explicit user action — the system may ignore it.
  • Don't call it after an error or negative event.
  • Don't call it repeatedly. The OS will silently suppress excess requests; spamming it won't help.

See Apple's HIG on Ratings and Reviews for more.

Testing in Development

  • iOS Simulator / Debug builds — the dialog appears every time (no throttling), but submissions are not sent.
  • TestFlight / sideloaded builds — the prompt does not appear. You must test on a production build from the App Store.
  • Android — use a FakeReviewManager for local testing; production requires an app published to the Play Store.

License

MIT © Geoffrey B.