Some thoughts after about a week of using React Native to rewrite Epilogue. It’s going well and has been fun to work in a new framework, knowing that it’s going to contribute to our long-term plan for mobile apps in Micro.blog. It’s not a throw-away distraction.
It’s only by diving in that I’ve realized how surface-level my experience with JavaScript really is. I’ve taken some time to experiment more with JavaScript promises and async functions. Years ago I bought the book JavaScript: The Good Parts, but I’m not sure I did more than skim it, and it’s probably way out of date for modern JavaScript.
I got pretty far into development over the last week even though I barely understood some of the React features I was using, like useState
. That’s okay. After I ship Epilogue 1.1, I’m going to go back and clean up a few things.
Xcode builds are slow and spin up the fans on my Intel-based MacBook Pro every time, but iterating on the UI and features is extremely fast because the JavaScript code can reload while the iOS app is running. In most cases, the UI refreshes automatically in the iOS Simulator when I save my Styles.js file in Nova. I rarely need to run a build in Xcode.
App file sizes are bigger, but not enough to matter. Epilogue 1.0 was a tiny 0.5 MB, and my latest build of Epilogue 1.1 is 2.7 MB. A much more full-featured app, Gluon for Micro.blog, is 8.6 MB. This appears to be a non-issue.
React Native is not new. It’s nice not to be on the cutting edge, because by now every problem I’m likely to run into has been solved. Some things I thought might be hard were easy enough, like handling the epilogue://
custom URL scheme.
I’ve collected all the blog posts in this series in a category on my blog.