Thoughts from ReactEurope 2015

React Europe 2015, the first React conference in Europe, was a remarkable experience. The line-up of speakers was complemented by the incredible quality of the participants. Members of the Facebook team in addition to authors of React.js, React Native, ImmutableJS, GraphQL, Babel, Flux, React Router and Relay were approachable and willing to share what they’ve learned and what they’re planning. The audience demonstrated a deep understanding of technology that is still rapidly changing through a broad range of insightful questions.

The organizers should be very proud of themselves for putting together a program that was full of high-quality talks, and I fully intend on going next year.

Christopher Chedeau, an engineer at Facebook and one of the organizers of the conference, set the stage in his keynote address by emphasizing that the JavaScript community needs to be unified. He acknowledged that many of the people present may be coming to React from other frameworks but that it was critical that people be respectful, supportive and inclusive. He finished his talk by emphasizing that good DX drives good UX.

He stressed that this was a pivotal time for the JavaScript community to come together and for the best ideas to emerge naturally, irrespective of their origin. Chedeau’s comments were perfectly timed, given that the Node.js community has reconciled itself, and after over a decade of stagnation, the ES specification has just been harmonized. His talk was also an excellent overview of the entire JavaScript ecosystem in 2015.

In between sharing his beautiful conference notes, Michael Chan was able to charm his audience with his case for inline styles.

His slides are filled with humour and explain why keeping your style in your components encourages better maintainability of states in a code base. His belief that a “style” bug is no different from any other bug resonated with me, and I hope to revisit some of the work our team is doing in light of this talk.

He praised the work of the Radium team as well. I also see inline styles as a pre-requisite to doing sophisticated animations like those demonstrated in Cheng Lou’s talk on the new Animated library that is coming soon.

Cheng Lou and Spencer Ahrens both presented animation frameworks that I think will put the last nails in the ReactCssTransitionGroup coffin in favor of keyframe animation systems based on interpolation and curves.

Both did demos that were stunning with spring effects, adding/removing elements and complex layout manipulations on React Native and React in the browser. The approach is declarative and functional, making it easy to reason about, composable and allows for rich debugging tools, such as simulating onion-skinning.

I expect that a beautiful interactive web may be much closer than we think. The cherry on top was a demo from the react-router team which demonstrated smooth URI page transitions without the jankiness that often comes from routing between single page application pages. They wrapped up their talk with a solution to the ever-growing size of JavaScript applications with a progressive loading strategy based on the react-router.

Dan Abramov demonstrated the power of hot code reloading by doing a live demo that harkened to Brett Victor’s pivotal talk a few years ago about designing on principle. In the middle of his slide deck, he included a small Flux application based on Redux. He quickly demonstrated the power of a functional paradigm by reducing the store concept to a “reducer” function which negated the need to have even a central dispatcher. His debug panel made it effortless for him to seamlessly develop and debug his application mid-talk.

The Redux Flux implementation is an impressive distillation of the Flux concepts, and I would be curious to see it used in an isomorphic configuration or with complex data structures. It’s simplicity just feels right.

The server-side was addressed with a few excellent talks covering the different layers of a GraphQL stack. Facebook is in the process of open sourcing the remaining pieces in the coming weeks.

GraphQL is a battle-tested solution to the multi-client, multi-version, multi-consumer endpoint problem facing REST developers

As a Rails developer, what made struck me the most was the work around GraphQL. The GraphQL and Relay teams made a compelling argument for moving away from REST-based endpoints, especially when dealing with multiple platforms that will have differing JSON payload requirements. I’ve always found SPARQL and RDF truly fascinating technologies, but the querying languages were difficult to grok, and the tooling seemed heavy on both client and server.

GraphQL requires the developer to implement a type system that is nested and composable. These types can then be used to generate API documentation or even provide code hinting in an IDE. During the conference, they shared a draft specification and a reference architecture written in JavaScript. They tackled some of the big issues with current RESTful endpoints, such as deferring execution of some assets, parallelizing queries, pagination and query validation. Relay is expected hit the open-source community in the coming weeks.

I did notice that there was little mention of unit testing or testing strategies in general in any of the talks. I do take solace in knowing that Jest is still being actively developed within Facebook and that so far every step taken in open sourcing these tools has been carefully considered by everyone involved.

More profound than the technology which was demonstrated over these last few days — a spirit of openness and mutual respect demonstrated by those speaking.

I was deeply humbled by the incredible material that was shared at React Europe. If the community spirit demonstrated is maintained, it will no doubt further accelerate the level of innovation within the front-end web ecosystem.