Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TBD] Windows platform support to be fixed or not #43

Closed
brodycj opened this issue Jul 19, 2019 · 15 comments · Fixed by #264
Closed

[TBD] Windows platform support to be fixed or not #43

brodycj opened this issue Jul 19, 2019 · 15 comments · Fixed by #264

Comments

@brodycj
Copy link
Owner

brodycj commented Jul 19, 2019

At this point I am not convinced whether or not it is worth fixing the Windows platform support (see known issues listed in #23).

This means that I may consider planning to remove support for Windows at some point in the future. Windows support is currently not stable due to some known issues (see #23), and I would see limited commercial motivation to deal with this platform at this point.

Any comments, suggestions, or other feedback from the user community would be much appreciated.

@brodycj brodycj changed the title Windows support to be removed [TBD] Windows support to be removed Sep 11, 2019
@brodycj
Copy link
Owner Author

brodycj commented Sep 11, 2019

Marked as TBD for now, as I am not yet ready to confirm this as a decision.

Lack of response from the user community on this discussion and on #23 (stable Windows support, with help wanted) makes me even more motivated to drop Windows support.

/cc @dlowder-salesforce

@jonthysell
Copy link

I currently have the following two issues on me (CLI support for new Windows native modules):

I was looking into adding it into our own CLI, when I saw that the official RN docs point to this project as the recommended starting point for new native module projects.

@brodycj
Copy link
Owner Author

brodycj commented Nov 8, 2019

Thanks @jonthysell, that would be really nice. I have some more feedback with a couple questions coming next week.

@brodycj brodycj changed the title [TBD] Windows support to be removed [TBD] Windows platform support to be fixed or not Nov 15, 2019
@brodycj
Copy link
Owner Author

brodycj commented Nov 15, 2019

I have updated the title & description of this issue to better reflect the discussion here.

As I said in microsoft/react-native-windows#3201 (comment), I find the separate .NET & C++ implementations to be somewhat problematic to support; I wonder if there may be any way to support both .NET & C++ components for a hopefully limited period of time. Any pointers would be highly appreciated.

I would also like to drop RN 0.59 support if possible (see #132).

@stmoy
Copy link

stmoy commented Nov 20, 2019

React Native for Windows vNext will support both C++ and C# components. The default option for creating a new app or module library should also support both C++ and C#. In terms of defaults, we should err towards the most performant option (C++) while still having an option for C# developers as a flag.

More context on the other thread: microsoft/react-native-windows#3201 (comment)

@brodycj brodycj added the help wanted Extra attention is needed label Nov 21, 2019
@brodycj
Copy link
Owner Author

brodycj commented Nov 21, 2019

Thanks @stmoy for the response. I just added the help wanted label, in case someone wants to contribute a solution. It would be ideal if a solution could support views and example projects, like this utility does for Android and iOS.

Another idea could be to make or contribute to a template that supports Android, iOS, and Windows out of the box, kinda like https://github.com/demchenkoalex/react-native-module-template that was suggested in #159 (comment).

@brodycj
Copy link
Owner Author

brodycj commented Nov 21, 2019

One more thing I discovered is that there seems to be now react-native-tscodegen which seems to generate native module code based on TypeScript schema (see #193). If someone truly comes up with a better native module utility than this one it would be really cool 😎

brodycj pushed a commit that referenced this issue Mar 2, 2020
OVERVIEW:

Windows is no longer supported for reasons discussed in #23 & #43

Moving the existing Windows C# template into `unsupported-platforms`,
will continue to be validated by the test suite for now (at least).

Removing the `uuid` package dependency which is no longer needed
(unless it is used for a supported platform again, someday).

Further discussion would be welcome *in a new issue* on GitHub.
brodycj pushed a commit that referenced this issue Mar 2, 2020
* General change notes

OVERVIEW:

Windows is no longer supported for reasons discussed in #23 & #43

Moving the existing Windows C# template into `unsupported-platforms`,
will continue to be validated by the test suite for now (at least).

Moving "unsupported-platforms" tests very carefully to preserve
the test coverage while avoiding excess test snapshot churn
in the git history.

Removing the `uuid` package dependency which is no longer needed
(unless it is used for a supported platform again, someday).

Further discussion would be welcome *in a new issue* on GitHub.

* rename & move unsupported Windows C# tests, with updated descriptions

(and updated test snapshots)

* update Windows windows-csharp tests to test Windows (C#) template only

* update windows-csharp test snapshots

* remove Windows support from templates/index.js

* rename templates/windows.js -> unsupported-platforms/windows-csharp.js

* copy templates/.eslintrc.yml into unsupported-platforms

* remove use of uuid from lib/lib.js

* update CLI error logging test snapshot

* remove uuid dependency from package dependencies

* update status of Windows platform in README.md

* remove obsolete section from README.md

* include unsupported-platforms/**/*.js in stryker.conf.js

* remove conditional determination of peerDependencies & devDependencies

which is no longer needed now that Windows platform support is gone

as discovered through mutation testing using Stryker Mutator
@brodycj brodycj removed the help wanted Extra attention is needed label Mar 2, 2020
@brodycj
Copy link
Owner Author

brodycj commented Mar 2, 2020

Windows module support which was only available in C# is now gone due to the difficulties discussed here and in #23. I would be happy to consider supporting Windows again if there is sufficient interest and help from the user community. A new GitHub issue would be appreciated in case of any interest in supporting Windows again.

@asklar
Copy link
Contributor

asklar commented Jul 19, 2021

Hey @brodybits ! Now that things seem to be working, would you object to marking Windows as supported / removing the mention of unsupported on the readme file at the top of the repo? Let me know if there's any blockers that are still applicable.

@brodycj
Copy link
Owner Author

brodycj commented Aug 2, 2021

I just updated README.md according to the current status in this commit: 5554b98

@asklar
Copy link
Contributor

asklar commented Aug 2, 2021

@brodybits it looks like the readme is still saying Windows is not supported. We are using create-react-native-module on the RNW, side and it seems to work fine. Are there any blockers preventing Windows targets being supported?

@brodycj
Copy link
Owner Author

brodycj commented Aug 2, 2021

This utility does not currently make anything that works on the Windows target platform. It did make something for Windows with C# in the past, but I have disabled this capability. If you want to say that "using create-react-native-module on the RNW, side [...] seems to work fine", it would be awesome if you could give me a pointer how I can reproduce this result. Thanks.

@asklar
Copy link
Contributor

asklar commented Aug 2, 2021

@brodybits see the instructions for creating a Windows native module here: https://microsoft.github.io/react-native-windows/docs/native-modules-setup#creating-a-blank-native-module-project

Basically - create a RN module using create-react-native-module, then add Windows to it by using the RNW CLI.
I think we just need to change the verbiage of "not support for Windows" to something like "on Windows, you need to run the RNW CLI after using create-react-native-module". Does that make sense?

@brodycj
Copy link
Owner Author

brodycj commented Aug 2, 2021

see the instructions for creating a Windows native module here: https://microsoft.github.io/react-native-windows/docs/native-modules-setup#creating-a-blank-native-module-project

I am thinking to add a pointer to this: https://microsoft.github.io/react-native-windows/docs/native-modules-setup#creating-a-new-native-module-library-project

PR is coming up for you to help review

@brodycj
Copy link
Owner Author

brodycj commented Aug 2, 2021

@asklar I just raised PR #462, review would be much appreciated

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants