Comprehensive Guide to Kotlin Multiplatform Mobile Libraries

Kotlin Multiplatform technology provides a way to use common logic across different platforms while maintaining the benefits of native programming. This guide introduces various libraries and tools available for Kotlin Multiplatform development, covering categories like tooling, networking, storage, UI components, and more.

Tooling Libraries and Plugins

Kotlin Multiplatform Mobile (KMM) Plugin

The KMM plugin aids developers in creating cross-platform applications that work on Android and iOS.

CocoaPods with Kotlin/Native

Kotlin/Native's integration with CocoaPods enables developers to add Pod library dependencies and use multiplatform projects as CocoaPods dependencies.

Swift Package for Kotlin

The Swift Package plugin helps developers in interoperability between Kotlin and Swift Package Multiplatform projects.

Carthage Integration

Carthage support allows for the integration of Carthage dependencies into KMM projects.

Libres

This tool generates string and image resources in Kotlin Multiplatform projects.

Storage Libraries

Multiplatform-Settings

It provides a way for key-value data persistence in Multiplatform apps.

SQLDelight

Generates typesafe Kotlin APIs from SQL statements, supporting schema and statement verification.

Realm

A mobile database that can be used directly on mobile devices.

Store 5

An abstraction for managing data requests and in-memory and on-disk caching.

Device Interaction Libraries

MOKO Permissions

This library offers runtime permissions on both iOS & Android platforms.

MOKO Geo

Allows for geolocation access in mobile Kotlin Multiplatform development.

Kable

A Kotlin library for Bluetooth Low Energy device interactions using coroutines.

Dependency Injection Libraries

Koin

A lightweight dependency injection framework for Kotlin, supporting a DSL.

Kodein

A simple dependency retrieval container for Kotlin Multiplatform development.

Logging Libraries

Napier

Provides multiplatform logging capabilities, with support for various platforms.

Kermit

A logging utility with adjustable log outputs and platform-specific implementations.

Networking Libraries

Ktor Client

Includes an asynchronous multiplatform HTTP client supporting various plugins.

Apollo GraphQL

A strongly-typed client for GraphQL, supporting the JVM, Android, and Kotlin multiplatform.

Architecture Libraries

MVI Kotlin

An MVI framework that supports shared code and includes debugging tools.

Mobius.kt

An implementation of Mobius, a functional reactive framework for managing state evolution and side effects.

Decompose

Aids in breaking down code into lifecycle-aware components with routing functionality.

Analytics Libraries

MOKO Crash Reporting

Enables crash reporting to Firebase Crashlytics for Kotlin Multiplatform Mobile.

UI Libraries

Compose Multiplatform

Libraries that provide UI components and enable shared UI code for different platforms, including Android and iOS.

Serialization Libraries

kotlinx.serialization

A Kotlin library that handles serialization, providing a runtime library and support for various formats.

Asynchronous Programming

Kotlinx Coroutines

An official Kotlin library that offers coroutine support for asynchronous programming.

Reaktive

Provides Kotlin multiplatform implementation of Reactive Extensions with coroutines support.

Generating Unique Identifiers

UUID

A Kotlin Multiplatform generator for creating UUIDs that works across various platforms.

Utility Libraries

Uri KMP

A multiplatform library enabling URI handling across different platforms.

Resources Management

MOKO Resources

Provides access to iOS and Android resources and supports system localization.

Final Remarks

The Kotlin Multiplatform ecosystem is rich with libraries that cater to various aspects of development. From foundation tools to specific domain libraries, developers can benefit from a wide range of functionalities, making cross-platform development more efficient and maintaining the advantages of native programming.


Tags: #KotlinMultiplatform, #MobileDevelopment, #CrossPlatformLibraries, #KMM

https://github.com/terrakok/kmp-awesome

React Native UI Kitten: A Comprehensive UI Solution

UI Kitten is a feature-rich React Native UI library designed for creating impressive cross-platform mobile applications. It leverages the Eva Design System to promote design consistency and scalability. The library provides a collection of general-purpose UI components which are styled uniformly. One of the key features is its dynamic theming capability, allowing for theme changes at runtime without the necessity to reload the application.

Key Features and Components

UI Kitten offers over 25 general-purpose components, including:

  • Theming System: Allows customization and real-time changes.
  • SVG Eva Icons support: Provides integration with Eva Icons.
  • Eva Design System Support: Ensures design coherence and scalability.
  • Comprehensive documentation: Guides users through the library's features.
  • Starter App: A Kitten Tricks react-native starter kit with over 40 screens in dark and light themes.

