Mobile SDKs have become an integral part of mobile app development with apps integrating 18.2 SDKs on average. And with the steady growth seen by the mobile app development market, the mobile SDK market is set to follow suit, presenting a great opportunity for SDK developers. Let's talk about SDK development best practices.
With the huge number of mobile SDKs available in the market today, your SDK has to deliver a great experience to your users in order to stand out from the crowd. In this post, we'll examine some best practices for mobile SDK development to help you deliver a world-class SDK.
Make SDK integration dead simple
Developers use SDKs to save themselves time and effort. If the process of integrating your SDK into their app is complicated and time-consuming, they might very well not even give it a chance.
Use a dependency manager like CocoaPods or a repository manager like JFrog Artifactory to simplify the process for your users. Ideally, you want your users to be able to integrate your SDK in less than 10 minutes.
Provide great documentation
You have to provide your users with clear, well-organized documentation to allow them to successfully use your SDK’s features and see its value. The more value developers are able to extract from your app, the more likely they are to stay and possibly bring some friends.
Your documentation should cover all your methods and APIs and provide “getting started” guides and lots of sample code. This way your users can just copy and paste this code and with a few edits, they will be up and running.
Fit right into your users’ workflow
You must have a solid understanding of what your users’ workflow looks like, what are the most common tools they use, and how your SDK fits with them. Integrating with the most commonly used tools by developers in your sphere makes it easier for them to adopt your SDK.
At Instabug for instance, we integrate with issue trackers, help desks, communication tools, and other tools like Zapier. This allows our users to adopt Instabug with minimal changes to their workflow.
Consume as little resources as possible
As mentioned before, apps have an average of 18.2 SDKs integrated. So even though these SDKs might not be using a lot of resources individually, the sheer number of them translates into a sizeable increase in resource consumption.
You must treat every resource, from processing power to memory to network to battery, as a precious limited resource and use only as much of it as you need. Remember that your SDK is a guest in your user’s app — strive to be a great guest.
Be clear about the permissions you need
You should always clearly and transparently communicate the permissions your SDK will need to function and why your SDK needs each permission. Never ask for permissions that your SDK does not need to function.
Ideally, your SDK will not need any permissions that the app doesn’t already have, but in case your SDK needs specific permissions, your users will at least be able to explain it to their end-users and give them a heads up.
Use third-party libraries only when absolutely necessary
Using third-party libraries in your SDK has a number of consequences that you will want to avoid. They can significantly increase the size of your SDK and be a source of hidden bugs down the line. They can also be a hassle to keep updated and will make it more difficult to adopt new OS features than it would be with your own code.
If you must use an external library, you need to take precautions like renaming its classes to avoid conflict if it is also used by the host app or another SDK. You must also be prepared for any bugs that the library might cause and have a plan to deal with them.
Keep your SDK’s size small
The size of an app is often an important deciding factor end-users consider when they want to install a new app. The last thing you want is for your users to lose installs because your SDK was too big. Again, you have to keep in mind that your SDK is probably one of 17 others integrated into the app and that adds up.
Make sure any resource you include in your SDK is in a compressed and optimized format. And as mentioned earlier, keep your dependencies to a minimum.
Don’t conflict with your users’ app
Your SDK should under no circumstance change the behavior of the host app. This is one of the quickest ways to get your SDK eliminated from your users’ stack.
You'll want to make sure you use a prefix for all resource names in your SDK to make sure they are unique and will not cause any issues for the app.
Maintain compatibility with all relevant OS versions
Maintaining a wide range of compatibility with OS versions will ensure your SDK can be used by a bigger number of developers. Make sure you promptly support the latest OS version and architecture. You should also set a reasonable minimum OS version to support and avoid dropping support for it until you are completely sure that it will not have a significant impact on your users.
Raise your quality bar
App developers have bugs and crashes of their own to keep up with without having to worry about the ones caused by your SDK. You must test your SDK exhaustively and don’t release it until you are confident that it will not disrupt your users’ apps. Consider adopting a zero-bug policy.
Naturally, some bugs will always make it through the gates, but you have to keep them to a minimum in both quantity and severity. Coupled with good support and speedy fixes, this will ensure you don’t negatively impact your users.
Maintain security and privacy
The security of your users’ app and the privacy of their end-users must be taken very seriously. This is doubly important if your SDK handles sensitive data like PII or credit card information.
Use SSL on all your network calls and use certificate pinning to prevent man-in-the-middle attacks. Avoid storing any information locally and use encryption to protect the data in case you do.
SDKs are to mobile developers what apps are to the average person; They're not exactly necessary, but they sure make life a whole lot easier. And just like with apps, the competition in the SDK market is high and only keeps growing. With that in my mind, you have to make sure that your SDK offers an exceptional user experience to stand out from the competition, and following these SDK development best practices will put you on the right track.
- Our Android Team's Guidelines for Developing an SDK
- How to Create and Distribute an Android Library
- Essential iOS Resources for All Levels
Instabug empowers mobile teams to maintain industry-leading apps with mobile-focused, user-centric stability and performance monitoring.