Hey everyone! It's been a while since the last update, mainly because I've been diving deep into working on the markdown editor. I'm aiming to roll it out this weekend, but in the meantime, I wanted to give you a sneak peek (check out the attached video!) and share some of the behind-the-scenes reasons why this update is taking a bit longer.
I've had a few folks asking how Lemma was built, especially in terms of the language or framework used. In my regular gig, I'm a frontend developer specializing in React and React Native. So, it was a no-brainer for me to build Lemma using React Native. I'm actually pretty stoked about how native Lemma feels on iOS, even though it's not developed with Swift. It's mostly because I went all out to recreate the Apple Design Guidelines down to the tiniest pixel. I hunted down Figma designs of various iOS elements to get a solid reference for element sizes and padding between them.
Now, why's the markdown editor giving me more work? To really nail that genuine native feel, I've been crafting some native modules that I'm connecting to my React Native app. This includes things like the action sheet that pops up when you tap certain action bar items, and even that little pencil notification that shows up when you join a community. It's been a totally new experience for me building these modules; I'd never even touched Swift before this. So far, they've been quite manageable, mostly acting as wrappers around existing iOS elements or Swift libraries.
As you've probably guessed by now, the new markdown editor is also coded in Swift, specifically using SwiftUI. There aren't a ton of guides out there on how to blend SwiftUI into a React Native app, so this journey has been both tough and intriguing. Before I move on, big shoutout to Kyle Nazario, who put together the underlying SwiftUI library. This library does most of the heavy lifting for the inline markdown rendering, but it still needs to communicate with the React Native code. I've been wrestling with a challenge for example: keeping the selected text or cursor in the right spot after the text changes due to hitting a markdown button (because these buttons are React Native views). Normally, all these events and functions come built-in with the standard React Native TextInput, but now I'm dealing with a completely separate SwiftUI input on the native side, so I'm bridging all these functions myself.
It's been quite the journey, and I'm soaking up a ton from it. I'm already pretty stoked with where things are at now. Honestly, I wasn't sure if I could bring this markdown editor that's been bouncing around in my head to life. I hope you all are as amped about this upcoming feature as I am. However, I hope you guys still have a touch more patience because there are still a few pesky bugs I'm aiming to squash this week.
One more thing, let's chat about the current TestFlight situation. Big thanks to everyone testing out the private beta; your support means a lot. I'm aware that some folks didn't get the initial invite, and I hear you. Here's what I'm thinking for the near future:
- Drop the new markdown editor, complete with the ability to post comments.
- Push out a version that lets you craft new posts as well.
- Open up Lemma to the public once the new markdown editor proves its stability in the closed beta TestFlight! 🥳
This time, I'm sharing a bit more technical stuff, but I thought you might dig these behind-the-scenes updates too. I'm super excited to hear what you all think of the new markdown editor. I'll keep you posted as soon as it's good to go!