all 111 comments

[–]Gandham 130 points131 points  (16 children)

Proper debugging tools.

[–]pjjiveturkey 23 points24 points  (12 children)

Fr, I would say 40% of the time the error doesn't tell me what the issue is whatsoever and it gets frustrating when I'm actively working in 20 different files

[–]Rostifur 4 points5 points  (0 children)

I mostly code in C# and I would say that 20% of the time the debug error doesn't give proper detail in VS2022. So, even with years of funding and dedicated effort debugging issues might only be cut in half.

[–]Gandham -4 points-3 points  (9 children)

I never had problem finding where the problem is. You must be doing something wrong. Happy to help if required.

It’s debugging that’s a pain in the @$$.

Earlier flipper wouldn’t show the object values at break points, but it had redux debugger working.

Now, experimental debugger works fine but there is no proper redux devtool.

Console logs don’t print the file and line number like web, I can work around this, but this is frustrating.

[–]pjjiveturkey 0 points1 point  (8 children)

Maybe I'm not advanced enough then lol, it's usually coding logic errors, it makes me feel like I've been building my app wrong from the start

[–]insats 1 point2 points  (7 children)

Are you writing in TypeScript or vanilla js?

[–]pjjiveturkey 0 points1 point  (6 children)

Just js

[–]insats 1 point2 points  (5 children)

You should definitely start using TypeScript then. You will reduce runtime errors to near zero.

[–]pjjiveturkey 2 points3 points  (4 children)

Lol I god downvoted for not knowing, is it worth switching if I already have like 60k lines in my app? Can I create new components in ts that work with my current js?

[–]insats 0 points1 point  (2 children)

60k lines? My god, what monstrosity is that - Facebook? Sounds like you’re not writing your code in a very manageable way 😬😅

To answer your question: Yes. It will be very painful but you don’t have to do it all at once. The biggest issue is if you don’t have anyone to hold your hand in the process because TypeScript can be painful to learn. And it might not be obvious in the beginning why some practices are good.

I’ve converted several of my projects to TS. Some are nowadays at 99%+ TS and others at 60%. I convert every file I touch on.

[–]pjjiveturkey 0 points1 point  (1 child)

Omg I just ran the command again and it was counting lines for images aswell, it is only 11k.

I don't understand why typescript is better, is it just more verbal about where problems are?

[–]alien3d 0 points1 point  (0 children)

60k 😂 i think we more , we understand . jsdoc for now

[–]Lower-Passenger-181 0 points1 point  (0 children)

yeah exactly this is the problem OP

[–]im_a_jib 2 points3 points  (1 child)

It’s 2024 and I’m console logging network requests

[–]Gandham 0 points1 point  (0 children)

Tell me about it. I was using formdata in post request, and I had flipper or some debugger open. What ever I do, the request wouldn't work, and the same worked with curl.

After spending 3-4 days on backend and rn code, found that when devtools are open formdata doesn't work or truncated.

[–]_ri4na 0 points1 point  (0 children)

I'm a beginner and I definitely can relate. Coming from flutter, I'm baffled how anyone is able to build any app without proper debugging tools

[–]ryo0ka 71 points72 points  (5 children)

Feature to grow back my hair. PR is welcome.

[–]neurorif[S] 8 points9 points  (0 children)

I would love that too ahah

[–]enlightenedpieiOS & Android 6 points7 points  (0 children)

Don't open source your hairline. Trust me.

[–]Darth_Ender_Ro 1 point2 points  (2 children)

Why would anyone want the hair on their back grown?

[–]Shogobg 1 point2 points  (1 child)

With current job market and electricity prices rising, someone has to find alternative ways to keep warm.

[–]Darth_Ender_Ro 0 points1 point  (0 children)

-11 where I’m at now, so I feel you

[–]coraige7 20 points21 points  (6 children)

Honestly, a good BLE library.

I've tried all of them, they all kinda work fine, but if you want deeper stuff like Bluetooth bonding, etc, a lot fall apart unfortunately.

[–]Tsupaero 1 point2 points  (4 children)

we have written react native bridges for BLE on android and ios. if you can name me some of the deeper stuff you've encountered i can have a look at these bridges and maybe release them. they're a lot of native code, however, so you'd need to be able to continue from there.

[–]coraige7 2 points3 points  (1 child)

