I tried a few different approaches. Most React apps use the flux architecture. So I tried using Alt and then later switched to Redux (they are both libraries for building apps using the flux architecture). After a while I realised I didn’t get that much benefit out of using either of those, as minimongo acted as a store (which is basically the core of the flux architecture), and in combination with Meteor’s ReactMeteorData mixin, I basically had a simpler, more native version of flux. So I’m still using flux, just not any flux libraries.
I’m working on a large app, so I wanted my code to be modular. At first I was using an all packages approach. It worked pretty well, but as it grows, it still become a bit of a pain to manage. Then I discovered Webpack, and more specifically this Meteor Webpack boilerplate. Using webpack is definitively the way I would recommend. It has a lot of advantages (see the boilerplate readme), my favourites of which are code splitting (you can split your code into asynchronously loaded modules to make your initial page load way smaller), and hot module replacement (or whatever it’s called), which basically replaces Meteor’s hot re-load when React code changes to only reload the React components that have actually changed (while preserving their state). This means I see the changes in under a second, rather than the 20 - 25 seconds Meteor takes to rebuild the entire app every time I make a change.
Using Webpack is quite different from writing a traditional Meteor app, but it my opinion it’s the best fit for using React in Meteor (at least for medium to large apps). You’ll lose things like Meteor’s way of automatically including files (you have to require the files where needed yourself). On the other hand, your code becomes much more predictable, safer from a development perspective (no more relying on globals everywhere), and much easier to understand (you can see what external code is used in a file just by checking what it requires). Also, coming from an all packages approach, I had already lost Meteor’s auto including of files, and the traditional ES6 modules way of including files is much better than the way it is done with Meteor packages. The boilerplate I linked to uses ReactRouter (which I actually prefer over Flow Router/Iron Router), but there is another boilerplate by the same author that uses Flow Router (although that one doesn’t support code splitting).
Oh and another benefit of using Webpack is that you can easily add NPM packages to your app, so you don’t just rely on Meteor packages.
So to sum up, I recommend using Webpack with ReactRouter. Definitively use the flux architecture, but whether you want to implement it using a library or simply with minimongo and the ReactMeteorData mixin is up to you (see here for a discussion on that topic)