React Native에서 AsyncStorage 마이그레이션 삽질기
문제 상황
프로젝트를 React Native 0.63으로 업그레이드하면서 AsyncStorage 관련 경고가 발생했다. 공식 문서를 확인하니 core에서 제거되어 community 패키지로 이전된 상태였다.
// 기존 코드
import { AsyncStorage } from 'react-native';
마이그레이션 과정
먼저 community 패키지를 설치했다.
npm install @react-native-async-storage/async-storage
cd ios && pod install
import 구문을 일괄 변경했다.
import AsyncStorage from '@react-native-async-storage/async-storage';
API는 동일해서 별도 코드 수정은 필요 없었다. 하지만 iOS 빌드에서 문제가 발생했다.
발생한 이슈
Xcode에서 RNCAsyncStorage.h not found 에러가 나타났다. pod install을 다시 실행해도 해결되지 않았다.
해결 방법은 Pods 폴더를 완전히 삭제하고 재설치하는 것이었다.
cd ios
rm -rf Pods Podfile.lock
pod install
Android는 별다른 문제 없이 빌드됐다.
추가 작업
기존에 작성했던 AsyncStorage wrapper 유틸도 함께 수정했다. 에러 핸들링 로직은 그대로 유지했고, import만 변경하면 됐다.
// utils/storage.js
import AsyncStorage from '@react-native-async-storage/async-storage';
export const setItem = async (key, value) => {
try {
await AsyncStorage.setItem(key, JSON.stringify(value));
} catch (error) {
console.error('Storage setItem error:', error);
}
};
정리
API 호환성이 유지되어 비교적 순조로운 마이그레이션이었다. 다만 iOS native 의존성 문제로 clean install이 필요했던 점은 기억해둘 필요가 있다. deprecated 경고가 뜨면 미루지 말고 바로 처리하는 게 낫다는 걸 다시 한번 느꼈다.