지난 봄에, 설정값 하나 고치려고 SharedPreferences 파일을 열었는데요. 키가 30개 넘게 쌓여 있고, 어느 게 진짜 쓰는 값인지 아무도 확신을 못 하는 상태였습니다. 그날 DataStore 마이그레이션을 시작했어요. 한 줄 요약: SharedPreferencesMigration으로 기존 값 살리고, runBlocking 지뢰와 원본 삭제 롤백 리스크까지 실측으로 정리한 기록입니다. 옮기고 나서 제일 크게 배운 건, "옮기면 자동으로 빨라진다"는 게 오해였다는 점이에요. 왜 옮기는지, 실제 코드는 어떻게 짜는지, 어디서 발을 헛디뎠는지 순서대로 풀어볼게요. apply()가 즉시 저장이 아니어서 ANR로 이어지던 지점일단 왜 불안했는지부터요. SharedPreferences의 getStrin..