Getting Started

Start from Scratch

To start using UI Kitten in a new app, you can initialize your app with the UI Kitten template:

For JavaScript:

npx react-native init MyApp --template @ui-kitten/template-js

For TypeScript:

npx react-native init MyApp --template @ui-kitten/template-ts

Documentation and Support

Extensive documentation is available to help developers understand and implement UI Kitten's components and features. Additionally, UI Bakery, a platform designed to aid in building applications, further supports the use of UI Kitten.

Community Engagement

Developers can support the UI Kitten project through several avenues:

  • Star the GitHub repository.
  • Contribute to the project by creating pull requests, reporting bugs, and suggesting new features or documentation improvements.
  • Engage with the developers and community through social platforms such as Medium, Twitter, and Facebook.

Licensing

UI Kitten is 100% free and open-source, distributed under the MIT license.

More from Akveo

Beyond UI Kitten, Akveo provides Eva Icons and actively engages with the developer community through social media channels such as Twitter.

Conclusion

UI Kitten is an open-source library that simplifies the development of visually cohesive mobile applications. With its emphasis on a theming system, icon support, and comprehensive documentation, it empowers developers to build applications with a consistent design quickly. Its dynamic theming feature enhances the user experience by enabling theme changes without reloading the app. The active community and easy-to-follow documentation make UI Kitten an accessible and valuable tool for React Native developers.


Tags

  • #UIKitten
  • #ReactNative
  • #EvaDesignSystem
  • #MobileDevelopment

https://github.com/akveo/react-native-ui-kitten

Carbon for React Native: A Guide to the Carbon Design System

Carbon Design System is an open-source design system created by IBM for digital products and experiences. It provides a collection of reusable components, guided by clear standards, that can be assembled together to build applications.

What is Carbon for React Native?

Carbon for React Native is an extension of the Carbon Design System tailored specifically for mobile application development using React Native. It enables developers to use Carbon's design philosophy and components within their mobile apps, ensuring consistency and efficiency in design.

Key Features of Carbon for React Native

Carbon for React Native offers several key features for developers who want to implement the Carbon Design System in their React Native applications:

  • Pre-built Components: A set of ready-to-use components that can be easily integrated into React Native applications.
  • Customizable Themes: Support for light and dark themes, with the ability to customize colors to fit your brand.
  • Icon Library: A comprehensive set of icons provided by '@carbon/icons', suitable for mobile interfaces.

Getting Started with Carbon for React Native

To start using Carbon for React Native, you should first install the package using a package manager like npm or Yarn:

npm install -S @carbon/react-native
# or
yarn add @carbon/react-native

For iOS applications, you need to run pod install inside the ios directory of your React Native project.

Additionally, you'll need to ensure the following dependencies are installed and up to date:

  • @carbon/themes
  • @carbon/icons
  • @carbon/icon-helpers
  • react-native-svg
  • react-native-webview

Recommended Settings and Configuration

Carbon for React Native recommends certain configuration settings, such as adding the font assets to the react-native.config.js file and setting android:windowSoftInputMode="adjustPan" in your Android app to improve user experience.

Usage: React Native Components and Theming

The Carbon for React Native package makes using components straightforward. For instance, to use a Button component, you would import and implement it as follows:

import { Button } from '@carbon/react-native';

<Button kind="primary" text="My Button" onPress={() => {}} />;

The system also includes functions to work with themes and colors:

import { getColor } from '@carbon/react-native';

const styles = StyleSheet.create({
  example: {
    padding: 16,
    color: getColor('textPrimary'),
    backgroundColor: getColor('background'),
  },
});

Overriding Themes and Contributing

Carbon for React Native allows developers to override the default themes to customize color schemes and fonts according to their branding needs. Developers can also contribute to the system by following the Carbon Design System's contributing guide.

Licensing and Community

Carbon for React Native is released under the Apache-2.0 license, ensuring that it can be freely and reliably used in commercial projects. Furthermore, developers are welcome to the community and are encouraged to contribute. There is a continuous integration (CI) workflow in place to ensure that all contributions meet the required standards. Additionally, developers can chat and collaborate on Discord.

In summary, Carbon for React Native is a powerful tool for implementing the Carbon Design System in mobile applications, providing a wide range of components, customization options, and community support to create cohesive and user-friendly designs.


Tags: #CarbonDesignSystem, #ReactNative, #OpenSource, #UIComponents, #MobileDevelopment

https://github.com/carbon-design-system/carbon-react-native