Quick Start • Homepage • Documentation • Issues
Critical Moments
Our Mobile Growth SDK is designed to:
- Automate tedious and repetitive growth tasks.
- Provide powerful new growth tools.
Overview 🔭
- Growth plans defined in JSON: Push updates anytime without app store reviews. Make updates without writing new code. Proven templates to get you started.
- Rich Growth Features: smart notifications, app-reviews, paywall timing, native modal UI, app-wide banners, smart-feature flags, and more.
- Powerful Targeting: deliver the right action at the perfect moment with over 100 built-in targeting properties.
- Example:
device_battery_level > 0.2 && eventCount('app_start') > 3 && app_install_date < now() - duration('24h') && photo_library_permission == 'authorized'
- Example:
- Next Level Privacy: 100% local, zero data collection
Table of Contents
- How It Works
- Feature Overview
- Powerful Targeting
- User Privacy
- Quick Start
- Demo App
- Documentation
- Contact Us, License & Copyright
How It Works 👩💻
Step 1: Install our SDK
Install our SDK and integrate into your app following our Quick-Start Guide. This only takes about 15 minutes.
Step 2: Create your growth plan in JSON
Yes, really — a growth plan defined in JSON. You can add features without any additional code. If you want deeper integrations, custom hooks are available.
Use our guides to get started with ready-to-deploy and proven growth tactics. We're building a growing library of examples you can use for inspiration.
Step 3: Update Anytime, Without App Updates
Once your initial growth plan is deployed, you can update anytime without waiting for app reviews or App Store updates. Add growth features without new code, anytime, over the air. Update and tune your user targeting logic, including in past app releases.
Feature Overview 🔧
- Notifications: Our smart notifications target delivery to the perfect moment, considering realtime device condition. Start with our templates to increase activation, reduce churn, and custom notifications.
- Improve your App Rating: use our template to ask users to rate your app at the perfect moment, increasing your rating and rating volume.
- Optimize Revenue: ask users to upgrade at the perfect moment, with over 100 built-in targeting properties.
- In-app Messaging: add fully native messaging UI without writing any code. Options include banners, modals, alerts, browser, and more. All themed to match your brand.
- Smart Feature Flags: define feature flags that can be updated in real-time based on over 100 real-time device conditions (low battery, has network, permissions, etc).
- Over The Air Updates: Update your growth plan anytime without app updates. Quickly recover from unexpected bugs, outages, deprecations, and other critical events.
Powerful Targeting 🎯
With Critical Moments, you can target users with the right actions at the perfect moment:
Targeting Conditions
Our simple string-based conditional statements can check over 100 built-in properties, custom properties, in-app events, and user engagement history.
Some examples:
eventCount('app_launch') > 5 && latestEventTime('asked_to_subscribe') < now() - duration('72h')device_model_class == 'iPad' && versionLessThan(app_version, '2.4.1')camera_permission != 'authorized' && photo_library_permission != 'authorized'has_watch || location_city == 'Toronto' || has_car_audio || on_call || has_bt_headset || network_connection_type == 'cellular'weather_condition IN ['Rain', 'Thunderstorms'] || weather_cloud_cover > 0.80
Targeting Events
Define exactly when actions should occur, based on in-app event triggers.
The most commonly needed actions are tracked automatically. Add your own custom events or properties with a single line of code.
Local User-Engagement Database
Our SDK automatically starts building an on-device database of user engagement history. Use this database when targeting user-messaging, reviews, notifications, paywalls and more! For example: eventCount('session_start') > 3 && latestEventTime('asked_to_subscribe') < now() - duration('24h') && !propertyEver('has_paid_subscription', true)
User Privacy 🔑🔒
Critical Moments is designed from the ground up for user privacy. All logic is run locally on their own device. We don’t collect any information about your users. A default installation makes zero calls to our servers from the user’s device. Learn more about our privacy architecture in our blog post.
Note: Some optional services like GeoIP location and weather require external services. These are clearly outlined in our docs. They are completely optional, do not collect user identifiers, and do not store logs long-term.
Quick Start 🚀
Our Quick-Start guide will get you up and running with the Critical Moments SDK in just a few minutes.
Demo App
Want to see Critical Moments in action? Download our demo app from TestFlight for a hands-on experience, or view the source code on GitHub to understand the implementation details.
Documentation 👩💻
Our documentation includes:
- Quick Start Guide
- Guides for increasing app ratings, reducing churn with notifications, and smart feature flags
- Detailed technical docs
Contact Us 👋
We're here to help!
Can't find an answer in our docs? Need help with integration, have a bug report, or a feature request? Feel free to reach out!
- Bug tracker: GitHub Issues
License ⚖️
Critical Moments is MIT open source!
A prior version of Critical Moments was source-available, but required a commercial license. If you've deployed that version, you can now use it for free. The signing tool for config files is here and will sign any config, including those with pro-features, for free.
Copyright ©️
"Critical Moments" and our logos are trademarks. All rights reserved.