# hooks
**Repository Path**: mirrors_react-native-community/hooks
## Basic Information
- **Project Name**: hooks
- **Description**: React Native APIs turned into React Hooks for use in functional React components
- **Primary Language**: Unknown
- **License**: ISC
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-08-18
- **Last Updated**: 2026-03-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README

## React Native Hooks
[![Version][version-badge]][package]
React Native APIs turned into React Hooks allowing you to access asynchronous APIs directly in your functional components.
> Note: You must use React Native >= 0.59.0
### Installation with npm
```sh
npm install @react-native-community/hooks
```
Installation with yarn
```sh
yarn add @react-native-community/hooks
```
## API
- [useAccessibilityInfo](https://github.com/react-native-community/hooks#useaccessibilityinfo)
- [useAppState](https://github.com/react-native-community/hooks#useappstate)
- [useBackHandler](https://github.com/react-native-community/hooks#usebackhandler)
- [useImageDimensions](https://github.com/react-native-community/hooks#useImageDimensions)
- [useKeyboard](https://github.com/react-native-community/hooks#usekeyboard)
- [useInteractionManager](https://github.com/react-native-community/hooks#useinteractionmanager)
- [useDeviceOrientation](https://github.com/react-native-community/hooks#usedeviceorientation)
- [useLayout](https://github.com/react-native-community/hooks#uselayout)
- [useRefresh](https://github.com/react-native-community/hooks#useRefresh)
### `useAccessibilityInfo`
```js
import {useAccessibilityInfo} from '@react-native-community/hooks'
const {
boldTextEnabled,
screenReaderEnabled,
reduceMotionEnabled, // requires RN60 or newer
grayscaleEnabled, // requires RN60 or newer
invertColorsEnabled, // requires RN60 or newer
reduceTransparencyEnabled, // requires RN60 or newer
} = useAccessibilityInfo()
```
### `useAppState`
AppState will change between one of 'active', 'background', or (iOS) 'inactive' when the app is closed or put into the background.
```js
import {useAppState} from '@react-native-community/hooks'
const currentAppState = useAppState()
```
### `useBackHandler`
```js
import {useBackHandler} from '@react-native-community/hooks'
useBackHandler(() => {
if (shouldBeHandledHere) {
// handle it
return true
}
// let the default thing happen
return false
},[shouldBeHandledHere])
```
### `useImageDimensions`
```js
import {useImageDimensions} from '@react-native-community/hooks'
const source = require('./assets/yourImage.png')
// or
const source = {uri: 'https://your.image.URI'}
const {dimensions, loading, error} = useImageDimensions(source)
if (loading || error || !dimensions) {
return null
}
const {width, height, aspectRatio} = dimensions
```
### `useKeyboard`
```js
import {useKeyboard} from '@react-native-community/hooks'
const keyboard = useKeyboard()
console.log('keyboard isKeyboardShow: ', keyboard.keyboardShown)
console.log('keyboard keyboardHeight: ', keyboard.keyboardHeight)
```
### `useInteractionManager`
```js
import {useInteractionManager} from '@react-native-community/hooks'
const interactionReady = useInteractionManager()
console.log('interaction ready: ', interactionReady)
```
### `useDeviceOrientation`
```js
import {useDeviceOrientation} from '@react-native-community/hooks'
const orientation = useDeviceOrientation()
console.log('orientation is:', orientation)
```
### `useLayout`
```js
import { useLayout } from '@react-native-community/hooks'
const { onLayout, ...layout } = useLayout()
console.log('layout: ', layout)