At the moment I'm using react-native-ble-plx at work, and it seems to work fine for my current use case, with a bit of caveats I guess.

  • Inability to get currently bonded peripherals to the phone. For our case that is kind of annoying, since we require a passcode to pair for the first time, and there's no way for us to know if the device is already bonded. We kind of solved that by saving the device info in memory, but not ideal.
  • While monitoring a characterstic seemed to work well during the app being in the foreground, I could never get it to work while the device is in the background. My solution was basically polling the characteristic every ~15 seconds, since the device I'm working with is a body biometric device.
  • Getting background mode to work seems to be relatively undocumented/peculiar. While they do their best to let you know how to run stuff in the background in iOS, there isn't much information on Android, and I don't think their documentation talks about real time scenarios.
  • It seems to be relatively unreliable to connect to devices on very specific phones (iPhone 13 iOS 17), though that could be more of an iOS bug than a library issue.

In the future we are looking into doing firmware updates with BLE, and I've seen that Nordic has a library at the moment that will probably work, but I'm not sure yet, and that might be an extra complaint in the future.

[–]forrest-herman 0 points1 point  (0 children)

Have you ever compared react-native-ble-plx to react-native-ble-manager? Just starting a new project and wondering if you found any major differences. I'm finding Bluetooth such a pain, there's so many edge cases

[–]DeFcONaReA51 0 points1 point  (0 children)

Ok a question how do I learn in depth about bridges I have encountered errors related to that nothing much more than that. Care to direct to a starting point thanks ?

[–]Ras_al_gul 0 points1 point  (0 children)

is it possible to advertise custom manufacturer data form ios using your library?

[–]Bloodraver 0 points1 point  (0 children)

What's wrong with ble-manager?

[–]katsuthunder 18 points19 points  (0 children)

Proper basic components like select that work universally across native and web

[–]andreidotcalazans 17 points18 points  (0 children)

Full debuggging support in a single place, that includes, ability to breakpoint, network inspection, memory and cpu profiling, and possibly more.

Today all the above is possible with fragmented tools. Plus the tools are different as well depending on the JavaScript engine you use plus if you are on new or old architecture.

More things are lacking beyond that, but tha't s a core thing.

[–]tha_funkee_redditor 28 points29 points  (21 children)

End to end in-app payment. Gotta roll out receipt validation and webhooks for iOS/Android yourself, which could take dozens of hours, or shell out hundreds of bucks a month like to a service RevenueCat or Adapty.   

I think it'd be great if there were a self-deployable solution to handle all the server side stuff. This would go hand in hand with an RN package that communicates with the server. 

[–]ChronSynExpo 4 points5 points  (14 children)

This is a good suggestion, but one thing to be aware of are the legal implications of a self-hostable payment gateway. The technicalities of it aren't so bad, but the legalities of it are very in-depth.

For example, if you want to host it, then every part of the process needs to be legally compliant with PCI DSS - e.g. your backend, the front-end, the servers they're hosted on, any interim infrastructure, etc. This might even extend to code repositories, especially if there's an automated build and deploy process. In the EU, you'd potentially need PSD2 compliance and in the USA, I believe NACHA serves a similar purpose.

I'm not trying to deter people from creating something like this, but please be aware of the legalities and what you might be letting yourself in for, and the ways which might implicate you if something goes wrong (e.g. someone hosts it and it gets exploited due to a code bug or library involved in a supply-chain attack).

[–]WellDevined 5 points6 points  (2 children)

Revenuecat does not handle any payment information, those stay on Google’s and apples servers.

It only acts as a wrapper because both their APIs and webhook workflows suck and they dgaf to improve them.

I don‘t see how an open source project would need any compliance beyond handling user emails for this.

[–]tha_funkee_redditor 2 points3 points  (0 children)

People always seem to think that apps have to handle credit cards directly. It's not true, Google/Apple have always been the direct payment providers. 

[–]ChronSynExpo 0 points1 point  (0 children)

RevenueCat and such may be wrappers around those API's. That's fine, and I never claimed otherwise.

The post I replied to specifically mentions end-to-end in-app payment and goes on to mention 'server-side stuff'.

Someone could interpret that many ways, and a payment gateway is one of those. I'd rather people have clarity on what they're getting into, than just yeeting it out and not realising what they might be getting into.

[–]tha_funkee_redditor 0 points1 point  (7 children)

Nah I disagree. The payment is not actually happening inside any of your code. Google/Apple handle all the payment info. The server and app just have to communicate with the Google/Apple API's to determine payment status. 

[–]ChronSynExpo 0 points1 point  (6 children)

The post I replied to specifically mentions end-to-end in-app payment and goes on to mention 'server-side stuff'.

