A framework for building native applications using React
MIT License
Bot releases are hidden (Show)
Published by ide almost 9 years ago
This release contains a small fix for running the packager on Windows (issue https://github.com/facebook/react-native/issues/3757). Happy Friday!
Published by foghina almost 9 years ago
react-native 0.14.0 is now available on npm.
See the docs on how to upgrade.
react-native upgrade
to get the latest project templates for the latest features.See the 0.14.0-rc changelog: https://github.com/facebook/react-native/releases/tag/v0.14.0-rc
Published by ide almost 9 years ago
react-native bundle
API changes:
entry-file <path>
based instead of url based.--platform <ios|android>
.--out
has been renamed for --bundle-output
.--sourcemap-output <path>
option to indicate where to put the source maps.--minify
option is now inferred based on the --dev
value. To get a production minified bundle use --dev false
as --dev
defaults to true.removeClippedSubviews
now defaults to true
on ListView
. This is generally the behavior people expect from ListView
so we're making it default to true
. If you see any issues please report them.react-native start
or npm start
Published by ide almost 9 years ago
react-native 0.13.0 is now available on npm.
We are no longer publishing React Native to CocoaPods but are maintaining the Podspec file. What this means is that you still can use CocoaPods to add React Native to your project but will have to make a small change to your Podfile.
Change this:
pod 'React', '~> 0.12'
to this:
pod 'React', :path => 'node_modules/react-native'
# or wherever your copy of react-native is
One reason for this change is that in practice many projects would end up getting two copies of React Native: one from CocoaPods under the Pods
directory and one from npm under node_modules
. The packager would find two copies of the same JavaScript files and report there was a conflict. So, having just one canonical copy of React Native (under node_modules
, with the copy under Pods
being a symlink that the packager ignores) resolves this issue.
Centralizing the distribution of React Native through npm also makes it easier for us to release updates since there's only one package repository to work with.
See the 0.13.0-rc changelog: https://github.com/facebook/react-native/releases/tag/v0.13.0-rc
Published by ide about 9 years ago
0.13.0-rc has been published to npm, JCenter, and CocoaPods.
The 0.13 release includes preliminary support for installing react-native
with npm 3 and running the packager on Windows. Please understand they might not work as well as they do with npm 2 on Mac yet, since this is the first release that supports them.
A note about Windows as a dev environment: As RN iOS requires a Mac and most of the programmers at Facebook and the RN developers use Macs, support for OS X is a top priority. However, we would like to support developers using Linux and Windows too. We believe we'll get the best Windows support from people using Windows on a daily basis. So to begin with, Windows support for the development environment is an ongoing community responsibility. This can mean filing issues and submitting PRs, and we'll help review and merge them. We are looking forward to your contributions and appreciate your patience.
setState
) scheduled with setImmediate
are now batched. Most apps will notice only a performance improvement, but it may reveal bugs in code that was relying on the precise timing semantics of React during setImmediate
processing. https://github.com/facebook/react-native/commit/4c74f01b85cb26a23292c44118ad1e28f43deaa3
keyboardShouldPersistTaps
defaults to false: https://github.com/facebook/react-native/commit/166a96bcee5ac5407be3dc3cc8803789e42b07a2
style
: make sure properties like width
or backgroundColor
are specified in the style
prop. https://github.com/facebook/react-native/commit/2ea3b9378498913b85691c69bad29acd89c08334
header_mappings_dir
from Podspec so that all header files are flattened when installing with CocoaPods. This improves compatibility with react-native-fbsdk, for example: https://github.com/facebook/react-native/pull/3248
const
is enabled by default: https://github.com/facebook/react-native/pull/2955
import
is enabled by default: https://github.com/facebook/react-native/pull/3175
Number.EPSILON/MIN_SAFE_INTEGER/MAX_SAFE_INTEGER
are polyfilled: https://github.com/facebook/react-native/commit/de717a8379d3c969fb3a373934376911badaf10e
rgba
syntax you now can use hex or names like "black" in Animated output ranges. https://github.com/facebook/react-native/pull/3177
processColor
is faster: https://github.com/facebook/react-native/commit/babdeb33ba8b4d0ca0a0b004ff103b4796b41188
Switch
component that wraps iOS and Android's switch components: https://github.com/facebook/react-native/commit/36cbe74f990369c793966b052bee4af3f2f4e401
fetch
, it will still be polyfilled but the original implementation will be saved as originalFetch
. This lets you do things like assign global.fetch = originalFetch
if you want to use Chrome's built-in fetch
when debugging in Chrome. https://github.com/facebook/react-native/pull/3293
navigationStyles
prop: https://github.com/facebook/react-native/pull/3028
bundleForClass
instead of mainBundle
when looking up resources: https://github.com/facebook/react-native/commit/9076b71ac307d2a45b30efec41414862638c6aeb
borderWidth
and borderColor
on Images: https://github.com/facebook/react-native/commit/2cc8acf2e3734397eb2b732e8219a18e8d0ebb6f
ViewPagerAndroid
component that provides paginated scrolling. Check out the example in the UIExplorer to see how it works and how to use it. https://github.com/facebook/react-native/commit/0a419650ce1a362f5301a62eabe802b8f4010f8e
@providesModule
pragma, the packager will now explicitly reject collisions: https://github.com/facebook/react-native/commit/9293e54085fc834778e1d25746e9d1875088e30d https://github.com/facebook/react-native/commit/502d277ff2a6bc6d589865e35e47998390dccf7d
--verbose
flag to debug slow project initialization. You will need to update your global npm package for react-native-cli
to get this feature. https://github.com/facebook/react-native/pull/3193
import
statements are now parsed: https://github.com/facebook/react-native/issues/1939
scrollsToTop = NO
for RCTTextInput placeholders: https://github.com/facebook/react-native/pull/3129
onEndReached
even when there are very few rows: https://github.com/facebook/react-native/commit/b0bdd4e45d6de4a8f60cffe8d82f063381088f6c
Published by ide about 9 years ago
List of 418 commits by 79 contributors: https://github.com/facebook/react-native/compare/0.11-stable...0.12-stable
Published by ide about 9 years ago
This release includes the initial version of React Native for Android. The official site and docs have been updated with information about the Android version.
Contributors: Moving forward, please include iOS and Android changes in PRs that affect both platforms.
0.11 also includes support for Node 4.0, which was recently released after the Node.js and io.js projects converged. We recommend using nvm to install the latest version of Node. Older versions of Node are not supported.
See the 0.11.0-rc notes for a more detailed change log: https://github.com/facebook/react-native/releases/tag/v0.11.0-rc.
0.11.0-rc has been published to npm and CocoaPods.
reachabilityDidChange
to networkDidChange
.initialProperties
argument. Use nil
if you have no initial properties to pass to the root React component.transparent
prop of Modal.onPressIn
etc - these event objects were already initialized so it was just a matter of threading them through.process
value hanging off of the global object, and only set the env
property of it. https://github.com/facebook/react-native/commit/a4e64196bcd9ea0f498351b7694281163023e4d3
init
and there was no guaranteed order that they would be set in. RCTViewManager classes can now implement viewWithProps:props
to better control this.RCTUIManagerDidRegisterRootViewNotification
and RCTUIManagerDidRemoveRootViewNotification
react-native 0.10.0 has been published to npm and CocoaPods. Fixes from 0.10-rc include:
shouldRasterizeIOS
prop has been fixed to use the screen scale for crisper renderingPublished by ide about 9 years ago
0.10.0-rc has been published to npm and CocoaPods.
NSNumber
values must annotate them using the Objective-C nonnull
keywordRCTViewNodeProtocol
in any of your native component librariesasync
and await
keywords have been enabled by default in the packagerNativeModules.ContextExecutor.setContextName
(iOS 8+ only). This name will show up in Safari's debug menu.NODE_ENV
!bundleURL
property on the bridge and reloading the bridge will use the new bundle URL+[RCTConvert NSURL:]
with a simpler substring check- (void)method:(int)a :(int)b
(https://github.com/facebook/react-native/commit/b812b0ee2e1136b409f78f04bc6665f55fd61a6f)defaultSource
for Image components (#2269)Published by brentvatne about 9 years ago
0.9.0-rc has been published to npm and CocoaPods! There was a short delay for this RC because we wanted to include several breaking changes to Touchable components all at once.
TouchableOpacity
and TouchableBounce
now use the Animated library to smoothly fade and bounce when touched. A consequence of this is that now we are introducing another View into the hierarchy, because we need to wrap the children in an Animated.View
. See the full details and upgrade path here.We wrote a codemod for fixing many (not all) of the call sites automatically. You can upgrade your code by running the following:
git clone https://github.com/cpojer/js-codemod.git
cd js-codemod/
node_modules/.bin/jscodeshift -t transforms/touchable.js <the folder where your js is>
controlled
prop has been removed and TextInput now acts as a controlled component by default. Remove the controlled
prop if you were previously using it. (https://github.com/facebook/react-native/commit/961c1eb42904a4d5516fd7939ba14bc0625309d3). If you were previously using value
to set an initial value, now use the initialValue
prop instead.onItemRef
prop was removed: Use a callback ref directly on the component you return from renderScene
instead (https://github.com/facebook/react-native/commit/4f904b5d68d1176cabf51b3a476d11b61fb07bd1)maxLength
prop. (https://github.com/facebook/react-native/commit/961c1eb42904a4d5516fd7939ba14bc0625309d3)horizontal
prop and calculate layout accordingly (https://github.com/facebook/react-native/commit/09236ccbe74775359dff14404214b7082e34cc8e)perspective
, rotateX
, rotateY
and rotateZ
are now available, and a demo of them is available under the Transform example in UIExplorer.TabBarIOS
api in line with NavigatorIOS
, it now supports the translucent
prop. (https://github.com/facebook/react-native/commit/9936a2406d4c886abfeca50b2c8527e354ab654e)PushNotificationIOS
now exposes presentLocalNotification
and scheduleLocalNotification
functions. (https://github.com/facebook/react-native/commit/a8cb47e0118219fa66216cd230912fd82465eb5d)NavigatorIOS
has a new prop called shadowHidden
that allows you to hide the hairline shadow (https://github.com/facebook/react-native/commit/2cb634bb0b564a5e4ddadd259df560a53c91e455)Content-Encoding:gzip
header with XMLHttpRequestTextInput
with editable
set to false
(https://github.com/facebook/react-native/commit/5006eca4a84e0d57a1f57e611081338cbc2fa2dd)allowsEdgeAntialiasing
for transformed views, fixes jagged edges when using the transform property. (see the smooth edges in the transform example above)Published by ide about 9 years ago
0.8.0 has been published to npm and CocoaPods. The major features of this release are the Animated library and the move from Node to io.js.
0.9.0-rc is scheduled for next Friday once some small breaking changes to the Touchable components are all merged.
The changes for this release are covered in the 0.8.0-rc and 0.8.0-rc.2 release notes (0.8.0 is the same as 0.8.0-rc.2).
Published by ide over 9 years ago
v.0.8.0-rc.2 includes a few commits to improve the stability of the next release.
Published by ide over 9 years ago
0.8.0-rc and 0.7.1 proper have been published to npm and CocoaPods! This round of updates includes some very exciting enhancements from both Facebook and the React Native community. Thank you to all the contributors who submitted PRs, reviewed code, and investigated issues!
The newest animation API is called Animated
, you can import it with var { Animated, } = require('react-native')
, as you would other React Native components. @brentvatne speaking here in saying that I'm incredibly excited about this - @vjeux and @sahrens deserve a round of 👏 for their hard work over the last few months. What we see in this API is a coalescing of great ideas from the best-in-class animation libraries, such as POP and the D3 transition API, with a declarative React flavor.
setState
to avoid re-rendering your entire component on each animation frame, and by leveraging the InteractionManager to defer expensive operations while an animation is running.Animated
.Going forward, it is recommend that you write your animations using Animated
or LayoutAnimation.
Check out the Animated docs, the UIExplorer Animation Example, and this other example to learn more.
We strongly encourage you all to implement the most difficult animations that you can imagine, share the results and create any issues if you have suggestions for how to improve the API. Enjoy!
Earlier this year, a fork of Node.js called io.js made its debut and most of the development effort on Node shifted to io.js. For most intents and purposes, io.js is the modern version of Node and the two projects are planning to reconcile by using the io.js codebase and the Node.js name; when they converge, Node.js will be based on io.js's code under the hood.
And now, some projects like jsdom support only io.js, which affects their dependents like jest. So because React Native has dependencies that require io.js and to generally stay up-to-date and benefit from performance and security improvements in its V8 JavaScript engine, React Native will target io.js.
There are several ways to upgrade to io.js:
Homebrew: brew is a great package manager for OS X. After installing brew, run:
brew unlink node # Removes "node" from your path
brew install iojs # Downloads the latest version of io.js
brew link iojs --force # Tell brew that you want to run io.js when you run "node"
To stay up-to-date, run brew update && brew upgrade iojs
.
nvm: nvm is an awesome tool for downloading and switching between different versions of Node and io.js. After installing nvm, run:
nvm install iojs-v2 # Downloads the latest version of io.js 2.x
nvm alias default iojs-v2 # Tells nvm to use iojs-v2 when you open a terminal
To stay up-to-date, run nvm install iojs-v2
. You may want to copy over your globally installed npm packages with nvm reinstall-packages iojs-v2.x.y
, where 2.x.y
is the specific version of io.js you were previously using.
OS X Installer: There is an installer for OS X at https://iojs.org/en/index.html. To keep up-to-date, re-download the installer each time the io.js community publishes a new one.
No APIs were deprecated.
textDecorationColor
, textDecorationLine
, and textDecorationStyle
. See UIExplorer and the documentation for the supported values.NavigatorIOS
has a new prop called translucent
. Set it to false
to turn the nav bar opaque.ListView
has a new prop called renderScrollComponent
. Set it to a function that takes props
and returns a scroll view element. This allows you to return custom scroll views.onLoadStart
, onLoadProgress
, and onLoadError
RCTResponseErrorBlock(NSError *)
instead of RCTResponseSenderBlock(id)
to pass errors back to JavaScript.NSSet
. RCTConvert
will automatically convert JavaScript arrays to NSSet
objects.--transform /a/path/to/a/transformer.js
to the packager to customize how it transforms your app's JavaScript source code.tick
has been renamed to pass iTunes Connect validation #1722Published by brentvatne over 9 years ago
After a few days of unavoidable delays, 0.7.0-rc and 0.6.0 proper have been shipped to npm! 0.6.0 proper is up on Cocoapods as well, and the 0.7 stable release will be pushed to it next week.
I want to send out a big thanks to everyone who submitted issues and pull requests this time around! Your efforts are much appreciated.
We mentioned in the v0.6.0-rc release notes that @tadeuzagallo had been working on improving the performance tooling, and now with v0.7.0-rc it's available for you to use!
The profiler integrates with Chrome Trace Viewer to give you fine-grained insight into both the JavaScript and Objective-C stacks in one place. You can also visualize VSync/frame deadlines (iOS is VSynced at 60fps) and enable "Flow events", which draws arrows to indicate function calls flowing into one another.
You will need to have trace2html
in your PATH
in order to use the profiler.
brew update && brew install trace2html
Command+D > Start Profiler
, perform whatever actions that you would like to profile in your app, then Command+D > Stop Profiler
.
After a short delay the results will be opened up automatically in Chrome. Let's look at the results from the profile we recorded above.
Not very useful at this high level, but we can tell that there are a couple places where we clearly exceeded the frame deadline of 16.67ms (60fps). You probably noticed this in the gif above - clicking the button did not immediately change the background color. In this case, it was because I inserted for (var i = 0; i <= 100000000; i++) { i * i }
into the onPress
handler to slow it down; in practice, this could be due to an actual performance issue in your app.
Clicking on DispatchFrameUpdate reveals that it took over 500ms to calculate the frame - more than 30x what it should take. But the time spent on DispatchFrameUpdate itself (the "self time") is insignificant, so we dig deeper.
Everything looks good except for the function call at the very bottom - there we find that the code for responding to the touch event is responsible for egregiously missing the frame deadline. If we were to move the slow code down into the render function, we would see this instead:
We can also select "Highlight VSync" to see where VSync is occurring:
And if we select "Flow Events" we can see how functions flow into one another.
Note: the simulator is unreliable for this kind of profile because the timing is not the same as on the device; you might notice the VSync values on the UI thread and JS threads are completely different in simulator profiles.
Navigator
(https://github.com/facebook/react-native/commit/4690983c10a60d84a98a2a6f8bdf9a1c39d2ef74). If you use nested Navigator
components, you must explicitly call navigation methods like push
, pop
, and replace
on the parent Navigator
instead of relying on the child to automatically delegate the call to its parent.require
resolution algorithm much more closely. When in doubt, specify the path to modules the same way you would with Node.@providesModule
directive is now scoped to each npm package instead of your entire app. This means that if you were requiring modules from another package using its @providesModule
name, this will no longer work. Instead, require the modules using the package's name like you would with Node.require
statements for React Native modules should go through the public interface:// This may pull in an unexpected version of `RCTDeviceEventEmitter` and `NativeModules`
var RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');
var RNKeyboardEventsManager = require('NativeModules').RNKeyboardEventsManager
becomes
// This will ensure that you require the correct modules, via the react-native package
var {
DeviceEventEmitter,
NativeModules: {
RNKeyboardEventsManager,
},
} = require('react-native');
onWillFocus
and onDidFocus
have been deprecated in favor of adding event listeners to the navigator: this.props.navigator.addListener('willfocus', this._onWillFocus);
and this.props.navigator.addListener('didfocus', this._onDidFocus);
assetRoots
and projectRoots
flags to the bundle
CLI command to conform with packagergetScrollResponder
to ScrollView
-based components, such as ListView
, to allow for better composabilitytextAlign: 'justify'
on iOSRCT_EXPORT_METHOD
(https://github.com/facebook/react-native/commit/90439cec26e5ba86ee4f7f12d5a7591cdd745e62 - also see @ide's blog post)node_modules
ListView
AnimationExperimental
for 32bit devices when fromValue
is doubletextAlign
for TextInput
Published by vjeux over 9 years ago
168 commits, 48 contributors.
We just shipped 0.6.0-rc and 0.5.0 proper to npm.
Last Friday, @brentvatne, @ide, @jsierles, @christopherdro, @dsibiski and @ccheever organized a big issue triage. They closed more than 200 issues, and properly tagged and found call to actions on the 200 remaining. In addition, they came up with a very useful document which lists the top 10 problems that are affecting the community. This is going to be very useful to prioritize our work.
When you are working on a large codebase, one developer cannot fit all the code in his or her head. So, when you want to work on something, the first thing that you need to figure out is where is the code that rendered this piece of UI. @jaredly and @frantic made this super easy by implementing Inspect Element.
In order to use it, press Command+D > Inspect Element > Tap anywhere on the screen.
It is loaded with features such as showing you all the styles applied to the element, the dimensions/padding/margin and ability to go up the hierarchy. This has the potential of greatly increasing your productivity! Let us know if you have more ideas on how to make it even more useful.
Facebook has been one of the first big adopters of ES6 and we have several people participating in the TC39 committee that designs the spec. Since the JavaScript transform landscape was almost inexistent several years ago, we implemented and used our own transpiler called jstransform.
Unfortunately, jstransform has a big architectural issue: it takes an AST as an input and plain text as an output. The consequence is that you cannot compose transforms easily, which is very problematic when you want to try out new language features. We started working on a new version that solves this problem with a project called Recast, which is doing AST -> AST transforms.
Recast is the framework powering esnext and regenerator. While those projects were moving along, a new player entered called Babel (previously 6to5) and all the people working on esnext and regenerator joined forces with Babel.
At this point, Babel supports more features than jstransform, has a better architecture and a super active community. We already switched to Babel for React and we followed suite on React Native thanks to @amasad, @DmitrySoshnikov and @jaredly.
Another advantage is that we can now run the awesome ESLint on the raw source instead of the transformed source which is going to make it much more useful.
It shouldn't impact you right now as we did not enable any new transforms, but we're looking into letting you configure which transforms you want to use.
In all the popular UI frameworks such as web, iOS, Android, the default background color for elements is transparent. This is usually what the developer expects but it makes it a hard problem for the compositing engine: every element that needs to be displayed on screen can potentially be blended with the elements that are underneath. This means that you have to do multiple passes and lose some of the parallelism of the GPU.
What we found is that the vast majority of the time, what the developer wants is not to have a transparent background color but to inherit the background color of its parent. When doing that, the job of the compositing engine is much simpler: since the background has a solid color, it will not need to compute what's underneath to get that pixel color.
There are some rare but legitimate use cases when this propagation is not correct, for example if you want to overlay transparent images on-top of each others. In this case, you can write ``style={{backgroundColor: 'transparent'}}` to lose this optimization and go back to the platform default.
In order to figure out how much blending is happening, you can turn on the setting in your simulator:
This background color propagation mechanism existed since we open sourced. However, there were many cases where it didn't remove blending as expected. For example, it turned out that giving a solid background color to images did not help the compositing engine the way it was implemented. @nicklockwood fixed this particular case (and many more) and you can see that images are now green :)
Before After
As you can see, there's still some red in React Native part and some red in default iOS components. There's still work to do to improve blending, but the new defaults are much better :)
The best way to improve performance is to be able to measure and visualize what is happening. This is something that is challenging with React Native since we have to profile two completely different stacks: obj-c and js. @tadeuzagallo figured out that he could add profiling markers in the code and export it in a format that's compatible with Chrome Trace Viewer to be able to visualize it.
Having this new tool, it helped us find out inefficiencies in the code. For example, on every JavaScript round-trip, we found out that we traversed the entire view hierarchy on the main thread! The reason for that particular case is that we have a method called reactBridgeDidFinishTransaction that was used to do some cleanup for 3 components: ScrollView, TabBarIOS and NavigatorIOS. It was implemented in a naive way where we would traverse all the views and for each one check if it implements that method and if yes, call it. It took 10ms on an iphone 6 to traverse a view hierarchy of 5k elements!
Once we discovered that, we changed it to register those components so that we only traverse a list of a few elements and we fixed this big inefficiency as you can see in the screenshot below:
The process to get this trace is currently very manual but I wanted to let you know that we're working on it and that it is likely going to help us diagnose more performance issues in the future!
StatusBarIOS.Style.default
and StatusBarIOS.Style.lightContent
were removed in favor of the strings "default"
and "light-content"
, respectivelyPlease let me (@vjeux) know if you run into any trouble upgrading.
<Touchable*>
<ListView>
now supports a renderSeparator propPublished by vjeux over 9 years ago
45 commits and 21 contributors.
One of the reason you may want to use React Native is because you can build applications that perform well with it. As React Native matures in term of features, we are starting to invest a lot more into performance. If you open the developer panel via Cmd+Ctrl+Z, you will see a new option called "Show FPS Monitor".
When activated, you will see two FPS counters, one for the UI thread and one for the JS thread. The best way to make an application fast is to fix the slow parts. This is where performance investigation tooling is required. This one lets you do a first triage between issues from the UI thread and the JS thread. This is the first of a series of performance tooling we're working on.
Please, do not ever profile on simulator as it doesn't reflect at all what on device performance is going to be. Also, make sure that you dev mode is turned off as it introduces non trivial overhead to provide great developer warnings.
Facebook is being used by 1.4 billion people around the world and we want every single one of them to have the best experience possible. Accessibility features are an important tool and one that has traditionally been very developer unfriendly.
Our goal with React Native is that if you write your app without thinking about accessibility: it will be 80% there. We want you to fall into the pit of success.
In order to make an app accessible via Voice Over, you need to identify all the interactive elements and mark them as accessible with a label. It turns out that if you follow React Native best practices, most of your interactive elements are going to be implemented via <TouchableHighlight>
, <TouchableOpacity>
or <TouchableWithoutFeedback>
. We made sure to mark those as accessible. In order to compute the label, we traverse the hierarchy and concatenate all the text nodes. Most of the time it gives a good result. The place where it breaks down most often is when the button is an icon. In those cases, you need to specify the label yourself via the accessibilityLabel
prop.
To check if your app is accessible, you can enable the Accessibility Inspector by doing: Hardware > Home > Settings > General > Accessibility > Accessibility Inspector. And go back to your app via Hardware > Home > Your app.
All the text outside of touchable elements is also marked as accessible by default as the user is likely going to want to know about it. Since React Native uses native components such as UIScrollView and UIButton, you also get their great accessibility features.
As you can imagine, those heuristics do not work all the time. You can polish the accessibility via the following props: accessible
, accessibilityLabel
, onAcccessibilityTap
, onMagicTap
, accessibilityTraits
.
This is an area that's often overlooked and where we hope React Native can shine. If you are interested in helping out with this effort, please let us know.
AdSupport
is no longer linked by default. The mere existence of code that uses the advertising id in your app triggers an additional verification step during the App Store review process :( If you are using it, you'll need to manually link it to continue using it.RCTNativeAppEventEmitter
as mentioned in the documentationreact-native init
in an already initialized folderonLayout
is now available on <ActivityIndicatorIOS>
and <TextInput>
<Navigator>
91 commits, 23 contributors, 9 days
Websocket
polyfillAlertIOS.prompt()
letterSpacing
style property for <Text>
borderTopLeftRadius
, borderTopRightRadius
... style property on <View>
ref.getNativeHandle()
and ref.getNodeHandle()
no longer exist. The replacement is React.findNodeHandle(ref)
createReactIOSNativeComponentClass
or ReactIOSViewAttributes
to create iOS wrappers, now you should use requireNativeComponent
<ScrollView>
ruby
dependency<NavigatorIOS>
<Navigator>