AnyReplay vs Smartlook
AnyReplay vs Smartlook
AnyReplay and Smartlook compared: web and native mobile recording versus React Native element-tree recording, translated replay and a documented self-host path.
Updated · 5 min read
Smartlook is generally known for recording both websites and native mobile apps, and for pairing those recordings with events and funnels so a team can see what happened and how often. AnyReplay covers web and React Native, and puts its effort into things Smartlook is not known for: translated replay, an element-tree recorder for React Native that never takes a screenshot, masking applied before anything leaves, and a documented self-hosting path.
If your mobile app is written in Swift or Kotlin, this comparison is short: AnyReplay does not record it yet. If it is React Native or Flutter, or you have web users in more languages than your team reads, read on.
What Smartlook is known for
Smartlook is generally known for session recordings across web and native mobile platforms, with heatmaps, event tracking and funnels layered on top so that recordings can be found by the behaviour they contain. It is a hosted service aimed at product and marketing teams. For the platforms currently supported, plan structure and limits, check their site for current pricing and limits.
Where AnyReplay is different
Mobile recording as an element tree, not pixels
Screenshot-based mobile recording captures whatever was on screen, which is faithful but heavy and opaque: the text in the frame is just pixels. AnyReplay's React Native SDK instead reads the tree React has committed and notes, for each host element, what it is and what it says, then measures where it sits on screen. The React Native element tree entry describes the format. A first frame of a screen is a few kilobytes, later frames carry only what changed, and an idle screen sends nothing.
What that makes possible
Because frames are text, they can be translated the same way web sessions are, and masking can be exact: anything with secureTextEntry or an ar-mask testID is masked on the device before it leaves, and every TextInput is masked by default, each keeping its box and losing its words. No native module or rebuild; the SDK works in Expo Go on SDK 52+. Costs: videos are boxes, FlatList records only rendered rows, and custom native components are unknown boxes. Session replay for React Native walks through the trade-offs.
Translation with an organisation-wide memory
AnyReplay translates the rrweb event stream, and the equivalent React Native frames, before replay. Strings are extracted with their role and cached in a translation memory keyed on organisation, target language and source hash; after a handful of sessions nearly every interface string is already known. Glossary terms, up to 200, override the model, and human corrections are never sent to a model again.
Masking before anything leaves, on both platforms
The web SDK masks typing by default; maskAllInputs: false records it, maskAllTyping: true masks rich-text editors too, ar-mask masks an element's text or a field's value, ar-block leaves an element out, and requireConsent: true records nothing until the page grants consent. Passwords, payment card fields and card-number-shaped values are never recorded; email and tel inputs follow maskAllInputs. The mobile SDK behaves the same way: maskAllInputs is on by default there too, and the same credential and payment floor applies. Masked values replay as asterisks and the originals never leave the device or the page. The privacy page and the guide to masking sensitive data cover the details.
Self-hosting and a script-free player
The documented single-host deployment runs PostgreSQL, the API, ingest and the dashboard behind nginx on Ubuntu 24.04, with gpg-encrypted backups and a weekly restore-and-count check. The player iframe is sandboxed without allow-scripts, script bodies are replaced with a placeholder at record time, and a test keeps it that way.
Side by side
| AnyReplay | Smartlook | |
|---|---|---|
| Web recording | Yes, rrweb-based; SDK 34.8 KB gzip | Yes |
| React Native recording | Yes, semantic element tree; no native module | Native and cross-platform mobile SDKs are generally known to exist; check their docs |
| Session translation | On demand, with an organisation translation memory | Check their docs |
| Input masking | Every field masked by default; passwords and payment fields never recorded | Check their docs |
| Replay sandbox | Iframe without allow-scripts; script bodies never recorded | Check their docs |
| Self-hosting | Documented single-host deployment; encrypted, verified backups | Hosted service; check their docs |
| Free tier | Free plan: 1 project, 500 sessions per month | Check their site for current plans |
| Dashboard languages | English, Turkish, German, Spanish, French | Check their docs |
When Smartlook is the better fit
- Your mobile app is native iOS or Android, or built with .NET MAUI. AnyReplay has no SDK for those yet.
- You want events, funnels and heatmaps alongside recordings in one hosted product.
- Pixel-accurate mobile recordings matter more than small, translatable frames; a wireframe with real text is not a screenshot.
- You do not need self-hosting or translation and want the broader analytics feature set.
When AnyReplay is the better fit
- Your app is React Native and you want a recorder with no native module that runs in Expo Go (SDK 52+) and masks on the device.
- Your support or QA team reviews sessions from users who write in languages the team does not read.
- You need the data on infrastructure you control, with an audit trail and configurable retention.
- Your dashboard users prefer Turkish, German, Spanish or French. See the mobile app teams use case.
Free plan: one project and 500 sessions a month; see the pricing page.
Frequently asked questions
Does AnyReplay record native iOS or Android apps?
Not yet. AnyReplay records websites and React Native, Flutter, Ionic, Cordova and Electron apps, with a Tauri package in preview. For a Swift or Kotlin app today, Smartlook or another tool with those SDKs is the right choice.
Do React Native recordings look like the real app?
They are a wireframe with real text and layout, not a screenshot: maps and videos are labelled boxes, custom native components are unknown boxes, and FlatList records only rendered rows. In return, frames are small, masked on the device and translatable.
How does the React Native SDK handle navigation?
It exposes screen(name) to name the current screen and trackNavigation(ref) for react-navigation, plus identify, consent, flush and getSessionId. Pass it AsyncStorage as the storage option to recognise a returning visitor.
Is there a free tier?
AnyReplay has a Free plan with 1 project and 500 sessions per month. Smartlook's current plans are on their site.
Choosing for a React Native app? React Native session replay tools compares screenshot-based and element-tree recording across the tools mobile teams usually consider.
Smartlook is a trademark of its owner. AnyReplay is not affiliated with or endorsed by it. Feature descriptions are general and may be out of date; check their site for current details.