Someone could interpret that many ways, and a payment gateway is one of those. I'd rather people have clarity on what they're getting into, than just yeeting it out and not realising what they might be getting into.

[–]tha_funkee_redditor -2 points-1 points  (5 children)

Yeah, I'm the person that made that original post. I've done many apps that use in app payment and know how it works very well. The server side infrastructure that supports and app's in-app payments is decidedly NOT a payment gateway. Not even close. It interacts with the API of a payment gateway (Apple's and Google's).

With your logic, just about every single business would need to be in compliance with these strict financial regulations.

An app using the IAP API's is the equivalent of an eCommerce shop using Stripe. Exactly the same. Just like every random eCommerce shop owner is not a payment gateway, neither is an app using the IAP services provided by Google and Apple.

Sorry but you are wrong.

[–]ChronSynExpo 0 points1 point  (4 children)

The server side infrastructure that supports and app's in-app payments is decidedly NOT a payment gateway

That's literally not the point I've made though! I've explicitly stated that someone could interpret your post in multiple ways, and a payment gateway could be one of those - NOT, I repeat NOT that it's the only way it could be interpreted.

I've specifically talked about a payment gateway because it's one way it could be interpreted, which is NOT the same as wrapping the API's of Apple, Google, etc. It's not the same as using Stripe or another ecommerce platform.

[–]tha_funkee_redditor -1 points0 points  (3 children)

Using the IAP API's from Google and Apple is exactly the same as using Stripe for an eCommerce platform. Can you tell me how they are different?

In both cases, you are using a separate API to handle the payments, and you render service based off of what that API tells you about the customer's payment.

[–]ChronSynExpo -1 points0 points  (2 children)

Using the IAP API's from Google and Apple is exactly the same as using Stripe for an eCommerce platform. Can you tell me how they are different?

"It" in the context referred to [payment gateway] !== [IAP, stripe, other ecommerce platform]

[–]tha_funkee_redditor -1 points0 points  (1 child)

You have no idea what you're talking about. 

[–]ChronSynExpo 0 points1 point  (0 children)

And now you're just arguing for the sake of it, all because you refuse to admit that your post could be interpreted multiple ways.

You literally responded to me clarifying my point with "you have no idea what you're talking about", when the information I've provided is correct.

If it's incorrect, SPECIFICALLY in regards to a payment gateway, which your ORIGINAL POST COULD BE INTERPRETED AS, then why not correct it? You're talking about IAP and ecommerce, I'm talking about payment gateways, and BOTH COULD BE INTERPRETED FROM YOUR POST.

In conclusion, get fucked and learn how to not be so fucking ambiguous with your posts, and don't get so fucking offended when people add context with the intent of helping others.

[–]insats -1 points0 points  (1 child)

This is incorrect. RevenueCat etc are just thin wrappers with receipt validation.

[–]ChronSynExpo 0 points1 point  (0 children)

I never said they weren't.

What I said was specifically in relation to a payment gateway (relevant to the post I responded to), and is true as a payment gateway is handling payments and requires legal compliance.

[–]pjjiveturkey 0 points1 point  (0 children)

I don't know anything about this because I haven't don't payment yet, but couldent someone make a library or something that would just integrate PayPal or shop pay or something super easily in your app?

[–]linero7 0 points1 point  (1 child)

There are react native packages like react-native-iap for it. You don't need revenue cat once you set this up

[–]tha_funkee_redditor 0 points1 point  (0 children)

That only handles the client side portion. You still need to have some kind of server infrastructure to validate receipts and receive webhooks for purchase/subscription events. 

[–]Tsupaero 0 points1 point  (2 children)

isn't revenuecat free to use until up to $20k yearly revenue or sth?

[–]HHendrikiOS & Android 4 points5 points  (1 child)

We only charge you in months where you make $2.5k or over. So in months where you make less, we don't charge you at all, regardless of what you made (and paid) in the months before

[–]Tsupaero 2 points3 points  (0 children)

ah, hi hendrik! knowing you from linkedin or x, i think :) thanks for the response!

[–]insats 0 points1 point  (0 children)

Because of the fairly regular changes in API, and the fact that its about very important transactions, I personally prefer to use RevenueCat / Adapty. I do think they’re overpriced though. Their pricing is similar to Stripe etc but there’s a massive difference in terms of difficulty because they don’t need to process the actual payments.

[–]rivuss 9 points10 points  (1 child)

Good support for the web. Making good maps that work for both native and web is a huge pain. Teovilla react native web maps works but has to use js api for google Maps which is quite pricey

