Skip to content
React Native `Settings` module for both Android & iOS.
Branch: master
Clone or download
Latest commit 63d49f5 May 20, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
android v2.1.0 May 20, 2019
.eslintrc.js First commit Mar 6, 2018
.gitignore v1.0.0 Jul 23, 2018
.markdownlint.json v2.1.0 May 20, 2019
.npmignore v1.0.0 Jul 23, 2018 v2.1.0 May 20, 2019
LICENSE First commit Mar 6, 2018 v2.1.0 May 20, 2019
index.d.ts v2.0.0 Oct 9, 2018
index.js First commit Mar 6, 2018
index.js.flow v2.0.0 Oct 9, 2018
settings-android.js v2.1.0 May 20, 2019


npm Version License

React Native Settings module for both Android & iOS.

If this library has helped you, don't forget to give it a star 🌟


v2.1.0 works with Gradle 4.10.x, the default in React Native 0.58. If you are using Gradle 3.x please use react-native-cross-settings 1.0.2


yarn add react-native-cross-settings
react-native link react-native-cross-settings


import Settings from 'react-native-cross-settings';

// Set a listener. It will be called for *each* value that has changed.
const watchId = Settings.watchKeys('strvar', () => {
  console.log('strvar changed.');

// If you never saved a value in "strvar", this is undefined.
console.log('restored setting:', Settings.get('strvar'));
// => undefined

// Store a value (only string, number, or boolean)
Settings.set({ strvar: 'First setting' });
console.log('new setting:', Settings.get('strvar'));
// => "First setting"

// You cann't remove a value, but you can set it to null.
// Next time your App start, the value will be undefined.
Settings.set({ strvar: null });
console.log('new setting:', Settings.get('strvar'));
// => null

// Store a new value, this will be preserved across sessions.
Settings.set({ strvar: 'final value' });

// => Don't forget to remove the listener


See React Native Settings page, the API is the same.


  • get()

    static get(key: string) => number | string | value | null
  • set()

    static set(settings: { [key: string]: number | string | boolean | null } ) => void
  • watchKeys()

    static watchKeys(keys: string | string[], callback: () => any) => number
  • clearWatch()

    static clearWatch(watchId: number) => void


In Android, valid value types to store are boolean, string, and number.

If you pass null as value, the key will be removed in the next session.

If you want to save other types use the appropriate conversion:

// Storing a Date object:
Settings.set({ myDate: new Date().toJSON() })
// Retrieve
const myDate = new Date(Settings.get('myDate'))

// Storing an array
Settings.set({ myArray: JSON.stringify([1,2,3]) })
// Retrieve
const myArray = JSON.parse(Settings.get('myArray') || '[]')

Support my Work

I'm a full-stack developer with more than 20 year of experience and I try to share most of my work for free and help others, but this takes a significant amount of time and effort so, if you like my work, please consider...

Of course, feedback, PRs, and stars are also welcome 🙃

Thanks for your support!


The MIT License (MIT)

You can’t perform that action at this time.