Issue #26

Logo for React Native Newsletter

Assorted good things

React.js Conf announced! February 22 & 23 2016 in San Francisco
React.js Conf announced! February 22 & 23 2016 in San Francisco

Good news everyone! React.js Conf is back for a 2nd year! Last year I streamed the entire thing from home and it was the best conference I've ever virtually attended. This year I'm very fortunate to be able to help out with organizing it and attending in meatspace! So if you have any questions / concerns please reach out to me @notbrent on Twitter. I am so excited for this.

The Call for Presenters is open until December 13th at midnight PST - we have space for 18 thirty-minute talks and 10 five-minute lightning talks. I strongly encourage you all to at least consider submitting a proposal!

Ticket sales open on Monday, December 21st and we expect them to sell out very quickly. See important dates here.

Best ways to get a ticket to React.js Conf 2016
Best ways to get a ticket to React.js Conf 2016

Submit a talk proposal that will entertain, excite and enlighten attendees about something they care/should care about, relevant to front-end development or their careers as developers. Selected speakers have their travel expenses and ticket covered.

Submit a killer lightning talk proposal. Selected lightning talk speakers will get a free ticket.

Enter this contest from ReactJSNews - may the best post win.

Enter an upcoming contest from this very newsletter & Exponent that will be open next week and have two tickets up for grabs! (Plus a signed portrait of a React team member, of course!). More details next week.

Four more collaborators added to the React Native repo!
Four more collaborators added to the React Native repo!

“join us in welcoming @_cdro, @jain_chirag04, @satya164 & @skevy as community collaborators on React Native! look out, 841 issues. err.. 843.”

Despite the reinforcements, the issue count is currently at 853! @mkonicek wrote a bot to respond to issues with more guidance on what is an appropriate issue, check it out here, hopefully that helps!

And hey, you don't need to be a collaborator to help! You can help people solve their issues or fix bugs that you were going to just report, pitch in however you like!

Dirty-up and execute top-down (Blog post)
Dirty-up and execute top-down (Blog post)

"One common pattern when implementing user interface optimizations is to compute some value for a node where the computation involves looking at neighbor nodes and want to keep this value updated when the tree is mutated.

In this article, I'm going to explain the pattern we implement to solve this use case on various places in React Native."

Building 3 React Native Apps in One Summer (Blog post)
Building 3 React Native Apps in One Summer (Blog post)

"TL;DR React Native allowed our team the ability to pivot into a mobile solution that we’re proud to have built. It’s easy to learn, has a growing community of supporters, and is itself agile with it’s component-based hierarchy."

Free "Getting Started with Redux" screencast series by @dan_abramov on @eggheadio
Free "Getting Started with Redux" screencast series by @dan_abramov on @eggheadio

"Managing state in an application is critical, and is often done haphazardly. Redux provides a state container for JavaScript applications that will help your applications behave consistently. Redux is an evolution of the ideas presented by Facebook's Flux, avoiding the complexity found in Flux by looking to how applications are built with the Elm language. Redux is useful for React applications, but React is not a requirement! In this series, we will learn the basics of Redux, so that you can start using it to simplify your applications."

How to bridge a Swift View (Blog post)
How to bridge a Swift View (Blog post)

The title is pretty accurate here, @browniefed explains how to bridge a native view in Swift!

How to Bridge an Objective-C View Component (Blog post)
How to Bridge an Objective-C View Component (Blog post)

Maybe you're more into Objective-C than Swift, this is another post by @browniefed, this one shows how to bridge FLAnimatedImage (a gif image player) using ObjC.

More from React Native Radio
More from React Native Radio

@tadeuzagallo is a total boss. He quietly toils away on React Native iOS at Facebook London and has racked up 279 commits on the open source repo -- the 2nd highest! He works a lot on the bridge and performance, check out this interview he did with the React Native Radio folks.

Additionally, since this took me a bit over a week for this issue, check out another interview from React Native Radio, this one with @browniefed who you might recognize from the above two blog posts -- ironically about bridging. You can listen to that one here.

Building a Native Soundcloud Android app with React Native and Redux (Blog post)
Building a Native Soundcloud Android app with React Native and Redux (Blog post)

"Seven months ago, React Native for iOS came out. I built the ShenJS app for the 2015 JSConf China the day after the release. It was more out of curiosity than anything else .At Wiredcraft, we've also been building apps with the Ionic framework (Cordova + Angular.js) for one of our clients, so it' only fair that I compare these two..."

