|
|
Hey folks, I'd like to thank everyone that reached out to me after the request for some help putting the newsletter together! Chris Geirman (@geirmanc), and Lance Harper (@RoyalLance) have joined up with some much needed reinforcements, thanks a lot :)
|
|
React.js Conf Contest Voting Begins!
Entries to Exponent React.js Conf contest are in! We received 13 entries, definitely more than I anticipated! Check them all out and vote from the Exponent app, which you can download on the Google Play or Apple App Store (see https://exponentjs.com/ for links). Once you're in the app, it's as simple as this: http://imgur.com/a/Wczbi
Seriously, you should download Exponent and check these entries out. These 13 folks put a lot of work in!
|
|
React Europe 2016 - June 2-3 in Paris, France!
Wow, exciting! A conference in Paris, and I'll be speaking! If you missed me embarrass myself by attempting to use my actual voice rather than keyboard to speak at Reactive Conf, be sure to check this one out! I'll be doing a contest for this one too, stay tuned :)
|
|
React Native in an Existing iOS App: Dynamic Routing (Blog post)
"This guide is Part Two in our four-part series Using React Native in an Existing iOS App."
"Now that we have the ability to use a React Native View anywhere in our app, we need to be able to render different views for different use cases. In other words, we need a router. For this we’ll use the <Navigator /> component provided by RN."
|
Coding Apps with React Native at Exponent
Don't miss out on this great post from James Ide as he delivers insight for developers using React Native. Ranging from data flow to app structure to design and everything in between, he shares his expertise across several facets of app development at Exponent.
"One of the most important features of React Native is that it’s purpose is to build Facebook; it is a means to an end, not the end itself."
|
|
Reloading your React Native App like a Web page (Blog post)
If for nothing else, click through for the gif demo, awesome stuff.
"One of the core foundation of the App is the Navigation pattern based on URLs. As noted before, URLs mapping to Component stacks require that all screens can be rendered by themselves from just the URL. This dramatically simplifies deep linking, but it also has the ability to speed up the development process."
|
React Native Android (Blog post)
More helpful tips are found in another excellent post from TaskRabbit including suggestions on preparing existing projects for Android by including a Platform folder to contain classes and components that have platform specific dependencies.
Also included is a table listing the current differences in feature parity between iOS and Android. At a quick glance, one can see whether a feature on Android matches the functionality of its iOS counterpart, has a workaround, or has more work remaining.
This is very informative to those porting an existing iOS application to Android. Great work!
|
|
Thoughts on the future of mobile app development (Blog post)
"Arriving from a web development background, building native apps for iOS and Android feels like traveling back in time. Near-instant browser refreshes are replaced by slow compilation times, your trusty text editor has been switched with a powerful but bloated IDE, and deploying new features is suddenly a week-long process (for iOS, at least)."
|
|
The beginners guide to React Native and Firebase (Blog post)
David East has a fantastic post on how to get started using React Native and Firebase. Included is how to synchronize application state from a Firebase database using Firebase listeners, presenting the data in a ListView and adding new data.
|
React Custom Renderers (Blog post)
Nice blog post from author of react-hardware @iamdustan, "This article is intended to be a high level view of the developer experience a renderer should aim to provide based on my experience with React, writing a renderer, and exploring other custom renderers. Note that this is not a guide on how to write a renderer."
|
|
Breaking up Heavy Processing in React Native (Blog post)
In this instructive post by Kyle Corbitt, he describes the importance of not blocking the Javascript thread in React Native. He also discusses React Native's built-in strategies for accomplishing this as well as demonstrating his own helper utilities to avoid blocking user interactions via his next-frame repo.
While the approach suggested here can help you today, you'll find that in the real world with a lot of moving parts where many are interested in getting their share of cpu time we quickly stumble into the study of "cooperative multitasking".
|
JS.coach
react.parts is becoming js.coach. For those not familiar with react.parts, it's a listing of React and React Native libraries -- js.coach includes Webpack, Browserify, Babel and PostCSS libraries too.
|
|
Release v1.4.0 · rnpm/rnpm
A new version of rnpm! Click through for the changelog for more info -- the new commands functionality looks great! Well done @Kureev and @grabbou!
|
|
JsonDiffPatch
If sending large JSON files over cell networks to replace a locally stored version sort of feels like using a sledgehammer to sink a penny nail, then you might find this tool handy. It diffs two JSON files and builds a patch. 3G networks rejoice!
|
Create Arbitrary Animated Values (discussion)
A good discussion around some of the motivations behind the design decisions of Animated, and some of the challenges that are being faced currently.
Also, this repo is the start of putting together some good documentation for Animated, feel free to join in and help out! You can see the current version here.
|
|
Highlights from facebook/react-native
|
|
Make Hot Loading work on OSS
"After this diff, Hot Loading should work on OSS." - it didn't work for me last time I tried it but perhaps you'll have better luck! Send me a gif of it working to @notbrent and let me know what I did wrong.
|
|
Added `react-native run-ios`
"Works the same way as react-native run-android , but targets iOS simulator instead. Under the hood, it uses xcodebuild to compile the app and store it in ios/build folder, then triggers instruments and simctl to install and launch the app on simulator."
So good! Also notice - "since Facebook relies on BUCK to build and run iOS app, we probably won't use run-ios internally. That's why I'm putting this as public PR instead of internal diff." -- thanks @frantic :)
|
Implement initial WebWorkers API
"Implements a basic WebWorkers API that allows posting messages between the main JS thread and a worker background thread. It follows the existing webworkers API from JS. Currently passed memory needs to be JSON serializable and is copied (unfortunately, this is what webkit does as well, but with a more advanced.." @astreet is so smart.
|
|
Implement XHR timeout for Android and IOS natively
This property wasn't previously supported, now it is. Not much else to say. This is good. Thanks @klvs! I read your name as "kelvis" so to me you're like a more Kevin-like Elvis, although your actually name is Alex, I don't know, I'm going to stop while I'm only this far in the hole. Here's a photo of Kelvis, enjoy.
|
Remove npm 2 recommendation (now: npm 3)
It's not perfect but we've been seeing an increasing amount of issues related to module name clashes, so @ide went ahead and switched the recommendation in the docs to npm3. Don't forget to shrinkwrap!
|
|
Improve the message shown when bundle download fails
More PRs like this are always welcome! So next time you run into an unclear error message, take a second and think what you would like it to be and take a note then try to submit a patch for it later when you are done raging about it :)
|
|
Deprecated `scrollResponderScrollWithoutAnimationTo`
"This diff deprecates scrollResponderScrollWithoutAnimationTo and replaces it with an optional animated param in scrollResponderScrollTo . This is more consistent with our other APIs." - note that the old functions are currently still supported but will raise warnings.
|
|
Improved shadow performance on iOS
A nice free-win for anyone like me who has a thing for shadows. View shadows still don't work on Android, instead use elevation . @nicklockwood, my idol.
|
|
Highlights from the community
|
|
VansonLeung/react-native-keyboard-aware-view
Another solution to adjusting the View container when the keyboard appears. I'd love to see tabIndex built into React Native, but until then, solutions like these will be useful!
|
|
aerofs/react-native-auto-updater
You've no doubt already heard of AppHub, CodePush, and Siphon which all offer you OTA update solutions. Now AeroFS offers you an alternative.
|
lelandrichardson/react-native-mapview
Leland Richardson of Airbnb has been doing some great work on this MapView component, complete with visual examples. Check it out! It's pretty impressive.
|
|
adamterlson/cairn
"cairn - Simpler, string-based styling for React Native" - let's you do some fancy stuff like this: <Text {...style('text.header.h1.user')}>Primary User Header Text</Text>
Also, @adamterlson kind of looks like John Carmack so I trust him.
|
|
Friends of the newsletter
|
|
Appetize.io
I love these folks. They make rnplay.org possible and in doing so support the React Native community in a big way. They are also allowing us to use their simulators within the React Native docs! I am not paid to advertise for them, I'm happy to advocate for products that I believe in (see: this newsletter about React Native) - so check them out if you have any need for an in-browser simulator for iOS or Android! Go and upload an app, the first 100 minutes of simulator use are free!
|
Exponent
With Exponent you can create a new React Native project in one click and deploy it with a second click, making it available to anyone else who has the Exponent app (available on the App Store and Play Store). On Android, each of the apps opens in a new activity in the multi-tasker and can be saved to the home screen, like any other app. Over the next few months we will be rolling out other exciting features like dead-simple push notifications and support for popular native modules.
|
|
|
That's it for now! Ping me on Twitter @notbrent if you have anything that you would like me to share next week.
If you're reading
this on the web, you can subscribe to
get this delivered weekly to your email here!
|
|
|