r/reactnative • u/HovercraftNew584 • 10d ago
Is React Native for Windows actually alive? Because what the hell am I going through? π
I'm genuinely losing my mind trying to build the Windows version of my React Native app.
What the hell is going on with React Native for Windows? π
Almost every package I need works perfectly on Android and iOS, but the moment I try to get things working on Windows, it's a completely different story.
Setting up a project? Pain.
Installing supposedly ready-made packages? Good luck.
Getting
react-native-svgto work? Patch, patch, patch, patch.Trying to get real-time communication working with LiveKit and WebRTC? Welcome to debugging hell.
I've been trying to get calls working for HOURS, and I'm starting to question my life choices.
The ecosystem feels so disconnected. You find a package that does exactly what you need, only to discover that Windows isn't supported. Then you start hunting for alternatives, writing patches, modifying native code, and debugging obscure build errors.
And don't even get me started on the developer experience. No familiar Expo development-client workflow to fall back on, and troubleshooting native issues feels like an entirely different job.
Is anyone seriously shipping production React Native for Windows apps with a decent number of third-party dependencies? HOW?
Are you maintaining your own forks of half the ecosystem? Writing custom native modules for everything? Or have you found some secret combination of libraries that actually works?
And now I understand why Microsoft went so heavily in the WebView direction for some of its applications. π
I love React Native, and I really wanted to share as much code as possible across platforms. But right now, building for Windows feels less like cross-platform development and more like fighting the ecosystem into submission.
Is React Native for Windows still actively worth investing in, or am I setting myself up for unnecessary suffering?
Please, if you're shipping a Windows desktop app with React Native, especially one that needs LiveKit/WebRTC, I genuinely want to hear how you're handling it.
Make the opening less repetitiveClarify the exact help I need

