What is Megacool?

Megacool is a mobile SDK for recording and sharing content. It enables app developers to easily capture highlights of what is going on in their app, and share that as animated GIFs. Megacool also assists in linking back to that content, so that if a user shares something from a particular part of the app, a link can be attached to the share that takes other users to the same part of the app.

Who are you guys?

You can see us at our company page. Hi! 👋

What are the key benefits of using Megacool?

What does it cost?

See our pricing page.

Which platforms and devices does the SDK support?

The SDK works on iOS devices running iOS 7 or newer (recording only works on iOS 8 and newer), and Android devices running API level 18 (4.3.x) and newer.

We publish SDKs for native iOS, native Android and Unity. On iOS the SDK works well with both Swift and Objective-C, and on Android with both Kotlin and Java. We are evaluating adding more platforms based on the feedback we get.

What kind of apps can use Megacool?

All apps that have interesting visual content that users might like to share! Currently, we are integrated primarily into games, but it's possible to also use Megacool with custom camera apps or similar that creates content that could benefit from sharing.

What does an ideal integration with Megacool look like?

Glad you're asking! Check out our best practice guide.

I want to share the dashboard with more people, can you add them to my account?

Yes! This isn't possible through the dashboard yet, but reach out to hello@megacool.co or shout into the chat box and we'll help you out.

How long does it take to integrate with Megacool?

This depends on the level of customization, most people have been able to get most features working in a couple of hours, with a full integration that fits the UI and feel of the game in a couple of days. The closer you integrate recording and sharing into the flow of the app the more time it'll take.

Do users need an account to share?

No. We enable users to share to whatever apps they already have on their device, and we work hard to ensure they all work. We support all apps that accept a GIF or MP4 on iOS and Android, but we have tested and verified that it works with the apps listed on the app support page.

I ran into an issue I don't know how to fix, can you help?

We'd love to! If you're not already on our Slack channel, you can reach out to hello@megacool.co and ask for an invite, or you can just ask your question directly there if you prefer email. You can also use the chat bubble on this page to reach us through Intercom.

Can I reward a user for sharing?

Yes! We provide callbacks in the SDK to enable instant feedback to you when a share is completed but note that on Android this is very fuzzy as there's no good APIs we can use to determine this, so it only works with a few select apps. We also enable you to listen for when the shares sent generates a new installation or someone opens the app as a result of viewing the share, which is generally of higher value to you than just completing a share.

What is the performance impact of Megacool?

As low as we can make it! We try hard to minimize the impact of the SDK, but it will take up some extra CPU during normal operation for the recording to work. It's hard to give a good general answer to this, try it in your app and see. If you're having performance problems, please reach out to us and we might be able to help diagnose the issue.

What is the size of the Megacool SDK?

The download size of the SDK is 700KB on Android (900KB unpacked), and 2.5MB on iOS (5MB unpacked).

Is the GIF saved anywhere?

No, not on the users' device. To make link previews work all shared recordings are uploaded to our servers, where we persist them indefinitely so that the user always has access to their content (as long as they have the links), but to store it locally the user has to share to something like their camera app or Dropbox some other channel that can persist the GIFs.

Is it possible to download the GIF from your servers?

Not at the moment, but if this is something you find interesting, please reach out, and we might prioritize something like this in the future.

Can we see any analytics on the impact of adding Megacool?

Yes, on your dashboard you can see how many shares are created in your game and how many leads to either a new install or a re-engagement of an existing user.

How much bandwidth does the SDK use?

To ensure that link previews work wherever the user decides to share the recording, the recordings are uploaded to our servers whenever a share is initiated. There are also situations where we can't be sure if a share is completed or not which requires us to upload the recording in advance. Recordings uploaded from shares that didn't end up being shared are deleted. The size of each recording uploaded depends on how well the particular app compresses and the screen dimensions, but generally, it'll be in the 300kB-600kB range.

Can I test how Megacool works without implementing it my game?

Yes! On iOS you can download a sample game we've published called Megacool Penguin which demonstrates recording, previews, and shares. You can also test us through some of the games that are using us, such as CATS.

What data does Megacool collect about users?

As little as possible! We collect the device manufacturer and model, and the version of the operating system, along with the version of your app. We need this both to make deep linking work reliably, and to be able to reproduce crashes and issues. A full list of data collected is included in our privacy policy. Notably, we do not collect advertising identifiers on either platform.

Is Megacool GDPR compliant?

Yes! You have to include a reference to our privacy policy in your own privacy policy that is presented to your users, but apart from that, you don't need to ask for permission from users. See our terms for more details.

Which parts of the recording and sharing experience can I customize?

You can configure these properties:

The first 50k free shares, are they per account or app?

Per account.

Why should I use Megacool instead of some other deep linking/marketing tool?

Megacool is the only solution that fully empowers your own users to be your marketing team. They know best what they want to share and where to share it, and will do so if you provide them with engaging content. We enable you to create that content, and leverage that to grow your user base.

A new SDK version is out, when should I update the SDK in my game?

It's recommended that you update the SDK every time you update your game if there are updates. The SDK is built with backward compatibility in mind, so you shouldn’t need to make any changes. If there are changes required, the release notes will tell you that. Also, it’s always a good idea to test the Megacool recording & sharing functionality before submitting your app to the App Store. If you encounter any errors with our SDK updates, we’d love to hear about them through our issue tracker or directly at support@megacool.co.


How does sharing recordings work?

