Highlights from Chain React Conference 2017
Returning to Seattle via train from ChainReactConf in Portland, I decided to take the opportunity to put together some of what I found interesting. Below are the memorable pieces from the talks in chronological order.
The Dark Art of Bundlers
The conference started off strong with Mike Grabowski going through an introduction of the basics of JS bundling and the reasons they begin in the first place.
He then took the audience through his attempt to produce his own React Native packager that would be compatible with Webpack to avoid the Facebook specific quirks and dependencies of its recently packager named Metro.
The result ended up being a new tool named Haul which, by virtue of being built on Webpack, can leverage TypeScript, npm links, and more.
React Native Sandpaper
The second talk from Brent Vatne was less focused on technical aspects, but rather what developers have come to accept when it comes to getting started and then resolving the various issues that arise when developing React Native apps.
As developers gain proficiency with React Native, the efforts to produce training material has often been focused within blog posts, the production of training videos, or the authorship of books.
Rather than further fragment the available resources, Brent suggested we instead reinvest our time in improving the official documentation to make the landscape for future React Native beginners a more pleasant experience.
Realtime Event Processing, Streaming, and Subscription for React Native Using Cloud Services
Richard Threlkeld covered a lot of the recent efforts being made by AWS to handle external dependencies of a React Native applications.
These include identity management using Amazon Cognito, Amazon API Gateway for API management, AWS Lambda for business logic and on demand code. Amazon Pinpoint can be used for analytics and selective engagement using Push, SMS, and email.
For external assets, Cloudfront can serve large files for use with react-native-video. Uploading large files can be handled using TransferUtility.
All of these can be explored using the AWS SDK for React Native.
PayPal Checkout with React Native
Poornima Venkat demonstrated how PayPal currently handles payment processing within merchant apps and their upcoming solution that leverages React Native.
PayPal has used React Native to deliver custom experiences based on remote bundles tailored to individual clients’ needs. They also have delivered a rich experience despite not benefiting from first party integration within the OS.
This talk from Nader Dabit was among the least technical of the conference. It focused on the future aspects of computing, including the eventual diminished appeal of the cloud, Augmented Reality’s growing prominence, and references to futurists’ predictions.
Accepting Mobile Payments with React Native
Naufal Kadom’s talk explored his efforts to take the new payment API that exists in the latest versions of some browsers to a native experience within React Native.
Why we Need an App Browser
Ken Wheeler discussed the limits of the state of web browsers while exploring his own solutions that allow for downloading remote code that can be run using React Native using a custom built browser.
Breaking Down React Native Bridging
Peggy Rayzis discussed the reasons one may need to write native code to interact with React Native using its bridge approach. These include the integration of third party SDKs or if performance within JS alone is insufficient for certain edge cases.
Using rn-snoopy, she described how one can diagnose issues with MessageQueue.js that may be causing congestion.
For native code, the pros and cons of Objective C vs Swift and Java vs Kotlin were mentioned with a strong favoring towards Kotlin for Android.
Native modules were discussed and a solution to boilerplate fatigue was addressed by using her npm module react-native-create-bridge which will scaffold a native module in iOS and/or Android in the language preferred while also linking them to their respective native project files.
APIs from Past to Present
Eric Baer presented the history of APIs from the initial RPC approach to Microsoft’s failed attempts to address its short comings using SOAP including a high degree of complexity and verbosity.
REST was presented as a swing of the pendulum away from tooling based approaches with the resulting inflexibility from a consumption perspective, chattiness, and lack of introspection.
GraphQL is the best approach we have currently as it allows for predictable results, a progressive disclosure of simplicity, and a declarative description of data requirements.
GraphQL was hailed as still not being a silver bullet. Analytics and monitoring are being improved and the default partial results for partial failures can be confusing despite likely being the best of less desirable alternatives.
Zero to DevOps
Ram Narasimhan dug deep into the benefits one can leverage by adopting Microsoft’s mobile tooling. These include a new CodePush UI, specific distribution groups for testing updates, a full suite of real devices in the cloud for testing, and integration with CI that should save React Native developers a lot of time once their apps have gone live.
React as a Platform
Leland Richardson urged a consideration of a future where UI construction has become homogenized using a standard set of primitives. The burden of context switching between platforms would be greatly reduced while still allowing for escape valves to handle platform specific considerations.
These primitives include basic components, layout, interaction, animation, and utilities for branching.
Current solutions exist in the form of react-native-web and react-native-primitives while allowing for visualization via Victory.
When to go Native
Harry Tormey related experiences as a former native developer to building apps with React Native.
Callouts included the state of navigation solutions with their advantages and drawbacks. More developers are coalescing around the JS based react-navigation as it improves. The latest native solutions are still rough and may likely never be capable of handling all hybrid use cases with existing native code.
Building Stellar User Interfaces with React Native
Alex Kotliarskyi described the differences in expectation as an input to one’s experience with native apps.
One must be aware of the diminished experience a user will have if the app does not feel right as a result of direct manipulation, loading of data, or text inputs not being handled properly.
UI Components within React Native may take 10% of the time to implement within React Native, but he stressed that does not mean a developer is 100% done.
Animation and gestures are essential tools for native development and experience on a real device is the only way to ensure an acceptable experience.
From Idea to App Store
Chris Ball walked through all the myriad steps one must not avoid to ensure a successful submission to respective app stores. These include the selection of third party libraries including camera components, pinch and gesture libraries, how to glean an image from a view, and how to accept real time data pushed from GraphQL subscriptions.
Focusing on a single platform was recommended, with a suggestion of Android considering its quirks and fragmentation.
A variety of tools to generate required assets such as rn-generator-toolbox and react-native-statusbar-alert for handling offline states were recommended.
Fastlane was suggested as a means to validate bundles prior to submission to the app stores.