React Native Dropdown Picker

Breathing new life into a community staple

This year I dove headfirst into React Native. After years of web-focused development, mobile felt like uncharted territory worth exploring.

On the web, React Select is my go-to for dropdowns. It's flexible, accessible, and just works. Naturally, I went looking for something similar in the React Native ecosystem.

I found react-native-dropdown-picker. Despite some rough edges, it was the closest thing to React Select I could find. More importantly, it had traction: 80,000+ weekly downloads on npm, a healthy star count, and an active community of users.

But something was off. Twelve pull requests sat open, some over a year old. The last meaningful update was two years ago. The project wasn't dead, but it was definitely on life support.

Finding a starting point

While digging through the issues, I discovered another developer had already forked the project and addressed some of the outstanding problems. Rather than starting from scratch, I forked their fork and built from there.

The internal examples directory was in rough shape. A single dropdown example that barely worked and gave no real insight into the component's capabilities. Not exactly ideal for testing changes.

Changes

I rebuilt the examples directory from the ground up. Instead of a single dropdown, it now displays a comprehensive list of pickers from an array, each configured differently. Any change to the core library immediately shows its impact across every variation.

I configured the example app to point directly to the local project files. Now it serves as a real-time benchmark for the state of the codebase.

From there, I worked through the backlog. Merged the open PRs that made sense. Fixed linting errors. Resolved TypeScript build failures. Got the test suite passing again.

I submitted a PR with all my changes and noticed an open issue looking for maintainers. Perfect timing.

🎬 video coming soon

Next steps

I'm working on getting my changes deployed this week. The immediate goal is a stable release with all the fixes and improvements merged.

After that, I'm planning a larger overhaul of the UI rendering system. The current approach is too rigid. I want to give developers more control over how the picker looks and behaves without fighting the library's opinions.

This work is happening alongside my other side project, Dance Partner. Both are pushing my React Native skills in different directions, and I'm here for it.

You can read more about my process in this note, or check out the project on npm.