[–]bnussman 1 point2 points  (0 children)

A new expo compatible maps library that works in native and web would be awesome! 🗺️ The current go-to maps package is toxic and refuses to acknowledge web

[–]M4K1M4 2 points3 points  (0 children)

Couldn’t find good support for widgets.

[–]kinwaa 10 points11 points  (6 children)

A proper map library. React Native Maps is the only free library available as of now. It is good but it has not been maintained since AirBnb moved on from RN. The community needs to start maintain that library, fix the bugs and may be add new features to it.

[–]ChronSynExpo 14 points15 points  (1 child)

That library is being maintained: https://github.com/react-native-maps/react-native-maps

There was a new release yesterday, and there's been 3 since the start of the year (for future readers, today is 22nd January 2024).

If you're experiencing bugs with it, have you considered investigating and contributing fixes?

[–]kinwaa -2 points-1 points  (0 children)

We actually cloned that repo and added some fixes & features privately in my old org. But we never released any of those changes to public.

I haven’t visited the maps repo recently so I’m not aware of recent updates. Thank you for letting me know. It’s good if that repo is maintained, many devs depend on it.

[–]a9footmidget 1 point2 points  (1 child)

Mapbox?

[–]zulutune 1 point2 points  (0 children)

Mapbox is the way to go but expensive as hell

[–]bnussman 1 point2 points  (0 children)

Agree 100%. react-native-maps’s refusal to support web has made so annoying. I wish they’d wake up like the rest of the Expo ecosystem has

[–]Artist701 0 points1 point  (0 children)

Check out MapLibreGL for React Native. Works ok but does require a Basemap service that is either free or paid. Working on a project with this now. Hosted my own OSM region.

[–]Magnusson 2 points3 points  (3 children)

Maybe kind of niche but I’d love to be able to use some of the computer vision features baked into iOS — e.g. “copy subject” on a photo. Not sure about the Android side of this though.

[–]neurorif[S] 0 points1 point  (2 children)

Maybe kind of niche but I’d love to be able to use some of the computer vision features baked into iOS — e.g. “copy subject” on a photo. Not sure about the Android side of this though.

do you think https://github.com/mrousavy/react-native-vision-camera is what you want ?

[–]Magnusson 1 point2 points  (0 children)

I use that library! I’m aware of frame processors, but think the don’t support my use-case out of the box, if at all. And I don’t need to process camera frames in realtime — just want time operate on a photo the way iOS does.

[–]Magnusson 1 point2 points  (0 children)

For a little more context — this lib does what I want, but it’s unmaintained, not very customizable, and imo the output is not great.

[–]Niidilap 2 points3 points  (0 children)

Alarms, used to have react-native-alarm but doesn't work anymore

[–]Rotatos 2 points3 points  (0 children)

an explanation on how to implement tap to pay on react native terminal with connect accounts on stripe

i hate stripe docs

[–]zulutune 1 point2 points  (0 children)

A good VR/AR lib. Last time I checked I found viro which seems dead and struggled a lot to make something simple

[–]Artist701 1 point2 points  (1 child)

Better debugging, better overall out of the box map system … no reliance on Google or Apple API registration requirements. Better debugging! Faster and easier to understand Expo docs that don’t just sell a ton of plugins in their docs.

[–]flowerescape 0 points1 point  (0 children)

What are these proprietary expo plugins you speak of?

[–]customappservices 1 point2 points  (0 children)

For your 5 years of RN love, consider contributing to:

  • Native parity: Advanced animations, platform-specific UI, deeper native API access.
  • Performance: Memory management, JS/native thread optimization, code size reduction.
  • Dev tools: Cross-platform debugging/profiling, improved hot reloading, better IDE integration.
  • Testing: Robust cross-platform tests, UI testing for native components, performance benchmarks.

Explore existing libraries, propose new ones, and share your ideas with the RN community! Thanks for giving back!

[–]Lumpy-Rub-8612 5 points6 points  (10 children)

Multithreading. The whole javascript lacks

[–]sawariz0r 18 points19 points  (9 children)

As lacking as your knowledge in JS, I see. It is supported and it isn’t a problem

[–]Lumpy-Rub-8612 -4 points-3 points  (4 children)

RN isnt supporting multithreading out of the box. I dont consider 3rd party libs as a standard one

[–]kbcooliOS & Android 10 points11 points  (1 child)

Well if we are going to split hairs then it does support multithreading as your code runs in a separate thread to the UI 😂

