We use the initialNumToRender prop to help out with rendering long lists like that - dunno if that's one of your performance bits, but it was a big help to us!
We've considered using it for our interactive-exercises code (because it's shared between web and mobile) but haven't made concrete plans yet to make that change. (For now, our interactive exercises are still an embedded webview wrapped in React Native "chrome".)
We have a redux store where we keep our data, and much of the "have you watched this video" or "have you completed this assignment" data gets persisted to disk, so if a network failure happens we can just try again when the user's device is back on!
(Does that answer your question?)