Skip to content

M3 Expressive Paywall FAQ

Short answers to the questions developers ask most. Each links to the page with the details.

Does it work with stable material3?

Not with 1.4. The library is built on androidx.compose.material3 1.5.0-beta02, the first release line where the Material 3 Expressive components it uses (ButtonGroup, ToggleButton, MaterialShapes, wavy progress) are available. It brings that version with it.

What is the minimum SDK?

minSdk 26 (Android 8.0). Your app must compile against SDK 37 because material3 1.5.0-beta02 requires it; targetSdk can stay lower.

Does it support dark mode and dynamic color?

Yes. Every color comes from MaterialTheme.colorScheme, so the paywalls follow your theme, including dynamic (wallpaper) colors on Android 12 and newer.

Do I need RevenueCat or another billing SDK?

No. The library has no billing code. Use Google Play Billing directly, RevenueCat, or anything else that gives you prices and a purchase function.

Can I use it with Compose Multiplatform?

Not today. It is an Android library and uses Android resources for its strings.

How do I change the animation speed?

The paywalls use MaterialTheme.motionScheme. MotionScheme.expressive() gives springy motion, MotionScheme.standard() calmer motion. Set it in MaterialExpressiveTheme.

Can I translate the text?

Yes. Every default string is in the library's strings.xml with a pw_ prefix, so you can override them in your app's values-xx folders, or pass title and subtitle parameters directly.

Is it free for commercial apps?

Yes. It is MIT licensed, so you can use and modify it in commercial apps. Keep the license notice.

Does it handle Google Play policy for me?

It shows the price, billing period, trial terms and auto-renew text for the selected plan, plus Restore, Terms and Privacy links. You are still responsible for your final copy and prices, and for a way to manage the subscription.

Why do I need OptIn for LimitedOfferSheet?

Its sheetState parameter uses material3's SheetState, which material3 marks ExperimentalMaterial3Api. Add OptIn(ExperimentalMaterial3Api::class) where you call it.

Built by Sanikant. Set in Google Sans Flex (SIL Open Font License). Not affiliated with Google.