Different apps accept media in different formats. When a recording is shared we create both a .gif and a .mp4 version of the recording and deliver the best format accepted by a given app. When we evaluate the best format we value that the recording autoplays, loops, and that we can include a link. How many of these properties of a share we can achieve depends on the target app. Often if we only share a .gif it'll be converted into a still image by the target app, which is no fun, but we can usually work around this by giving these apps a .mp4 instead, but then we often lose the looping property. In other cases, we can't include a link when we share media, but the app will generate rich link previews if we share a link. In these cases, we rely on the recording being uploaded to our servers so that we can include it when the app tries to render the rich link preview.

How long can a recording be?

The default limit is 50 frames, with the default playback framerate of 10fps that yields a 5-second recording. This is roughly the length we recommend you keep your recordings. Longer recordings are constrained by the file size of the resulting GIF, which quickly gets overwhelming, so we don't recommend going far beyond the 10s range.

I have a long game session but only want to share a subset of it, how can I do this?

The SDK supports three different techniques to compress long recordings into something short that can be shared. These techniques are called overflow strategies and is one of highlight, latest and timelapse. The default is the latest, which will always include the last seconds of the recording. The highlight strategy you can use together with the registerScoreChange methods to indicate when something of interest happens in the app, like the user scoring a point or goal, or crashes, or hits an opponent, etc. The final recording will then contain the segment between the start and stop with the highest sum of scores. The timelapse strategy will ensure the full duration of the recording is included but sped up to match the target length. Timelapses are well suited when it's interesting to see progress, i.e. when drawing or building a city and similar.

Can users decide themselves what to record?

You could implement start/stop recording buttons in the game that maps to the start and stop method calls in the SDK, but we recommend that you keep recording on at all times since the user rarely knows up front if a moment is going to be worth recording. With the highlight recording feature, you can easily annotate moments in your app as they occur, enabling us to extract only the best parts of a longer recording.

What happens if the user runs out of disk space while recording?

The recording will stop, and the subsequent preview and share will only include frames captured while there was disk space available. When the recording is stopped and started over the old frames will be deleted and the same thing will repeat itself until more disk space is available.

What is the resolution of the recording? Can I customize it?

To balance the quality and performance of the SDK and resulting file sizes we default to half the screen resolution. If the longest edge of the screen is larger than 1500px we halve it once more, thus most recordings will be in the 350x200-640x360 range.


What is deep linking?

Deep linking is when a link works equally well on all platforms and takes you straight to the content you're interested in. On the web this is the default, but often when implementing linking into apps, everything beyond the domain is often ignored. Deep links enable you to link directly to a particular section of your app, like a user's profile or an item in a shop or a specific location on a map. This enables users to share exactly what they're experiencing with others more easily.

Apple introduced Universal Links in iOS 9 -- a way to launch apps with traditional HTTP links if the app is installed on the device. A universal link is a merge of a deep link and web link to one link. With a Universal Link, you can route the user to the right place inside your app with the right context. I.e. https://myapp.com/battle?username=nbroby can open the battle-scene and match against the user nbroby. This will give a smooth user experience with context and most importantly the user doesn't get redirected to the web browser and then to the app like deep links do.

Say someone completes level 3 in your app on "hard" difficulty level and shares a recording of that. You can customize the link for the share to look like this:


If someone else clicked on this and already has the app installed the app will be opened and you will receive a link-clicked event with the URL /level3?difficulty=hard that you can use to navigate to the same level. You will also receive a received-share-opened event with the 1234567890 identifier you can use to identify the sending user. The sending user will receive a sent-share-opened event which lets them know that their link was clicked, and this event includes a isFirstSession property that enables you to detect whether the link click resulted in a new install or came from an existing user.

A Megacool link looks like this:


The links include a reference to the share (the 1234567890 part) so that we can fetch the associated recording. You can customize the /some/path part to add whatever info you need to identify the current location in the game, see share customization part of the docs for how to do this.

Megacool links are both Universal Links and deep linking capable.

How do I test that referrals works without publishing to the App Store/Play Store?

If you have two devices you can build your app for both of them and use our reset functionality to simulate a new user on both devices. Create a share from one device and send it to the other and try clicking the link. If the app is already installed this should open the app and you should receive an event in both apps; then sender should receive sentShareOpened

Are users who already have my app installed counted as new users by Megacool when I publish the first version with Megacool integrated?


Failure modes

A number of things can go wrong, but we try very hard not to crash your app if this happens, and rather run with degraded functionality. These are a couple of known failure modes:

Attribution failure

Attribution is hard because we can only track the users when they do exactly what we've optimized for them to do. If a referral results in the user searching up the game on the App Store and installing without ever having clicked our link there's no way we can track that and reward the user. And once the users have started the game, we will no longer attribute anyone for the install, even if they click the link after that. Younger and/or technical audiences might understand enough of how attribution works to understand that they need to follow the link given to be able to claim the reward, but you might find that communicating this explicitly reduces confusion among your users. The result of this is that if you're running a referral program, the sender might not get the expected reward even though someone installed the app because of the share. In practice, this usually means that the actual impact of integrating with Megacool is larger than what we can actually quantify through the SDK.

Communicating referrals to users

In relation to attribution, the receiving user needs to both download and open the app for an install to be registered. If the receiving user fails to open the app, the sending user will not receive a reward for referring the friend, even though the receiving user tells the sender that he/she has downloaded the game and believe to have done their part. Check out our best practice guide on how to best communicate this to the user.

The GIF is missing from the share

If the recording fails for some reason, the rest of the SDK will still work and users can still create shares and referrals. But if i.e. the app shared to needs rich link previews to show the recording and the recording hasn't completed uploading to our servers, we don't have a recording to show. Thus available bandwidth impacts how often sharing a recording will succeed.