A team of Harvard historians had an idea for improving the quality of online discourse through digital tools. Threadable is a new way to engage with books: imagine an e-book where you read alongside expert guides, within small reading circles.
historians. building an app. it went better than you would think →
01How do e-books work?
This project started off as a design contract to build a prototype. The founders would take the Figma prototype to conduct some user testing and see if there was market fit. When I heard about the project, however, I decided to build a quick React Native app to see if it was even possible.
The first problem I had to solve: how do you actually read e-books? The standard for digital books are .epub files — these can be opened by iBooks, Kindle, Nook, and more. Under the hood epub files are just HTML and CSS. This is what allows them to resize so easily and fit so many devices.
But how can you read a file built upon HTML in a native app with no browser? The first approach was to load a web view, package epub.js (an open source library) and preload the packaged library at build time. This sort of worked. The book loaded and you could highlight it, but we needed a way to send data back and forth between the web view and the native app. We also needed to overwrite the context menu that appears when highlighting text.
Something that was not possible at the time, although I eventually wrote an open source PR in Objective-C for react-native-webview to make it possible. So, I ventured into a new programming language to build it myself. I had never used Swift before and although the basics seemed straightforward, there were literally no examples out there of how to use Swift with React Native.
There was some trial and error, but eventually I was able to build our custom web view class that could be loaded in React Native, pre-packaged with epub.js, and a custom context menu that communicated with our native systems. To share my learnings, I created a YouTube video breaking down how to build React Native modules in Swift.
02From three ideas to one
Workshops and focus groups narrowed the concept to three ideas: read with friends in a virtual reading circle, read with expert commentary like a director's cut, or read in “thread mode,” where passages from multiple texts are strung together into a new narrative. We prototyped all three, then cut the scope down to small reading circles: enough to go to market and keep iterating.
Once circles were in the App Store, we layered guided commentary on top, so a historian could sit in the margins of Twelve Years a Slave with you and your friends. That meant a custom admin, built on the same tech as the native app, where guides write and manage their commentary and the team can see how readers engage. Along the way Threadable picked up a Fast Company Innovation by Design honorable mention in the Learning category.
03Tech stack
The front-end is React Native for iOS and React for the web app. The backend is built with Ruby on Rails but we integrate with Firebase for a lot of services (such as OAuth and push notifications). Files are stored in Google Cloud Buckets and we leverage BigQuery for analytics. Custom modules are built in both Objective-C and Swift.



“I don't know if I can even put into words the impact Scott had on me and my career. He taught me so much about problem solving, collaboration, mentorship, and how being a kind, patient, supportive engineer is just as (if not more) important than being a smart one!”