Building an enterprise mobile app using React Native (3 blog posts)
Building an enterprise mobile app using React Native (3 blog posts)

We've made it people.. we're in the enterprise.

React Native: Auth0 Login + Firebase (Blog post)
React Native: Auth0 Login + Firebase (Blog post)

A tutorial on how to use Auth0 Login and Firebase with React Native. Yeah I know I just rephrased the title. Auth0 is a really neat tool for saving you the hassle of building your own authentication system and I think we're all familiar with Firebase as a backend-as-a-service. Nice post @mhollweck!

Creating Company name search app with React Native (Blog post)
Creating Company name search app with React Native (Blog post)

"TL;DR; I have created a Company name search app using React Native in just 3 days. I loved the React component composition and CSS-like styling."

Changing Background Color in React Native RootView (Blog post)
Changing Background Color in React Native RootView (Blog post)

A useful little protip from @jaygarcia to prevent a white flash in between your launch screen and app loading when your launch screen and app have a background colour that is not white. Yeah that's confusing just read the post, it has pictures!

Highlights from facebook/react-native

React Native 0.16.0-rc released
React Native 0.16.0-rc released

Click through for the release notes, written up by @jsierles himself! Thank you to the 80 contributors that made this release possible, my parents for always believing in me and waking up before work every morning to drive me to practice, Haley you my world girl, and my friends at Exponent. Just kidding I had almost nothing to do with this release.

Add Polyline support to MapView on iOS
Add Polyline support to MapView on iOS

So fashionable, yet utilitarian. Polylines. Thanks @timfpark of Microsoft! You folks have been killing it recently in the OSS world.

Added support for custom color and image for map annotations
Added support for custom color and image for map annotations

More fun with MapView on iOS! Now you can customize the colour (oddly enough @nicklockwood spelled it "color" in his commit message, a slight betrayal of his native tongue) and image for annotations.

Add onLoadX support for Image on Android
Add onLoadX support for Image on Android

As the title suggests, this commit adds support for some onLoad events on Images on Android. Currently supported are: onLoadStart, onLoad, onLoadEnd. Unsupported events are onError and onProgress.

Open source SwipeRefreshLayoutAndroid
Open source SwipeRefreshLayoutAndroid

Neato! Last week we saw this functionality added for iOS and now we have native pull to refresh on Android too. Thanks @mkonicek, if it was February I'd ask you to be my valentine.

Added method to set thumb image on iOS
Added method to set thumb image on iOS

Look out for puns, everyone.

Update Android Touch events
Update Android Touch events

"This moves Android touch events to parity with iOS. The locationX,Y value passed to js now is view relative to the view that is handling the touch. The pageX,Y is now relative to the root view."

Fix flaky scrolling for TextInput when using rich text
Fix flaky scrolling for TextInput when using rich text

Another improvement to TextInput to better support rich text inputs.

"This diff fixes the jumpy scrolling for multiline <TextInput> when using nested <Text> components to implement rich text highlighting.

The fix is to disable scrolling on the underlying UITextView, and nest it inside another UIScrollView that we control."

Refactored module access to allow for lazy loading
Refactored module access to allow for lazy loading

Another nice perf win here, this one improving initial load time:

"Out of the 65 modules included in UIExplorer:"

  • 16 are initialized on the main thread when the bridge is created
  • A further 8 are initialized when the config is exported to JS
  • The remaining 41 will be initialized lazily on-demand
Further improvements in RecyclerViewBackedScrollView (Android)
Further improvements in RecyclerViewBackedScrollView (Android)

"Changed ListView to use onLayout and onContentSizeChange (new) events instead of measure. Updated ScrollView implementation to support contentSizeChange event with an implementation based on onLayout attached to the content view. For RecyclerViewBackedScrollView we need to generate that event directly as it doesn't have a concept of content view.
This greatly improves performance of ListView that uses RecyclerViewBackedScrollView"

@kmagiera you are a king.

View recycling in JS
View recycling in JS

This could be huge for performance.

"In this diff I introduced new UIManager method: dropViews. Instead of removing views from tag->view maps when they are detached we keep them there until we get a call to dropViews with the appropriate tag. JS may keep a pool of object and selectively decide not to enqueue drop for certain views. Then instead of removing those views it may decide to reuse tag that has been previously allocated for a view that is no longer in use.

