The app will put a picture of a stylish-looking alarm clock on your Mac which you can use to set your alarms. To set an alarm, choose the time and date and then click the blue round button in the bottom-left corner of the clock. You can change what your alarm will sound like by tapping Sound in the menu. Jumpcut currently supports versions of macOS from 10.11 (El Capitan) forward. Users of older Macintoshes may want to consider Jumpcut 0.63, which supports operating systems as old as OS X 10.3.9 Panther. Code is available on GitHub. Jumpcut is written in Objective-C. Timer visible in the menubar; Many many more Fixed bug related to pomodoros recorded with different timezones; Added unicode support to pomodoro descriptions; REQUIREMENTS. Mac Os X 10.7 Lion users: Just download Pomodori release 0.7, unzip in /Applications folder and go. Mac Os X 10.6 Snow Leopard (64bits, see limitations) Users.
What is a React Native for Windows app?
A RNW app is a Universal Windows Platform app (aka UWP or Windows 10 app).
The Universal Windows Platform allows you to access a set of common functionality on all Windows devices via the Windows Runtime (WinRT). WinRT APIs can be accessed from C++ (via C++/WinRT), or via .NET C#.
WinRT support in .NET
The current publicly supported version of .NET (.NET UWP) has built-in support for WinRT.
Win32 Desktop apps vs. RNW apps
Whether you are new to Windows development, or you are a Win32 desktop app veteran, the following FAQs should answer some common questions.
When you add Windows support to a react native app via the steps described in the Install the windows extension section, the react-native-windows CLI will create a UWP app for you.
Therefore, RNW apps are UWP apps and therefore have the following characteristics:
API surface
The set of APIs these app can access are a subset of all Windows APIs (i.e. those accessible via WinRT). See:
Isolation
The app runs inside of an app container - a type of sandbox. This provides apps with a secure way to install, access system resources like the filesystem, and lets the system manage their lifetime (e.g. suspending the app when it isn't on the foreground). This means that by default an RNW app cannot access arbitrary filesystem locations, start arbitrary processes, etc. UWP apps that need to access these kinds of capabilities may be able to do so via App capability declarations.
Packaging
React Native Windows apps are signed and packaged. Packaging is a mechanism through which an app and its dependencies acquire an identity, which is used to determine whether API calls that require system capabilities (e.g. filesystem access) should succeed or not.
Distribution
React Native Windows apps can be distributed, installed and updated in the following ways:
- via the Microsoft Store.
- via your private Store if you are a business or educational organization. See also Distribute LOB apps to enterprises.
- using App Installer.
It's worth noting that you cannot just 'copy an EXE' as the app package contains more than just the main executable, including an app manifest, assets, dependent framework libraries, etc.
In addition, the Store submission process has these requirements:
- UWP apps submitted to the store must pass Windows App Certification Kit (WACK) validation.
- UWP apps written in C# or other managed languages submitted to the store must be built using the .NET Native toolchain. This is the default when building C# apps in Release mode, but not in Debug, so apps built in Debug will be rejected by the Store.
Use of non-WinRT libraries
Any libraries you use should be built as WinRT components. In other words, you cannot easily link libraries built for Win32 desktop apps without additional work.
- C++/CX is a dialect of C++ that allows writing UWP apps, however this is not supported for writing a RNW app. The article How to use existing C++ code in a Universal Windows Platform app talks about how to consume non-WinRT libraries in a WinRT context using C++/CX, but most of the content should be applicable to using C++/WinRT which is the supported way to write RNW apps.
- See also the guide for moving from C++/CX to C++/WinRT.
- Libraries built for .NET desktop framework cannot be directly accessed by UWP. You can create a .NET Standard library that calls into the .NET framework one, and call from the UWP app into the .NET Standard middleware.
Local testing and inner loop
For internal development, you can deploy your app for test purposes by side-loading and deploying via loose-file registration. When building in Debug mode (which is the default),
npx react-native run-windows
performs loose-file registration of your app in order to install it locally. When running npx react-native run-windows
with the --release
switch, the CLI will install the real package onto your local machine. This requires the app to be signed and for the certificate it uses for signing to be trusted by the machine the app is going to be installed on. See Create a certificate for package signing and Intro to certificates.C# vs. C++ for Native Modules
Although React Native for Windows supports writing modules in both C# and C++, you should be aware that your choice of language could impact performance of apps that consume your module. C# apps submitted to the store go through a process of cross-compilation to native code (the tools that allow this are the .NET Native toolchain), which improves the performance and startup times of these apps versus their non-'native-ized' counterparts. For more information about performance in .NET Native apps, see Measuring startup improvement with .NET Native.
C# development brings engineering efficiencies to writing a module or an app. We strive to maintain parity in developer experiences between C# and C++. If your app or module already uses C#, you should feel empowered to continue to use C#. That said, modules that Microsoft contributes to will be written in C++ to ensure the highest level of performance and interoperability.
App crashes when trying to load the C# component or instantiate one of its types
Error 0x80131040 'The located assembly’s manifest definition does not match the assembly reference'
C++ apps consuming native modules written in C# need special care. There is a bug in the interop between C# and C++: https://github.com/microsoft/dotnet/issues/1196.
The symptoms are that building the app will work fine but the C++ app will crash at runtime when trying to load the C# module with the error
0x80131040 : The located assembly's manifest definition does not match the assembly reference.
A write-up of the problem can be found here.To work around this problem there are three options:
- Set your C# component's target Windows version to Windows 10 version 1703 (Build 15063) or lower.
- Reference the .NET Native NuGet packages in your C++ app:
- Right click on the app's .vcxproj file → Manage NuGet Packages.
- Search for
Microsoft.Net.Native.Compiler
, and install it. - Then add the following properties to the .vcxproj file:
- In your .vcxproj file, set this property in the first
<PropertyGroup>
:
Troubleshooting and debugging C++ native modules
So you added a new native module or a new method to a module but it isn't working, now what?!
If your method isn't being hit in the VS debugger, something is blocking the call due to a mismatch, likely between the expected and actual types that your method takes/returns.
To debug into what is rejecting the call, set a breakpoint in
CxxNativeModule::invoke
(See ReactCommonreact-native-patchedReactCommoncxxreactCxxNativeModule.cpp
). This breakpoint is bound to be hit a lot (every time a call to a native method is made), so we want to make sure we only break when our method of interest is involved.Right-click on the breakpoint to add a Condition. Suppose the method you are interested in catching is called
getString
.The conditional breakpoint condition to enter should compare the name of the method to that string: strcmp(method.name._Mypair._Myval2._Bx._Ptr, 'getString')0
Compile error 'XamlMetaDataProvider': is not a member of 'winrt::MyModuleName'
This can happen if your module includes some XAML markup and you aren't referencing the XAML type information from your C++ app.To fix this, add the following to your C++ app's
pch.h
file:(usually
MyModuleName
and MyNamespaceName
will be the same, you can check it in the C# project's properties pane under Root Namespace).Additional resources
For more information and troubleshooting instructions, see the following articles:
React Native for Windows is now on a 0.63 stable release with React Native core, lighting up some fun new APIs.
Both React Native for Windows and macOS have been bumped up a version - to 0.63 for Windows and 0.62 for macOS!
This means Windows is once again up-to-date with React Native core and following this new release we're lighting up a lot of new APIs and dev experiences that make developing on Windows using React Native that much better.
Check out the updated Getting Started guides for Windows and macOS to try out the new features for yourself!
To learn more about this release, API details, breaking changes, deprecations and more, check out our release notes.
React Native Windows version 0.63 takes advantage of a few really great developer experience improvements that were added to the core React Native platform.
LogBox
LogBox is now on by default for React Native apps on Windows! This is a huge step forward in addressing some of the pain points experienced by developers when trying to debug their apps.
With this new update you can now more clearly read errors in a concise, formatted, and actionable layout that's easy on the eyes and the mind - a win-win!
Check out the official blog post for more information around this feature.
Autolinking
Sometimes it really is the little things that make a huge difference and in this case Autolinking is no exception!
Now when you install new modules and build your app we will automatically hook-up all those necessary native platform-specific code pieces for you in Windows. This will save you time and (possibly) a headache, if C++ isn't your strong suit.
We've also provided some new documentation around how to use Autolinking with Native Modules in Windows.
PlatformColor
PlatformColor
is a new API React Native core introduced that gives React Native app components the ability to leverage native system colors - meaning you can now subscribe to certain colors or brushes in your StyleSheet
that respond to native platform actions like theme switching, user accent colors, or high contrast changes.Head over to the official blog post about this API to learn more about accessing native colors across all platforms, or check out our new guidance documentation on PlatformColor to learn how to take advantage of Windows-specific colors and materials in your app.
Since the release of this API, the older Windows
AppTheme
API will be deprecated in favor of PlatformColor
.Pressable
Pressable is now available on React Native for Windows apps as well. This new core API helps make customizing your interaction experiences more robust and easier to fit around your custom components and scenario needs.
Community Modules
As with every big release, we're still working hard at adding Windows implementations to important community modules.
Come check out what we've enabled for you this release!
react-navigation
Macos Timer App Github App
One of the more popular and much needed react-navigation module is now supported on Windows. Navigate between screens with native ease and preserve your stack history in this amazing community module.
react-native-checkbox
The community module react-native-checkbox has also received Windows support this release. CheckBox is a rather unique native control for us and we're happy to have it in.
Special shoutout and thank you to the community members who helped make this possible!
The Hermes Engine
Macos Timer App Github Android Studio
The Hermes Engine is an open-source JavaScript engine that's been built to optimize the performance of React Native apps. It's currently opt-in for Android and macOS and we're in the process of bringing it to React Native Windows as well.
If you'd like to experiment with it in your Windows or macOS React Native apps, head over to our guidance page to learn more about it.
What We've Been Doing
Saying that working from home has taken some getting used to would be an understatement - it's been an incredible, eye-opening, stressful, and amazing adventure so far, obviously for many reasons both within and outside of work.
However, that hasn't stopped us from trying to stay connected (virtually) with the passionate and awesome community that is React Native and cross-platform developers.
Check out some of the events we've done and will be doing:
React Wednesdays with digitalprimates
In mid August we connected with the folks over at CodeItLive to talk about React Native on Windows and macOS.
Check out the recorded stream below or read all about it in their blog post.
Looking a bit forward, check out the React Native EU conference hosted by Callstack, where our very own Steven Moyes will be presenting about React Native for Desktops and Dual Screens.
This talk covers building React Native apps that target Windows, macOS, and the new Surface Duo device - Check it out!
Coming up next
On top of our continued quest to stay on the latest version of React Native core, there's a lot we're also looking into all the time on our GitHub repo to help deliver the next best thing for you every release.
Get Macos Github
For APIs that includes things like flushing out mouse and keyboard support, experimenting more with Hermes on Windows, and of course adding Windows support to even more community modules, like react-native-gesture-handler, react-native-svg, react-native-config, and more!