From Web to Mobile: My React Native Experience
Copy linkI'd been working with React for a while when my mentor came to me with a challenge, build something with React Native. I'll be honest, I had no idea what I was getting into. Mobile development was completely new to me. But the challenge was there, so I figured I'd give it a shot.
I decided to remake this workout app I'd been using. It had a list of workouts with videos showing how to do each exercise. Pretty simple concept, but it gave me a chance to actually learn some stuff. I used a native video library for the videos, and added camera and location features for progress photos and tracking workouts.
That was a few months ago. Now I'm working with React Native and it's been interesting.

Getting started with Expo
The React Native docs started with a decision, React Native CLI or Expo. I had zero context for what either of those meant. Expo looked simpler, so I went with that.
Turns out that was probably the smartest choice I made during the whole process. Expo just handles everything. No messing with Xcode, no Android Studio setup. I ran a command and my app was up. I could test it on my actual phone through the Expo Go app without doing anything complicated. Coming from web dev where I was used to everything just working out of the box, Expo felt right.
Styling wasn't as bad as I thought
I was worried about styling because I knew React Native doesn't use regular CSS. I'd been using Tailwind for styling on the web and I really didn't want to deal with writing out JavaScript style objects for every single thing.
Found NativeWind pretty early on and it saved me. It's basically Tailwind but for React Native. Same class names, same approach. So instead of learning a whole new way to style things, I could just keep doing what I already knew.
The only weird part was getting used to how Flexbox behaves differently in React Native. Default direction is column instead of row. Took me a bit to stop messing that up.
Everything is different but also the same
The React parts felt familiar. Components, props, state, hooks, all that stuff works exactly how I expected. Breaking UI into pieces, passing data around, managing state with useState, nothing new there. But then I actually started building and realized none of the HTML I knew exists anymore, no divs, no paragraphs, no buttons. Just View, Text, Image, Pressable.
The Text thing got me so many times. Every piece of text needs to be wrapped in a Text component. If I forgot and tried to put text directly in a View, the app crashed. I blamed Expo the first couple of times it crashed. I thought something was wrong with the setup, instead it was just me forgetting to wrap text in Text again.
Navigation was confusing
Web navigation is easy, links and routes. Mobile navigation is its own thing entirely.
At the start I was pretty lost with all the stack and tab stuff. How do screens connect? How do I pass data between them? The docs helped but it still took a bunch of trial and error before things made sense.
I can handle it now, build multi-screen apps without getting stuck. But it definitely wasn't intuitive at first.
Debugging took some time getting used to
On the web I'd just open the browser dev tools and see what was going on. React Native doesn't really work like that.
I wasted so much time with console.log. Just putting them everywhere trying to track down bugs. Eventually I forced myself to actually learn the proper debugging tools, it made my life way easier.
The native features were actually fun
Getting the video library working for the workout videos was interesting. I'd never dealt with native video playback before. Same with the camera and location stuff. Lots of googling, lots of errors I didn't understand at first. But when it all finally worked together it felt pretty good.
That's when it started feeling less like just learning a new framework and more like actually building something real.
Where I'm at now
I'm still learning stuff constantly. Things that used to take me forever now happen pretty quick. I'm more comfortable with navigation, with structuring apps, with when to use which component. Expo still makes everything way easier. NativeWind means I don't have to think about styling because it's just Tailwind. And the more I build, the less foreign it all feels.
There are still days where I hit some weird issue and have no idea what's happening, but it happens less now. And when it does happen, I usually know where to look instead of just panicking.
If you get a chance to try React Native, take it. A lot of your React knowledge transfers over. Use Expo, use NativeWind if you know Tailwind, and just build something.
That’s what I did, and it worked out.
Melisa Hani
Feb 06, 2026