Holmgren traces his team’s path from Flux to Redux, which they used on React Native projects starting in 2015. He cites Redux’s learning curve, boilerplate, side-effect handling, and inconsistent team patterns as reasons they explored other options.
Jamon Holmgren
Speaker
Jamon Holmgren, co-founder and CTO of Infinite Red, presents his team’s approach to React Native application state at React Native EU 2019, hosted by Callstack.
Holmgren describes MobX, MobX-React, and MobX-State-Tree as a connected state-management setup. Models define typed data, actions control changes, and asynchronous flows can use MST’s `flow`. Components wrapped in `observer` rerender when the properties they read change.
Holmgren recommends hooks for local component state and React context to access MobX-State-Tree stores. For navigation, he describes keeping screen parameters in a navigation store and using React Navigation’s hooks. He also explains how MST can manage asynchronous permission flows.
Holmgren recommends the Ignite Bowser boilerplate, which includes MobX-State-Tree, MobX-React, and React Navigation. He introduces React NavX as an experimental library intended to connect these tools, provide persistence, and remove about 500 lines of glue code. He says the patterns are more established than the new library, which was still broken at the time.
Takeaways
- Use hooks for state that belongs only to one component, and shared stores for state used across screens.
- MobX-State-Tree actions make state changes explicit while supporting asynchronous flows with `flow`.
- With MobX-React observers, components can update based on the store properties they actually use.
- Treat navigation parameters as application state when screens need to retain them across navigation.
- Evaluate React NavX as an experiment; Holmgren presents its underlying MobX patterns as more proven than the library itself.
Mentioned in this talk
Search inside this talk
What was claimed 13
- role atJamon Holmgren is maintainer of Gluegun at Infinite Red
“I am the co-founder and CTO of Infinite Red.”
YouTube Verified2 sources· Talk
- uses
“For navigation, we recommend React Navigation. That's what we use.”
YouTube Unverified1 source· Talk
- builtInfinite Red built Ignite Bowser
“Ignite is a CLI that generates a React Native app from a boilerplate. The boilerplate we currently recommend is Ignite Bowser.”
YouTube Unverified1 source· Talk
- usesInfinite Red uses MobX
“we've started to see a pattern emerge.”
YouTube Unverified1 source· Talk
- uses
“Over the last year, we've started to see a pattern emerge.”
YouTube Unverified1 source· Talk
- metricReact NavX: Currently removes about 500 lines of glue code
“It currently removes about 500 lines of glue code from your app”
YouTube Unverified1 source· Talk
- integrates withReact NavX integrates with MobX-React
“These are all first-class concepts within React NativeX”
YouTube Unverified1 source· Talk
- integrates withReact NavX integrates with MobX-State-Tree
“These are all first-class concepts within React NativeX”
YouTube Unverified1 source· Talk