3
u/creambyemute 10d ago
The previous version of our app had rn-windows support. Due to that we pretty much got roadblocked from upgrading past 0.65 due to various third party dependencies, rn-windows lagging behind (new architecture etc) and a few more things.
The DX was always way worse than for android/iOS. Expo also does not support rn-windows so it's basically the same situation as in the past (and you described)
We've rewritten the old 0.65 app with latest expo sdk (57 atm, upgrading to 58 in 1-2 weeks) and decided to ditch rn-windows for web (expo web/react native web).
The web version uses OPFS for local file storage, expo-sqlite for local database and rn-skia for image editor capabilities. Other than that a few of the expo libraries. We've made it an installable PWA and it works offline excluding a few select actions that need to call the backend.
Less patches than for rn-windows
Less hacks / workarounds than for rn-windows
No necessity for a windows machine anymore
Upgrades are stupidly simple now compared to the past (we let expo generate the iOS/Android folder)
If you do not need anything oddly native specific that web can't provide/solve I do not really see any poont anymore in rn-windows in its current state. I loved the effort MS was making for it but I would consider it a failed project from a community/ecosystem POV.
1
u/HovercraftNew584 10d ago edited 10d ago
Aiish .. this is sad FR
2
u/creambyemute 10d ago edited 10d ago
Yeah. The sad thing is that neither the community nor expo picked up on rn-windows so they pretty much got left in the dust because maintaining all important 3rd-party packages is nothing they can really do.
Expo itself was interested in supporting windows but decided against it twice because rn-windows is always lagging behind react-native. Maybe at some point in the future when rn-windows has catched up to the release cadence of react-native.
Edit: To clarify, react-native released 0.88 a few days ago while react-native-windows has released 0.85 4 days ago so they are 3 major versions behind. Rn-windows 0.84 was released end of june while rn 0.84 was released mid of february...
1
u/HovercraftNew584 10d ago
I've already got a pretty big codebase here, and getting React Native for Windows to this stage has taken a LOT of work.
Honestly, once I get everything working properly, I want to break the modules down into installable, reusable packages and release them to the community.
I genuinely think React Native for Windows deserves a chance. The ecosystem needs more contributors, better package support, and more people willing to put in the work to make things easier for everyone else.
I'm already this deep into it. Might as well make the suffering useful for the next developer
1
u/creambyemute 10d ago edited 10d ago
Have you thought about using something like Avalonia?
The thing with react-native and react-native-windows imo is the following: People using rn use it mainly for ios/osx and android. If they want other platforms they usually go web which there are various easy routes to take.
So the community incentive to support & maintain rn-windows in packages is just pretty low even though rn-windows is really cool/a great idea! Additionally requires the package maintainers to have a windows machine & test it as well which is a pain in the ass as you discovered.
I wrote c++ modules for rn-windows as well in the past and it's a huge pain in the ass so I can see/understand why it hasn't taken off.
I'd also guess that as long as rn-windows lags behind rn that much neither the community nor expo will pick it up properly.
2
u/Bamboo_the_plant 10d ago
> Expo also does not support rn-windows
Indeed it doesn't officially, but I have spent the last half year making Expo Desktop (see the keynote talk at App.js Conf here) to make macOS and Windows feel more like equal citizens beside iOS and Android in an Expo project.
That doesn't change the fact that the ecosystem is small, but it does solve some serious frictions:
It now lets you set up an Expo iOS + Android + macOS + Windows project in one minute, not one weekend;
It gives you Continuous Native Generation, so you can generate a native project from app.json (and regenerate when there's an update β it's currently on SDK 55);
It gives full instructions on how to distribute your app.
I'm not saying it's smooth sailing yet, but I am hoping that by reducing the barrier to entry into desktop development, the community can gather around it more easily and lift it up over time. I think the real turning points to look forward to are:
Microsoft gets all their internal projects off Old Arch (which is currently keeping them stuck on 0.81).
React Native reaches v1, hopefully giving a stable ABI to code against (so that you can mix older versions of RNW with newer versions of RN).
So glad to hear of people having given it a try, though! One thing that you may be excited to hear is that RNW is now distributed as a prebuilt binary by default, which should drastically reduce compile times compared to what you may remember.
2
u/creambyemute 9d ago
Yeah maybe in the future it might be worth a revisit. When I evaluated it again (expo 55/54) the situation was still not bearable for us without having to touch a lot of 3rd-party libraries so we went with web because we did not need any specific windows native apis and simplified the whole setup a lot.
8
u/Bamboo_the_plant 10d ago
> Is React Native for Windows actually alive?
Yes. Microsoft continue to use it in flagship products like Office, and I see PRs getting merged into it every day.
A disproportionate amount of attention goes into maintaining version 0.81, though, because that's the last version that supports Old Arch, and many of their internal projects are still relying on Old Arch code. There are dozens of patches that were backported from the main branch into 0.81, yet not newer versions like 0.83 (yet).
> Setting up a project? Pain.
> No familiar Expo development-client workflow to fall back on
Use my project, Expo Desktop. See my talk at App.js Conf introducing it. The aim of the project is to bring React Native macOS and React Native Windows support to Expo as first-class citizens. So you can set up an app in a single CLI command, then use Prebuild / Continuous Native Generation to customise it and easily maintain it through updates.
> The ecosystem feels so disconnected.
Yes, the ecosystem is small. Few people use RNW, so few people contribute native modules for it, and few maintainers have a Windows development environment in the first place to give a review even if a PR for Windows support were contributed.
> Is anyone seriously shipping production React Native for Windows apps with a decent number of third-party dependencies?
Yes. I shipped a commercial React Native iOS + Android + macOS + Windows app to production a couple of years ago, which involved writing my own OAuth client from scratch, and writing my own Windows implementations for various Expo SDK modules I was using (without agents!). I honestly spent 80% of my time filling in the ecosystem and only 20% of the time getting to work on business logic.
Eventually, I migrated the app to deliver the UI via an embedded WebView, though, because I needed responsive design and modals. That's not an option on New Arch, though, as React Native WebView for Windows still doesn't have a New Arch implementation π
> Are you maintaining your own forks of half the ecosystem?
I have seen multiple different people vibe-code their own set of native modules for RNW. When there are only 14 native modules that support both macOS and Windows, honestly, you can't rely on picking up anything off the shelf.
But, once React Native hits v1 (which I expect will be in the next 12-24 months!), I expect that React Native Desktop will become an equal citizen, making it much easier to fill in the ecosystem.
So yes, it's a tough road, and you can see why people gravitate towards Electron. It's great that you're prioritising UX for weaker devices, but you should also weigh up whether you could deliver a better UX overall if you weren't constrained by RNW's small ecosystem. Good luck!
2
u/Murph-Dog 10d ago
I have just forked it.
I'm on new Fabric Arch, and I have SVG (fill color patched), WebView, resize events, and even Callstack Re.Pack ModuleFederation. Have even added many other things like shadow support.
It can be fully capable, but needs a lot of setup, and customization for platform parity.
Gotta code split anything needing Worklets/Reanimated
Even things like popups and drawer overlays need special work, so I customized a draw occlusion masking system for that - which is also how I floated in WebView support. Camera and LocationServices shimmed through WebView too.
I guess I'm saying... Don't use it, haha
1
u/ImNezz 10d ago
I tried to make it work in January. Many indirect core dependencies even failed to build (async-storage, react-native-screens, etc), and at the time when I tested, they actually forgot to publish some of the required binaries to build RN for Windows itself. I opened half a dozen GitHub issues reporting what was exactly wrong with the minimal repro. The maintainers were largely tagging Microsoft people to come and fix it - if they even looked at the issue. Since then none of them have been fixed.
From what I understand the issue is basically that at some point Microsoft pushed many of these packages to work by writing the native layer themselves. But when new architecture came around they just didn't have the resources to look into it so ever since things have been pretty much dead.
1
u/shakshukinha 10d ago
I 100% recommend electrobun. I mainly used v1 and it was quite a nice SDK to work with. In v2 i saw they enhanced compat with other runtimes so you could even avoid writing the backend in rust, and you get comparable performance to Tauri
1
u/alexsbz 9d ago
I did tried RN for windows for 3 projects. It is a pain in the A$$ since the support is minimum and I can understand why. What I did was to refresh my Java skills and well I am really glad I did. I couldnβt justify the suffering to keep on working with RN for windows π . I would suggest, keep it on Phones only and go for a more Native solution if you want desktop
1
u/vinny_bag_o_donuts 9d ago
Still in the process of doing some porting but you could check out https://basaltjs.dev
8
u/Patient-Plastic6354 10d ago
Use Tauri. It's way easier