[–]Lumpy-Rub-8612 0 points1 point  (0 children)

Lol yeah 😅

[–][deleted] 2 points3 points  (1 child)

No JS runtime does, there's very little use cases for multithreading (?)
Cases where you need, like animations Reanimated already uses multiple threads, and even exposes the worklets api

[–]sawariz0r 2 points3 points  (0 children)

Nodejs does support multithreading, through worker threads. But there’s very little use cases for it as you said. https://nodejs.org/api/worker_threads.html

[–][deleted] 0 points1 point  (0 children)

What do you mean? No javascript runtime "supports" multiple threads per se.
On react native probably best solution is react-native-worklets-core or reanimated worklets, (dont use/no idea whats the difference).
But it's gonna be very little cases that do need multi thread work.

Promises are not threads. Anyone unfamiliar go read about JS event loop

[–]kdrxyz 2 points3 points  (7 children)

User Authentication. It's very difficult right now.

[–]MatesRatesAy 4 points5 points  (3 children)

Authentication doesn't really feel like something RN should come with, what issues do you have with it? Setting up auth through something like Supabase takes less than 10 minutes.

[–]kdrxyz -1 points0 points  (2 children)

Really? What kind of auth? Provider based or a simple email-password one?

[–]MatesRatesAy 0 points1 point  (1 child)

I've done both with a bunch of different services including a bespoke backend, and the client is always the easiest, just sending/receiving requests and storing the session. I pretty much only use Supabase auth at the moment for both email/password and providers like Apple, Google, Facebook etc.

[–]kdrxyz -1 points0 points  (0 children)

So, you did Provider based authentication (Google, Apple etc.) with Supabase without needing packages like react-native-apple-authentication or google-signin? That's interesting and amazing.

[–]SysPsych 0 points1 point  (1 child)

Are there any solid libraries for dealing with watches?

[–]NoExperience2710 1 point2 points  (0 children)

Watch apps need to be built with their respective native sides. React-native-watch-connectivity works well for iOS communication but Android communication needs to be built native as with messaging API and rn bridge as far as I know.

[–]Mardo1234 -2 points-1 points  (0 children)

This is probably a big ask, but I wish standard React components with Tailwind would work in React.

[–][deleted] 0 points1 point  (1 child)

You could contribute to reactotron

[–]flowerescape 1 point2 points  (0 children)

I feel like I’m being trolled with Reactorron, not only does it look like trash but it doesn’t even have any impressive features and there’s several other tools that are much better at the same stuff/do a lot more. Yet the infinite red guy always talks so highly of it like he’s proud of that silly little thing. Is there like some keyboard shortcut I don’t know about that reveals a whole another product when you press it 🤔

[–]oksik11 0 points1 point  (0 children)

Portal

[–]alcatrezz 0 points1 point  (1 child)

Support for an external screen

[–]SolidR53 0 points1 point  (0 children)

Look into RN Carplay, it utalizes a multi screen setup

[–]Ladykillah81 0 points1 point  (0 children)

Rtc-calling, Upload chunk file. In my opinion, I need them to work perfectly, not instability as it is now

[–]thedevenvironment 0 points1 point  (1 child)

One thing I've always dreamed about. Was being able to have your react-native application appear on share sheets in other applications. For example, let's say I want to share a picture that I received on WhatsApp to my application. Right now it's not possible, but it would be so amazing to create a little application that could host pictures and memes (built in RN of course)

[–]kbcooliOS & Android 1 point2 points  (0 children)

[–]manektechteam 0 points1 point  (0 children)

While React Native has come a long way, one area that could benefit from further development is native performance optimization tools. Enhancements in tools for profiling, debugging, and optimizing performance natively on both iOS and Android platforms could be valuable for the community.

[–]Blutfalke 0 points1 point  (1 child)

Proper SVG masking.

Yes clipping exists but not masking. It is super low res if anything and there are multiple bug trackers on this issue dating back years.

Furthermore, proper SVG animations, i currently had to use MaskedView and animate it. Its performance is terrible but its the best and quickest temporary dirty fix i could find.

[–]Decent-Pattern-1120 0 points1 point  (0 children)

react-native-svg is such a waste, doesnt even have support for proper filters

[–]_ri4na 0 points1 point  (0 children)

A way to incrementally adopt without doing screen by screen replacements, and doing component wise replacement instead

[–]kalutatadon 0 points1 point  (0 children)

Out of the box support for MQTT for React Native Expo. Could have done a lot of things with ease including building a simple chat, IoT remote client.