How I improved my React Native app 50x faster

This page summarizes the projects mentioned and recommended in the original post on dev.to

Our great sponsors
  • SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • js-spark-md5

    Lightning fast normal and incremental md5 for javascript

  • However, RN has still a lack of binary support. Unlike NodeJS, RN doesn't come with native modules for dealing with binary data out of the box, like crypto and Buffer. When it comes to processing binary data, calculating a digest hash like SHA-1 and MD5 and converting from/to hex and base64 are popular tasks. To accomplish those tasks, you have to use JavaScript libraries like spark-md5 and buffer. If you need crypto module, you have to install rn-nodeify and a bunch of polyfill libraries, which eventually messes up your project and makes it hard to maintain. So, implementing the end-to-end encryption in React Native has been a big challenge for me.

  • react-native

    A framework for building native applications using React

  • Unfortunately, the community is not interested in solving it.

  • SurveyJS

    Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.

    SurveyJS logo
  • react-native-sqlite-2

    SQLite3 Native Plugin for React Native for iOS, Android, Windows and macOS.

  • This issue forces me to escape \0 characters to store blob data in my module called react-native-sqlite-2 like this:

  • react-native-aes-gcm-crypto

    AES-GCM encryption/decryption for React Native

  • As you can see above, the JS app just invokes native functions. Decrypting data is performed in my native module called react-native-aes-gcm-crypto, written in Kotlin and Swift.

  • react-native-quick-md5

    Fast C++ implementation with JSI binding of MD5 for React Native

  • react-native-quick-md5 10x faster on iOS and 8x faster on Android

  • react-native-quick-base64

    A fast base64 module for React Native

  • react-native-quick-base64 4x faster on iOS

  • nodejs-mobile

    Full-fledged Node.js on Android and iOS

  • The React Native community is not focusing on providing solid APIs for binary data, unlike NodeJS. They are working on improving it as a front-end framework instead. And they would rely on extensions for other things like platform-dependent features. There is a project called nodejs-mobile which allows you to integrate NodeJS into your app. While it'd be fun for hobby projects, it's scary to rely on such a minor framework for my app focusing on its longevity. In fact, this library looks inactive these days.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • hermes

    A JavaScript engine optimized for running React Native.

  • Eh, performance? Yeah, React Native is basically performant. But, React Native takes care of the rendering only. Everything you know about React performance will apply in a React Native application. React Native is also trying to improve launch speed by building their own JavaScript engine called Hermes. So, the rendering is usually fine.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts