
ReactXP – A library for building cross-platform apps - pestkranker
https://microsoft.github.io/reactxp/
======
tspike
Can we please stop trying to Javascriptify everything? The cross-platform
thing has been tried again and again and again, and always runs into the same
pitfalls: poor mimicry of native standards, inefficiency, debugging difficulty
because of abstraction layer built on abstraction layer, enabling developers
with poor understanding of the underlying platform to make an absolute mess of
an app for others to maintain later on, and so on.

~~~
supernovae
I disagree entirely... I hate how an app for everything means vendor lock-in.
Developers should embrace web standards and come together on making apps/tools
that don't suck. I think having to write for android, ios, osx, windows,
chromeos and linux sucks worse..

~~~
sampl
A million times yes.

Apps do the same things everywhere. Why do we still need completely different
languages, codebases, etc (not to mention teams of experienced hires) to
deploy any little CRUD app?

Maybe we aren’t interested in fixing this because it means there’s less
engineering to be done.

“It is difficult to get a man to understand something, when his salary depends
on his not understanding it.”

~~~
swsieber
I'd be interested in solving it, but not with Javascript.

I think it's less about engineering costs and more about dislike of
javascript. Maybe even specifically javascript tooling and electron.

A big reason people want to standardize on javascript is because it is the
runtime of the Web - I can't wait for Web assembly to get even better so we
can standardize on something else.

~~~
jtreminio
Technically the source code in OP is Typescript.

~~~
swsieber
But technically all javascript is also valid typescript... OTOH you can set a
strict mode (I think)

------
mythz
With the issues I've had with React Native, I'm keeping my eye on Flutter,
great dev experience backed by a well resourced team, hope to see its
ecosystem catch up.

A couple of projects to watch out for:

[1]: [https://feather-apps.com/](https://feather-apps.com/)

[2]: [https://github.com/google/flutter-desktop-
embedding](https://github.com/google/flutter-desktop-embedding)

~~~
rglover
Curious, what are some of the issues you've had with React Native? Any big
pitfalls to watch out for?

~~~
tspike
Just a few:

\- As another commenter mentioned, they ignore and close legitimate issues on
a regular basis

\- Breaking changes are a way of life and extremely frequent

\- They ignore native warnings: our project had zero before introducing RN,
now has hundreds

\- Navigation is a mess

\- Integration with existing native apps works for tiny features but falls
apart in larger teams

\- Debugging issues that cross the JS <> Native boundary is a nightmare

\- Keeping pace with native updates is made much more difficult by the API
churn- want to update to Xcode 10? First you have to update RN, which will
break all your features

\- Poor maintenance of views meant to mimic native views

\- If you have a hybrid native/RN app, instead of reducing the platforms you
have to support from 2 to 1, you've effectively increased it from 2 to 3

~~~
resters
I agree with some of these. It's really annoying that Facebook can't figure
out how to hire a dozen or so talented developers to focus on the open source
side of react and try to minimize the number of warts that people in the
community end up having to deal with.

While React Native is open source, Facebook does not prioritize needs that are
outside of its core use cases. So many frustrating aspects of RN go unfixed by
FB, and issues and PRs about them get ignored by the arrogant guy who closes
issues without any explanation. Not sure how he thinks he's helping anyone by
doing that.

~~~
nathan_f77
> It's really annoying that Facebook can't figure out how to hire a dozen or
> so talented developers to focus on the open source side of react

Now that I think about it, I think I would actually enjoy being employed to
help maintain the React Native project. I really had a lot of fun building a
React Native app, but there were so many issues that didn't get any attention.
It would be quite fun to spend all day helping people with issues, fixing
bugs, writing tests, and merging PRs. That probably sounds like a terrible job
to some other developers, but I really enjoy it, and it would be great to get
paid for it.

------
sjroot
I'd love to hear more about how this differentiates from existing
alternatives, namely Proton Native[1] and the NodeJS bindings to libui[2]. I
am specifically interested to see how/if/when Microsoft will support Linux and
macOS, as the aforementioned solutions already do.

[1] [https://proton-native.js.org/#/](https://proton-native.js.org/#/)

[2] [https://github.com/parro-it/libui-node](https://github.com/parro-
it/libui-node)

~~~
icc97
Yes, it will be cross platform, it's all part of the move of Office to React,
see this whole Twitter thread [0] from Sean Larkin:

> And here's ReactXP which is baked in to Skype (consumer) to make it possible
> to ship _cross plat_ and single code base native applications with
> consistent UI

[0]:
[https://twitter.com/TheLarkInn/status/1006857447364063232](https://twitter.com/TheLarkInn/status/1006857447364063232)

~~~
discreteevent
I don't see anything about moving office to react there.

~~~
dx87
The developer who started that twitter thread massively overstated how much
react was going to be used in MS Office applications because for some reason
he didn't like that a college professor said that scripting languages aren't
appropriate for developing an office suite. You can see in the first tweet he
says that all of the office applications are being re-written in javascript,
and after everyone was thoroughly dissapointed that MS would do that, other
developers from MS commented here and on reddit that all of the office tools
were going to stay written in C++, and react was only going to be used for
some of the UI design, there was never a plan to rewrite everything in react.

~~~
kyberias
To be fair, he never said Office (the good old Office "client"), he said
Office 365, which is the web app version of Office basically.

Everyone knows Office is C/C++. Ported to iOS and Android thanks to that.

~~~
contextfree
Officially Office 365 includes the subscription version of the native client
apps. The web apps are called Office Online. Lots of people are confused about
this though, as it's confusing.

------
fredsanford
Anyone know which definition of lightweight is in effect here? :)

I see Atom called lightweight all the time. I remember when my PC had a 5MEG
HDD and exactly 640k of RAM, so...

I'm curious what amount of resources (disk, runtime memory etc) is used for
something like a small CRUD app (think simple phonebook or CD library)

If you know the answer for proton native, please post that too!

~~~
tssva
I don't see the point to mentioning the specs of your old PC. My first
computer had 4k and a tape drive does that mean software for your PC was
bloated?

~~~
fredsanford
Context

------
d--b
I’d be more interested in knowing if someone had ported the ideas behind react
in a cross platform language, rather than shipping a JavaScript engine with
all your apps. Or maybe there should a JavaScript virtual machine in the OS
itself.

~~~
ducaale
[https://github.com/pojala/electrino](https://github.com/pojala/electrino) is
electron alternative that uses the system's own web browser engine.

~~~
sdegutis
I had the same idea: a lightweight variant of Electron, that just uses
WKWebView for the GUI and JavaScriptCore for the core functionality, passing
messages between them (serializing via JSON).

I have a proof of concept already, but it's not cross-platform so that's a
major downside, and I don't think many people need the combination of (1) Mac-
only, (2) lightweight, (3) using JS for the core logic, (4) using web views
for the GUI. I just don't think there's a market for that.

~~~
cxvlkjdoijg
Your idea is not bad. In fact it has been done multiple times already.

[https://github.com/zserge/webview](https://github.com/zserge/webview)

[https://github.com/Boscop/web-view](https://github.com/Boscop/web-view)

and so on

------
colinramsay
There's mention of MacOS in the codebase and a few PRs but there are no
samples or documentation on getting it working, which is a little frustrating.

[https://github.com/Microsoft/reactxp/issues/19#issuecomment-...](https://github.com/Microsoft/reactxp/issues/19#issuecomment-371781900)

------
floatingsmoke
I think ReactXP is not a visionary project but Microsoft's approach to take
advantage of javascript developers and make them able to build mobile apps for
Windows phones beside indispensable platforms(Android, iOS).

~~~
jve
Wait, isn't Windows phone officially dead?
[https://www.bbc.com/news/amp/technology-41551546](https://www.bbc.com/news/amp/technology-41551546)

------
blinkingled
> web, iOS, Android, and Windows.

So cross platform minus Linux then?

------
laurent123456
It's from 2016.

~~~
alluro2
And latest release a year ago. Bamboozled on HN again :)

~~~
bhouser
Here is the version history. As other comments mentioned, last release was 5
days ago:
[https://microsoft.github.io/reactxp/versions/version_history...](https://microsoft.github.io/reactxp/versions/version_history.html)

------
bufferoverflow
Seriously, Microsoft? From your own websites:

Xamarin: _Deliver native Android, iOS, and Windows apps with a single shared
.NET code base._

ReactXP: _Share most of your code between the web, iOS, Android, and Windows._

~~~
afarrell
What is surprising about this?

Microsoft wants people who would otherwise only have written iOS and Android
apps to also write Windows apps.

~~~
bufferoverflow
Could've been done with Xamarin.

~~~
afarrell
would that still achieve the goal of reducing the cost for people who know
ReactJS to develop for Windows?

------
betageek
Where are the live demos?

~~~
omegabravo
I built RXPTest, and TodoList for the web

[https://imgur.com/a/qWDsaGd](https://imgur.com/a/qWDsaGd)

------
edoceo
From the article: ""XP means X-Platform Share most of your code between the
web, iOS, Android, and Windows.""

So, not exactly cross-platform.

~~~
dec0dedab0de
It's a fair use of the term, and the kind of thing I would expect from old
Microsoft. Maybe they'll add support for mac, linux, bsd, etc later.

~~~
WorldMaker
It's an Open Source project so maybe community members will add support for
those other platforms?

Quick search of the project issues shows that macOS is already mostly
supported:
[https://github.com/Microsoft/reactxp/issues/19](https://github.com/Microsoft/reactxp/issues/19)

It looks the project leads want more consensus on Linux React Native (ie,
something actively maintained and preferably merged to mainline React Native
support):
[https://github.com/Microsoft/reactxp/issues/41](https://github.com/Microsoft/reactxp/issues/41)

------
qwerty456127
> Share most of your code between the web, iOS, Android, and Windows

How is it better than React and React Native if it still is web+mobile+Windows
and doesn't offer Linux and macOS support? Also doesn't the fact React is by
Facebook and ReactXP is by Microsoft and introduces Windows support look
suspicious like if they were building an incompatible version of React like
they've done with Java in the past?

------
alphaomegacode
Looked at the code in their components section and is it safe to say that we
need to use Typescript to use this?

~~~
k__
JS interfaces with TS rather nicely.

------
th3byrdm4n
I'm sure this was in the works well before Safari/iOS 11 implemented the
majority of the PWA standard, but can someone help me understand what the
target market is for this in 2018?

We just built a ground-up PWA and users LOVE it (Android/iOS,
tablet/phone/PC).

Why complicate and slow your programming + production software down by trying
to XP?

------
anticensor
Name clash with ReactOS, reimplementation of Windows.

~~~
stephengillie
It's not just React, it's ReactXP.

Remember 2001, when everything was named XP - WindowsXP, AthlonXP, etc? The
name is almost nostalgic.

And being Microsoft, I'm surprised it's not "ReactXP.NET for Windows Server by
Cortana".

~~~
contextfree
XP to mean cross-platform is well established, for example XPCOM used by
Mozilla/Firefox.
[https://en.wikipedia.org/wiki/XPCOM](https://en.wikipedia.org/wiki/XPCOM)

------
franga2000
What a surprise that a supposedly "cross-platform" solution from Microsoft
does not support any of the competing platforms (macOS, Linux...). /s Smells
of EEE...

~~~
jevgeni
I mean:
[https://microsoft.github.io/reactxp/docs/faq.html](https://microsoft.github.io/reactxp/docs/faq.html)

It's _React_ , it supports iOS, Android, Windows and web...

What was the point of your comment?

------
acidity
Newbie question but will this help me also write desktop apps?

~~~
oliyoung
Yep, you can build [UWP]([https://docs.microsoft.com/en-us/windows/uwp/get-
started/uni...](https://docs.microsoft.com/en-us/windows/uwp/get-
started/universal-application-platform-guide)) apps with it, not sure if
there's a OS X desktop solution

------
alluro2
That name harkened back to era of Internet Explorer 6 and evoked painful
related JS/CSS development memories even before realizing it's Microsoft's
project :D

------
colonelpopcorn
This is a reddit-tier joke, but now all that's left to do is get XP running in
XP.

