Photo by Franck - Free-Hotspot.com on Unsplash

Keeping data on mobile devices secure is crucial if you’re working on a product that stores sensitive information about your user.

But did you know that by default, the local storage mechanism in React Native (AsyncStorage) is unencrypted?

On iOS, the main storage library for React Native is based on the Apple File System, using FileManager to read and store files on the device unencrypted.

On Android, AsyncStorage uses either the key-value store RocksDB or SQLite, based on which one is available. The data in there is unencrypted.

TL;DR — just show me the code!

The repository is available here…


Photo by Guillaume de Germain on Unsplash

I usually write about technical topics, but I want to use this opportunity to share the journey of a project I’ve been working on for the last year with my spouse and business partner Andreea Apetrei Kalveram.

The elevator pitch 🔼 🔽

In a nutshell, The Sustainable List is a curated list of sustainable fashion brands. Our goal is to help consumers navigate the ever-growing sustainable marketplace and give more visibility to brands that are socially and environmentally responsible.

Here’s the link to our website: https://thesustainablelist.com/

Cool, still interested about how this project came to be? Please read on 👇

By the way, you can…


Photo by Artem Maltsev on Unsplash

Three things that people often get wrong when developing apps for iOS and Android

One of the biggest troubles I often come across when building mobile apps in React Native isn’t necessarily technical: it’s that people design iOS apps for Android, or vice-versa.

Many companies choose React Native over native development because of its shallow learning curve. But what often falls by the sideway is that you’re still developing for two entirely different environments.

We should craft a user experience that follows each platform’s respective design guidelines.

For those unfamiliar with mobile, you should check out the Material Design guidelines for Android and the Human Interface Guidelines for iOS. …


Photo by Andras Kovacs on Unsplash

Lately, I’ve been working on integrating a GDPR opt-out feature into an app. This feature allows users to flip a switch to decide whether they want any privacy-related data to be tracked by our app or any of its third-party dependencies.

From a legal standpoint, that’s an interesting challenge, because if you could at any point use any of the tracked data to re-identify a person to which the data refers, it means that it has not been effectively anonymized, thus you’re not complying with the GDPR guidelines.

From a technical point of view, that means you have to completely…


Photo by Sam Mgrdichian on Unsplash

Upgrading is one of those tedious tasks that you’ll inevitably face at some point when working on a React Native project. If you’ve ever gone through this process, you’ve probably realised that it still has a lot of potential for improvement.

The most popular complaint about React Native, according to the recent “What do you dislike about React Native?” thread on GitHub is indeed: upgrading. It received 569 thumbs-up from the community, the second being Debugging with 350.

There’s been a very popular article on Upgrading React Native about 2 years ago, when it was at version 0.45. Since React…


Photo by Marcello Gennari on Unsplash

Recently I’ve helped a client migrate their e-commerce front-end from a native wrapper app to React Native.

Since a big part of the team didn’t have any previous experience with React, it was natural that we’d run into a lot of inconsistencies in the beginning. My job was to help iron these out and lay the groundwork for a more maintainable codebase.

One of the challenges was to understand and organise the building blocks of the UI layer. …


Photo by Andrew Neel on Unsplash

This is the last post in a 4-part series about building the iOS and Android app for uncovercity using React Native. You can find the other ones here:

  1. Speeding up the build of a surprise dinner app in React Native using Expo
  2. Battle testing a ridesharing API and React Native’s MapView in Expo
  3. Supporting multiple languages in React Native with Expo Localization
  4. The intricacies of nesting navigators in React Native using react-navigation

In one of my most recent projects, I built the native app for Spanish startup uncovercity using React Native.

One of the most interesting challenges I faced was…


“Hola LED signage” by Jon Tyson on Unsplash

This is the third post in a 4-part series about building the iOS and Android app for uncovercity using React Native. You can find the other ones here:

  1. Speeding up the build of a surprise dinner app in React Native using Expo
  2. Battle testing a ridesharing API and React Native’s MapView in Expo
  3. Supporting multiple languages in React Native with Expo Localization
  4. The intricacies of nesting navigators in React Native using react-navigation

Hi! Here’s another post about my experience of building the iOS and Android app for the surprise dinner startup uncovercity. …


“iPhone on vehicle phone holder” by Samuel Foster on Unsplash

This is the second post in a 4-part series about building the iOS and Android app for uncovercity using React Native. You can find the other ones here:

  1. Speeding up the build of a surprise dinner app in React Native using Expo
  2. Battle testing a ridesharing API and React Native’s MapView in Expo
  3. Supporting multiple languages in React Native with Expo Localization
  4. The intricacies of nesting navigators in React Native using react-navigation

Battle testing a ridesharing API and React Native’s MapView in Expo

Recently, I had the pleasure to experiment with maps and API integration in React Native while working on the iOS app for uncovercity.com.

The challenge can be summarised…


“wine glasses on top of brown table near window” by Todd Diemer on Unsplash

This is the first post in a 4-part series about building the iOS and Android app for uncovercity using React Native. You can find the other ones here:

  1. Speeding up the build of a surprise dinner app in React Native using Expo
  2. Battle testing a ridesharing API and React Native’s MapView in Expo
  3. Supporting multiple languages in React Native with Expo Localization
  4. The intricacies of nesting navigators in React Native using react-navigation

Speeding up the build of a surprise dinner app in React Native using Expo

React Native can be hard. But a lot of the heavy lifting can be done by its open source companion toolchain Expo.

Recently, I helped Spanish startup uncovercity

Marcel Kalveram

JavaScript, React and React Native. Building and optimising mobile experiences for web & native.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store