i think it's just vaguely following material guidelines + more of the same tricks like appropriately coloring the statusbar
then again there's just less cool stuff android does so any sufficiently responsive app feels native enough
like i can generally "feel" the difference between something written with views or compose compared to react native or something worse, they're just not quite as snappy and smooth
Thank you for writing this. Curious if you were starting from scratch, are there other libraries you would pick/avoid not mentioned here? Thinking about tinkering with RN in my free time more (it's been a while since I last did)
good question! Zeego by @rojo.bsky.social is great for cross-platform native context menus (although unfortunately very ugly on Android, but that’s Android’s fault not RN lol). And if you’re just doing iOS, swiftui-react-native by @alevy.bsky.social basically lets you just build a SwiftUI app
I’d basically avoid things that just are JS-only components - usually they’re pretty janky and not much better than something you can put together yourself. Gradually there’s more and more native options in the ecosystem which is great to see
zeego.dev for menus, moti.fyi for animations, burnt for toasts
I’m biased since these are mine, but the reception towards them all has been great. Steer clear of native elements that get rebuilt with JS.
PS I’m writing a blog post on the mistakes I made coming to native from a web background
Hadn’t considered all of the menus and gestures iOS provides these days. Even MacOS lacks them. May be a good reason to drop down to swift for certain UIs!
Question about the hairline borders, if you don't mind - we're discussing adding this to CSS, with the current proposal at <https://github.com/w3c/csswg-drafts/issues/3720#issuecomment-2368916115>.
I'm trying to avoid that "unexpected tiny gap" issue you mention. [...]
So the proposal is that hairlines are 1px wide as geometry, but paint thinner. How bad an issue were the gaps y'all run into? Does this proposal sound like it would have been fine for y'all, if it was how React's hairlines worked?
Just curious about some real-world experience.
oh cool, would love to see that on web! yeah, so basically it was the tab bar - we were absolutely positioning the blue bit to sit above the line, but when the line went to 0.333px there was a noticeable 0.666px gap between them. I’ll try and dig up a screenshot when I get home
found the PR! you can see in the screenshot it’s a little jarring when it’s over an image.
reading the code, we were actually absolutely positioning the line, not the blue bit. the fix was to change `bottom: -1px` to `top: 100%`
github.com/bluesky-soci...
hey can I ask, why aren't you using animations that are more similar to system animations on android? f.e the animation when you tap a post from the TL is very "meh" to say the least. 😅 also there's just some small details that simply feel off like the black screen when you're leaving the composer
yeah I mentioned that in the blog post - using the native modal turned out to have a bunch of bugs :( Android unfortunately doesn’t make it quite so easy to feel smooth, compared to iOS
i gotta be honest, I absolutely love the UI of threads, like you can say what you want about meta but that's a well made app 😅 I know it's not 100% RN, actually if I remember right the majority of it actually is jetpack compose but like I couldn't tell you which parts are which
Great post, but aren't squishy nav tab icons a bit like the opposite of native? Tbh I find they feel kinda out of place since hardly any popular apps have tabs that visually behave like that, and it kinda goes in a different direction than the other (great!) tweaks mentioned?
I think I found a bug while reading your article:
• clicking on the embedded post wouldn't start the media, but open the post in the background
• going back from the opened post wouldn't get you to the original post in the timeline but to the very top
I have absolutely zero experience coding and this piece had me captivated from start to finish, well done 👏🏼
I’m grateful for y’all’s work on making the app feel more polished, it hasn’t gone unnoticed!
This is a super informative post - thanks for putting so much detail into this, Samuel!
My team is building a React Native app, and there is so much good stuff in here!
Great write-up. "Feels native" is a subjective expression in my opinion. iOS 14 modal is one where it just requires the extra config with RN and if not done can be easily called out. Beyond this, "feels native" in my opinion is also associated with how polished an app is compared to the top apps.
Thank you, it definitely feels more native now! You touch on it with squishy buttons and animated navigation, but I'm hoping for a day when posts visually react to being pressed on android! Each post is a "button" to navigate to a new page and it would be so nice if it reacted to being pressed 😍
Thank you for writing this post!
As a non-developer, who uses the iPhone app* on my iPad, I appreciated the section discussing barriers to an iPad implementation,
Thank y’all as always for being thoughtful when designing the apps ❤️
(*Deleted previous post due to typo)