Special handling is required for layout-only nodes as they only can transition from layout-only to non-layout-only (reverse transition hasn't been implemented). Because of that we'd loose benefits of view flattening if we decide to recycle existing non-layout-only view as a layout-only one.

This diff provides only a simple and manual method for configuring pools by calling ReactNativeViewPool.configure with a dict from native view name to the view count. Note that we may not want recycle all the views (e.g. when we render mapview we don't want to keep it in memory after it's detached)"

Another @kmagiera special.

Revamp YellowBox for Warnings
Revamp YellowBox for Warnings

"Revamps the former WarningBox as the new YellowBox component with the following changes:"

  • Default to enabled (in DEV) with a console.disableYellowBox flag to disable it.
  • Added a console.ignoreYellowBox property to ignore warnings by string suffix.
  • Now handles console.error calls with strings that start with Warning:.
  • Removed logic that persists the list of ignored warnings.
  • Displays only up to four warnings (before it requires scrolling).
  • Minor tweaks and polishes to the user interface.
  • Added support for React Native Android.
Remove ScrollView support from UIManager, remove mainScrollView(delegate)
Remove ScrollView support from UIManager, remove mainScrollView(delegate)

Nice little refactoring that makes ScrollView internals more similar between iOS and Android and cleans up the UIManager from unrelated concerns.

Add rotateX and rotateY transforms to Android Views
Add rotateX and rotateY transforms to Android Views

Pretty much what the title says.Thanks @felipemartim!

LayoutAnimation support for Android being worked on
LayoutAnimation support for Android being worked on

Unfortunately this was reverted soon after because it broke the build but I hope to see it land again soon!

Add Networking resource module
Add Networking resource module

Good discussion here around a feature that has been asked for several times in the past: prefetching/preloading images. As a bonus, this PR supports loading fonts over the network as well. Thanks for pushing this forward @sospartan and @nicklockwood!

Highlights from the community

rnpm/rnpm
rnpm/rnpm

"React Native Package Manager built to ease your daily React Native development. Inspired by Cocoapods, fastlane and react-native link it acts as your best friend and guides you through the native unknowns. It aims to work with almost all packages available with no extra configuration required."

A cool project from @grabbou and @Kureev to try to solve the laborious process of adding a library with native dependencies to your project, and provide other useful helpers through plugins.

mhollweck/react-native-item-checkbox
mhollweck/react-native-item-checkbox

Neat little library to add a customizable checkbox to your project. Your selected icon can even be a tree! That's my nature for the week, thanks.

fixt/react-native-digits
fixt/react-native-digits

Digits is a great tool for authentication - you just enter your phone number and it texts you a code which you then enter into the app and you're in! This React Native plugin bridges Digits on both iOS and Android. See more more information about Digits here.

marmelab/Posters_Galore_Android
marmelab/Posters_Galore_Android

"An experimental Android application to easily buy posters, built with React Native, using Redux and a REST API."

This is extremely useful if you're still in college and want to learn React Native / Redux while also buying posters to decorate your dorm room! Might I recommend a Scarface poster? Or maybe Bob Marley? Pink Floyd? Bob Dylan? Pulp Fiction? Che Guevara? "The Kramer"? John Belushi wearing a "College" sweater in Animal House? Or for the more refined palette, perhaps an Einstein with his tongue out or a print of a Dali painting.

Qwikly/react-native-router-redux
Qwikly/react-native-router-redux

react-native-router-redux - Router component to be used in your React Native redux applications. Packed with Nav and TabBar support.

New version of Microsoft/react-native-code-push!
New version of Microsoft/react-native-code-push!

Now supporting Android! And you can check download progress when updating your bundle!

MRN - Material React Native API
MRN - Material React Native API

These docs are really great and include runnable examples on Appetize!

ProjectSeptemberInc/gl-react-native
ProjectSeptemberInc/gl-react-native

"OpenGL bindings for React Native to implement complex effects over images and components, in the descriptive VDOM paradigm" -- now supporting Android! Just incredible work here, love it.

Friends of the newsletter

Appetize.io
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!

Goodbits
Goodbits

"Newsletters should take minutes, not hours. Goodbits helps you quickly build email campaigns." That's their thing. True story, I once wore a Goodbits tshirt while cycling across the Golden Gate bridge. If you've read this far, you should probably at least try out Goodbits, because clearly you have time on your hands.

That's it for now! Ping me on Twitter @notbrent if you have anything that you would like me to share next week.