ONLang 推出合规移动应用付费墙:用贝叶斯优化自动改写付费墙
EU-Compliant Mobile App Paywalls
ONLang 推出面向移动应用的付费墙优化系统,用服务端原生 UI 加贝叶斯 Thompson 采样,让付费墙变体自动向转化率收敛,并保留 10% 固定留出组衡量真实提升。
The optimization-native language
Paywalls that
rewrite themselves
toward conversion.
Server-driven native UI + Bayesian optimization. Ship contracts, not code — and let your paywall converge on what actually converts.
Request early accessSee it adapt
Growth
Product
Design
Mobile engineering
Built for growth, product and mobile teams
BUILT ON THE STACK YOU TRUST
DivKitStoreKit 2Play BillingRevenueCatReact Native
<5 ms
p95 delivery at 10× pilot load · staging
0 lines
of downloaded code · by design
10%
fixed holdout for unbiased uplift
Compliance-checked · Human-approved
Paywall variants that pass the law before they reach a user.
Every variant is checked against the rules of the markets you sell in, then approved by a person on your team. ONLang won't publish one that fails.
EU · since 19 June 2026
The withdrawal button
Directive (EU) 2023/2673 makes withdrawing as easy as buying. Every variant must say what it costs, that it renews, and how to cancel, before anyone subscribes.
Germany · BGH, 16 July 2026
Nothing to sell on the way out
Germany's Federal Court of Justice ruled that a cancellation page may only confirm the cancellation (I ZR 200/25): no offers, no pauses, no plan switches. ONLang refuses to publish an offer on a cancellation screen.
UK · DMCC Act, from January 2027
Subscription terms up front
Key information before signing up, clear trial terms, and an exit as easy as the entry. Variants for UK users state the renewal and what the trial turns into.
A person approves every variant
Variants drafted by ONLang's planner wait in a review queue. Someone on your team accepts or rejects each one, and the audit log records who decided.
Recorded on every release
Each release keeps the markets it was checked for and the ruleset version, so you can show what was checked, and when.
Checked in English, German and French. ONLang checks what your paywall says. For App Store and Google Play purchases, the store runs the withdrawal and cancellation flows. This is not legal advice.
LESS GUESSWORK. MORE EVIDENCE.
Watch the UI fit itself to conversion.
Same native components. Different hypotheses. One continuous learning loop.
NATIVE PAYWALL
EXPLORING
9:41
stride.
Unlock Premium
A plan that meets you where you are. A stronger you, one run at a time.
7 days free, then $6.99/month. Auto-renews. Cancel anytime.
Illustrative USD prices. Real prices resolved on-device.
Conversion uplift
Learning…
Collecting evidence · 50 holdout sessions needed
REPLAY
ONLang adaptiveFixed holdout (10%)
Hypothesis allocationTRAFFIC / P(BEST)
CTA copy01
Continue33%100%
Start free week — cancel anytime33%0%
Get my plan33%0%
Value proposition02
Unlock Premium50%100%
Outcome-led50%0%
Social proof03
Off50%100%
On50%0%
Default plan04
Monthly50%100%
Annual50%0%
EXPERIMENT EVENTS0 / 24 retired
›Guardrail: price disclosure visible ✓
›Registry: 24 approved compositions loaded
24 approved compositions · 90% adaptive traffic · 10% fixed holdout · Nothing generated at request time
FROM HYPOTHESIS TO HIGHER CONFIDENCE
Contracts, not code.
You define what can change. ONLang learns what should.
01 / REGISTRY
Register once
Bring your native components. Define their props and safe boundaries.
02 / HYPOTHESES
Define hypotheses
Explicit candidates in code. CTA copy, value props, flow order — not infinite guesses.
03 / COMPILER
Compile contracts
Composition IR becomes DivKit JSON. Validated, with telemetry injected.
04 / SDK + EVENTS
Render natively
The iOS, Android or React Native SDK renders with your components and records scroll depth, timing, dead clicks and drop-offs.
05 / LEARNING LOOP
Learn. Review. Repeat.
The optimizer learns. The offline planner proposes. Your team approves.
Client teamCLI + compilerControl planeDelivery APISDKs · iOS / Android / React NativeEvent ingestOptimizerPlanner (LLM)Human review ↺
INTELLIGENCE WITH BOUNDARIES
The LLM proposes. The optimizer decides.
The validator gates.
01 / PROPOSE
Creative, offline.
The LLM planner suggests the next candidates within your registered vocabulary. New ideas, not new runtime code.
02 / DECIDE
Evidence over intuition.
Bayesian Thompson sampling balances exploration with exploitation. Real conversions determine traffic, not a model’s opinion.
03 / VALIDATE
No shortcuts to production.
The compiler enforces contracts and guardrails. Your team approves before a new candidate ever reaches a user.
Never in the request pathNever emits raw UINever publishes without validation + approval
BUILT FOR YOUR STACK
A small contract. A powerful loop.
Hypotheses as code. SDKs for iOS, Android and React Native. Full control over what ships.
// onlang/hypotheses/paywall.cta.copy.ts — written by `onlang hypothesis create`
import { defineHypothesis } from "@onlang/cli";
export default defineHypothesis({
id: "paywall.cta.copy",
module: "paywall.cta",
kind: "tokens",
screen: "paywall",
rationale: "Risk-free framing reduces trial anxiety",
variants: [
{ id: "control", tokens: { "cta.title": { en: "Continue" } } },
{ id: "risk_free", tokens: { "cta.title": {
en: "Start free week", de: "Gratiswoche starten" } } },
{ id: "outcome", tokens: { "cta.title": { en: "Get my plan" } } },
],
});
// Lengths, price disclosure and legal links are checked by the compiler: onlang lintTRUST IS NOT AN EXPERIMENT
Optimize conversion. Keep your principles.
Safety and compliance are constraints, not settings you turn off.
Compliance is compiled in
Prominent price, billing period and trial terms. Restore Purchases on iOS. Terms and Privacy. No dark patterns or hidden close buttons.
Behavior is a guardrail
Time on screen, scroll depth, rage clicks and dead clicks protect the experience. Conversion is the reward — not engagement proxies.
Fail safe. Stay native.
Validation error or delivery failure? Render the cached flow or your own screen. Prices always come from StoreKit or Play Billing.
Locked down by default
Publishable SDK keys and per-install rate limits on every request. Store credentials encrypted at rest. Every token can be revoked.
Every change on the record
Kill switches, experiment decisions and accepted proposals record who, when and why. Nothing reaches users without a person deciding it.
Your billing provider stays the source of truth.
MEASURE WHAT MATTERS
Not another dashboard. A decision.
Designed to prove uplift against a holdout with a credible interval.
ILLUSTRATIVE UPLIFT
+23.4%
Against an unchanged holdout
CREDIBLE INTERVAL
95%
Uncertainty, not a vanity metric
P95 DELIVERY · MEASURED
<5 ms
Staging load test at 10× pilot traffic. No round-trip to an LLM.
Uplift and interval are illustrative. Delivery latency was measured on a staging stack, not in customer production.
Our first design partner: Creepy.IM
The Android assistant is bringing its onboarding paywall to ONLang with the React Native SDK, keeping its own billing, prices and fallback screen. See the integration commit
THE QUESTIONS WORTH ASKING
Clear answers. No black boxes.
Is this allowed by App Store review?
ONLang uses registered native components and delivers data contracts, not executable code or web views. The design is aligned with Guideline 2.5.2 and compiler guardrails address subscription disclosures under 3.1.2. App Store approval is ultimately Apple’s decision; compliance is not a guarantee.
Do you replace RevenueCat or StoreKit?
No. ONLang optimizes the UI, not billing. Purchases, entitlements and locally resolved prices stay with StoreKit 2, Play Billing, or RevenueCat through your purchase handler.
Does the LLM generate UI live?
Never. The LLM planner runs offline and proposes discrete candidates in the registered vocabulary. Validation and human approval happen before any candidate receives traffic. The LLM is never in the request path.
How do you avoid false winners?
A fixed 10% holdout, A/A tests, posterior uncertainty and expected-loss decision rules. Behavior signals act only as guardrails, never as a reward. The demo uses simplified immediate conversion feedback; it is not a production efficacy claim.
What about React Native or Flutter?
React Native is supported: a pure-JavaScript SDK (React Native 0.74+, Expo included) renders the same flows with your own React components, with the same events, kill switch and consent rules as the iOS and Android SDKs. See the React Native guide. Flutter is not supported yet.
What if a flow breaks in production?
Switch it off: one command takes the placement off ONLang within a second, and the SDKs show your own screen, even offline, until you switch it back on. Bad releases roll back the same way; nothing waits for an app update.
What does it cost?
Every app is free for 14 days, real users included. Then pick a plan per app: 0.49% of every order from users who saw an ONLang flow, or $49 a month with no fee per order. Billing goes through Stripe, and if a plan lapses ONLang switches itself off for that app: users see your own paywall and can still buy. The full terms are in the SDK License (onlang.io/legal/sdk-license).
What data do you collect?
Impressions, taps, scroll depth, time on screen, rage clicks, dead clicks, plan selections, purchase outcomes and drop-offs, tied to a random install id. No PII or IDFA. Upload waits for consent: until then events stay on the device for up to 30 days. This site’s experiment runs entirely in your browser.
EARLY ACCESS
Get early access.
Put the optimization-native language to work.
Bring your paywall. We’ll bring the learning loop.
Your email is stored with our email provider (Brevo) only to contact you about early access.
No spamNo commitmentNative-first
来源:Hacker News · onlang.io