Skip to main content

Libraries (Which and why)

Expo : It seems like upgrading and shipping the app with expo is quite easy. Expo SDK is also very mature and could help. We are no longer restricted to expo go, which restricts the usage of native api's, now we can create our own custom development client app.

Tailwind (nativewind): It's for the use of tailwind css for styling our UI components. Tailwind CSS provide predefined classes to be used with our components in an easy and readable format.

React-navigation : react navigation provide stack navigation history and handles gestures automatically. It provides a stack navigator and a screen component using which we tie our screens together.

React navigation also provides drawer as well as tab navigators.

React-hook-forms: Provides for components to write forms and help manage state quite easily. Also provides integration with zod, for form validation.

zod: zod is a validation library which allows for declarative syntax for the same.

Flashlist: Although react native provides faltlist, it is not well optimized for mobile devices and is known to reduce performance and consume a lot of power.

Flashlist are more memory efficient, has higher performance hence lower loading times, consumes much less power, provide  the creation of complex layouts, has consistent performance across android and IOS.

React-query : React quesary helps in fetching and putting data on the server. It helps in the following ways:

Caching - It caches the data it has fetched once and only changes the UI when the data is actually changed. 

retrying- When fetching failed it automatically retries.

 and deduplicating - if the same request is made more than once, instead of making new request it uses the cache directly.

useQuerry - the hook it gives to fetch the data as and when needed.

useMutation - the hook it gives to put data on server.

infinite query hook - Helps in writing infinite scrolling content.

optimistic updates - If data is written to the server it allows to be reflected in ui directly without fetching from the server again quite easily 

integrated dev tools - helps in debugging the data fetched from the server. 

Axios: HTTP client that works with react query but not needed since we are going to use supabase client instead.

Zustand : Much cleaner than the default state management and global state management becomes much easier since it doesn't need Context hooks. In the template project its used for authentication.

React native mmkv : Faster and more efficient than AsyncStorage developed by wechat.