Wrapping up development on my simple, lightweight, TBR book app with react native! Check out the code here! I wrote it with React Native, meaning it runs on iOS, Android, and web all from the same codebase!
The app is a simple search bar that ties into the Open Library search API, and lets you add the search results to your TBR list. The TBR uses asynchronous offline storage that will persist even if you close the app. Check out some screenshots of the search and reading list features!
Challenges
Challenges for this project included:
- React state and rendering. Unfortunately, switching between application tabs at the bottom of the screen did not trigger state updates at first. Because navigation is file-based, I could not simply pass props or update state on tab navigation to redraw the screens. This resulted in books added to the TBR not actually being visible.
- Code style and components. The similarity between the search results list and the reading list doesn’t stop at the visuals! They are able to share most code. This helped especially with the pagination feature. I didn’t have to rewrite breaking the lists out into pages twice.
- Persistent storage. The TBR has to persist between uses of the application. Using the AsyncStorage package, I was able to manage storage for iPhone, Android, and web-based users all with one function! That’s the beauty of React Native.

Reflections
React Native is always fun to make a quick project with because you can test it on your own iPhone or Android device. And seeing that code running on a real device brings the dev to life.
Actually, my first programming experiences were with the RCX and NXT Lego robots. I spent hours building and programming them and browsing forums like Eurobricks or the now-defunct NXTLog to see what others were doing with their robotic Lego sets.
The analogy to what I do now as a developer is browsing GitHub for open source projects and architecture patterns. Researching new programming tools is like getting a new set of Lego pieces that let me increase my robot’s power or torque to solve a new problem. I love taking something that’s just an idea and turning it into something that works, whether that’s building a robot or writing an application that runs on my phone.