Find out why UXCam has the best performing SDK on the market.
August 25, 2022 by Jane Leung
Software development kits (SDK) help businesses build better apps. As mobile app functionality gets more sophisticated, thousands of different SDKs have exploded onto the scene. TL;DR, so what makes UXCam the best performing mobile app analytics SDK in the market?
The numbers don’t lie: Nearly 35,000 apps on the market have UXCam installed, the closest competitor has around 3000 apps with their SDK installed.
Google has given our SDK a nod for our reliability and performance by listing us in their Google Play SDK Index, which was launched at the Google I/O conference in 2022.
Our SDK is feather light: UXCam’s SDK uses less than 1MB of memory.
Covers native and non-native tech stacks like Xamarin, Flutter, and React Native.
A dedicated mobile SDK team is here for you: UXCam customer success engineers are there for you every step of the way, from integration to troubleshooting.
Users love us: We’ve won awards on review site G2 including most Implementable and Best Results in the category of Mobile Analytics.
Keep reading for more details on why UXCam has the best performing SDK in the mobile app analytics market. But now that we’ve had a quick introduction to UXCam’s SDK. Let's start at the top.
An SDK is a downloadable set of tools developers use to create applications on specific platforms. At its core, an SDK is code that someone else wrote so you can perform a function in your mobile app. The beauty of such a kit is that a developer doesn’t have to build all the functions of a mobile app from scratch. The kit can include libraries, documentations, code samples, processes, and guides that developers can use to integrate into their own app.
App performance issues are often directly caused by the SDKs you put in your app. It’s critical to choose a low-risk and high-performance SDK because it has a direct impact on the end user’s experience of your app. A high-risk, poor-performing SDK can result in:
Slowing down your app
Bugs on the app
This can lead to user churn, poor app reviews, and if the SDK you’re using doesn’t follow the app store rules, your app could be removed from the app store. Ultimately, a low-risk high performance SDK will positively impact your business metrics like user retention, acquisition, and revenue.
We know mobile better than competitors. UXCam was built for mobile-specific data. Unlike competitors with hybrid web / mobile solutions, UXCam has been built for mobile since its inception in 2014.
Our SDK won’t slow down your app. With more details below, UXCam uses less than 1MB of memory. Our reliably lightweight SDK enabled UXCam to win the Google I/O performance award.
Our SDK is easy to implement. A basic integration takes a few minutes. Full integration depends on how big your customizations and needs are. A complete integration can be done in 30 minutes. That includes importing UXCam, creating the configuration object, starting the SDK. In fact, we won a “Most Implementable” badge in the category of Mobile Analytics from G2 user reviews.
We’re flexible! Our SDK covers native and non-native frameworks:
We have mobile SDK experts that are there to help you: UXCam customer success engineers are there for you every step of the way, from implementation to troubleshooting. We make sure your onboarding goes smoothly and are there to answer any questions. We offer technical calls to review documentation and APIs as well. Our customer success engineer team tests every platform and new SDK releases with demo apps to make sure the implementation works. We always provide detailed documents and examples. We are officially registered in the Google SDK Index: At the Google I/O conference in 2022, UXCam was featured as one of the top 80 SDKs on the Google SDK Index, a directory that helps developers choose the best apps for their platform. SDKs featured on this list are reliable and trusted by the mobile app developer community.
Source: UXCam analytics on Google SDK Index
We have market proof: Our SDK is mature, stable, and used on over 35,000 apps in the Google Play store and Apple App store. Trusted by thousands of businesses, here are the number of apps that use UXCam compared to our competitors.
Android SDK: 32 797 apps have UXCam installed iOS SDK: 2297 apps have UXCam installed
Android SDK: 628 apps have Fullstory installed iOS SDK: 414 apps have Fullstory installed
Android SDK: 2841 apps have Smartlook installed iOS SDK: 836 apps have Smartlook installed
UXCam is known around the mobile app industry for having an extremely lightweight mobile app. Our performance stats below are based on the results of a test run on a mid-range Samsung device running a basic Android stub project.
UXCam Android SDK lib package (aar): 373 KB
Test App without UXCam (apk): 5.4 MB
Test App with UXCam (apk): 6.1 MB
UXCam’s SDK uses less than 1MB of memory.
After tests on mid-range Samsung devices, the memory usage on the test app after integration of UXCam starts from 93MB and then gradually reaches 128 MB of heap memory which triggers garbage collection and resets back to 93 MB.
This cycle continues.
Without UXCam: Usages 93 MB consistently as no garbage collection was triggered.
Memory resets to a minimum after garbage collection is triggered.
The main thread use is 19 ms on average per frame drawn. It’s when UXCam has to draw views into Bitmap. For the test app in default settings, the frame rate is 0.5 fps, so 19 ms is used per 2 sec to draw the view to Bitmap.
The most CPU-intensive job of UXCam SDK is taking a screenshot and encoding it to the video file. This action is performed once every 2 seconds for the default recording settings.
Based on the test results, the CPU usage on mid-range Samsung devices ranged from 3 - 6% usage burst per 2 seconds.
The peak of CPU usage on each frame drawn and rendered.
UXCam has minimal impact on network bandwidth because it only performs network calls at the beginning of the app session, which has a minimum payload of 293 Bytes. And after the app goes to the background, which is used to send the data files. The payload for file upload requests depends on data and video file sizes - See more details below.
Based on the test results the Verification Request has a 293 Bytes payload **without internal debug logs.
However, for the Data Upload Request the payload depends on the data and video file size profiled below.
Video size depends on the resolution of the video and the size of the frame being encoded. The result is simple plain UI elements with no interaction with the app.
1 min session - Video: 13 KB Data: 2KB
5 min session - Video: 39 KB Data: 2KB
10 min session - Video: 70 KB Data: 2KB
** Video and data files are both compressed and encrypted.
We have a very low crash according to a Google SDK Console report. Based on a 7 day report in 2022 and the stats below, we have a crash rate of 0.000018% per device
Number of devices running UXCam Android SDK: ~9.5million (From our stats)
Number of unhandled exceptions: 172 (From Google SDK Console)
We’re working around the clock to make sure that our SDK is serving mobile app teams in the best way possible. Here’s a look at something we’re working on under the hood:
Blur/Occlusion API: The Blur API allows you to hide sensitive information without losing visibility over your user's experience and interactions. Apply blur to the screens that contain PII data, so you can visualize all the elements of your screen, view user interactions, and gather useful insights with video replay while protecting your users' privacy and hiding all personal information.
Improved Screen Recording: We’re using a PixelCopy-based approach which is efficient with main thread use and also natively supports capturing SurfaceViews so no custom implementation is required to support recording of map and video player views. We also made changes to support Mediacodec for video encoding on emulators which keeps video size lower and consumes less resources than JCodec.
Decrease in main thread usage: This main thread, also known as the UI thread, is responsible for everything that happens on-screen. Understanding how it works can help you design your app to use the main thread for the best possible performance. This is the case when frames are skipped which will result in stutter while using the app. We have improved cold start time consumed by UXCam by about 200 ms (18 frames in 90hz screen). PixelCopy has also contributed to a decrease in main thread use.
Jetpack Compose (Android) and SWIFT UI (iOS) support: We’re constantly adjusting and updating our SDK to support the latest libraries.
Flutter improvements: We have recently completed the implementation of supporting Flutter hybrid apps with multiple FlutterView on the same screen. All other performance improvements are for cross-platform plugins as well.
App logs: All the information and context you need to improve error analysis and reduce debugging time. Improve the user experience, health, and performance of your application by analyzing application logs in combination with session replay. Empower your development team with all the tools they need to speed up the debugging process and fix bugs, crashes, and UI freezes in record time.
Handled exceptions: Capture handled exceptions on UXCam to see how non-fatal exceptions impact your app performance and users' experience, prevent the propagation of errors, find the most common reasons and types of exceptions, watch the recordings to gather more insights, or send additional information for a deeper analysis.
A basic integration takes a few minutes. Full integration depends on how big your customizations and needs are. A complete integration can be done in 30 minutes. That includes importing UXCam, creating the configuration object, and starting the SDK.
We’re GDPR compliant. Any personally identifiable information (PII) in your app like email addresses and credit card numbers can be hidden with our API.
You can choose to hide:
Texts: when you only collect PII data with text fields
Screen Views: when you need to hide a specific section of your screen.
Screens: when you need to hide the whole screen, e.g. payment screen.
Hiding sensitive information
Sensitive information will be hidden under red boxes on the device before rendering the video and therefore never sent to UXCam. Make sure that all this info is hidden before releasing your app to production to make sure your users’ PII is never recorded.
Do we support Jetpack Compose? Yes, we do, from the latest versions of the SDK. It’s the same SDK for the android main SDK.
Does my app need to wait for UXCam to be initialized before I can continue using the app and will this impact loading times? The short answer is no. UXCam performs its requests on a separate thread so there is no way for UXCam to slow it down. Once UXCam verifies the session it will startup independently of what your app is doing.
Do I have to add a line every time I am triggering an event?
No, you should only call it when you know it's going to be triggered, it's not by occurrence but by stance. You don’t have to call 1000 times to click ‘purchase’. You just have to add ‘purchase’ once.
Do I have to add events every time they are going to happen?
You only have to log events when they are going to be triggered and you only have to add one event per event category. e.g. click on purchase, log event, purchase.
Our users use our mobile app offline. Are sessions stored on the device until it connects to the Internet?
Yes, we store the sessions until the user connects to the Internet. In the recording settings, you can also choose if you want to use only wifi or mobile data too. Click here to read more about how we store sessions.
Can I send information from Firebase to UXCam? No just from UXCam to Firebase.
Ready to see what all the hype is about? Try UXCam’s SDK for free today.
Jane is the director of content at UXCam. She's been helping businesses drive value to their customers through content for the past 10 years. The former content manager, copywriter, and journalist specializes in researching content that helps customers better understand their painpoints and solutions.