Sign in

Joe Masilotti

@joemasilotti.com
1.1K followers 44 following 85 posts

I help Rails businesses ship iOS and Android apps. I've shipped 25+, wrote the book, and trained hundreds of devs. Strategy, building, or teaching: let's ship! masilotti.com

PostsRepliesMedia
Joe Masilotti @joemasilotti.com · 08/01/2026
PurchaseKit gives you drop-in native components for iOS and Android. No Swift. No Kotlin. And your paywall is just ERB. purchasekit.dev
Screenshot of some ERB code rendering HTML to generate a paywall for iOS and Android apps powered by Hotwire Native.
110
Joe Masilotti @joemasilotti.com · 31/12/2025
I'm trying something new… need to add in-app purchases to your Hotwire Native app? 👉 purchasekit.dev
011
Joe Masilotti @joemasilotti.com · 20/08/2025
It's here folks, it's finally here!!
Joe Masilotti holding up a copy of his book, in print, "Hotwire Native for Rails Developers".
3395
Joe Masilotti @joemasilotti.com · 09/04/2025
Celebrate 200+ stars, I'm excited to share my new library. 📲 Bridge Components for Hotwire Native apps • 13+ components • iOS and Android support • Example iOS, Android, and Rails apps • Full source code Copy-paste into your app and wire up the HTML! github.com/joemasilotti...
Screenshot of iOS and Android simulators showing native components on Hotwire Native apps, powered by bridge components.
0163
Joe Masilotti @joemasilotti.com · 08/03/2025
I woke up this morning to 600+ emails to be screened in and a notification from my bank that I was locked out of my account. Not entirely sure what's going on yet. But it doesn't seem good.
110
Joe Masilotti @joemasilotti.com · 24/02/2025
Honestly, not too far off!
Screenshot of the following transcript:

ME: I'm writing my next newsletter article. Do you know who I am and my voice, tone, and cadence?

RESPONSE: Yep, you're Joe Masilotti! You've been building Turbo Native apps for 9+ years, consulting, mentoring, and advising developers in the space, and you're currently writing a book aimed at Rails developers transitioning into iOS. You run a newsletter for an audience mostly made up of Rails and Turbo Native developers, solopreneurs, and independent contractors. Your style is conversational, clear, and pragmatic—often infused with practical insights, personal experiences, and concise yet impactful takeaways. You're good at translating technical concepts into digestible content and prefer writing that feels approachable and authentic, reflecting your own voice and personality.
110
Joe Masilotti @joemasilotti.com · 19/02/2025
Big things are coming to the Hotwire Native demo site! Follow along on GitHub: github.com/hotwired/hot...
Screenshot of a pull request on the Hotwire Native demo site, showing three tabs from the iOS app.
052
Joe Masilotti @joemasilotti.com · 22/01/2025
Chs 7 + 8 - Build bridge components with Swift and Kotlin Bridge components — previously "Strada" — are tiny enhancements that blend web and native functionality. By the end of these chapters, you’ll know how to build dynamic, native components controlled by HTML and JavaScript.
Chapters 7 and 8
100
Joe Masilotti @joemasilotti.com · 22/01/2025
Chs 5 + 6 - Render native screens with SwiftUI and Jetpack Compose These chapters show you how to build fully native screens powered by SwiftUI and Jetpack Compose. You’ll be able to integrate virtually any native experience into your Hotwire Native apps.
Chapters 5 and 6
100
Joe Masilotti @joemasilotti.com · 22/01/2025
Ch 4 - Add a native tab bar Tab bars are a staple of native apps. In this chapter, you’ll learn how to add them to your Hotwire Native apps, connecting each tab to its own web view instance. Plus, you’ll ensure your server isn’t overloaded when the app starts.
Chapter 4
100
Joe Masilotti @joemasilotti.com · 22/01/2025
Ch 3 - Navigate gracefully with path configuration Path configuration is one of the most powerful—and sometimes confusing—features of Hotwire Native. This chapter demystifies it, showing you how to use it to present forms as modal screens (sliding in from the bottom).
Chapter 3
100
Joe Masilotti @joemasilotti.com · 22/01/2025
Ch 2 - Control your apps with Rails Learn how to drive your mobile apps entirely through Rails code without touching native code. You’ll customize the native title bar, apply conditional styles, and keep users signed in seamlessly.
Chapter 2
100
Joe Masilotti @joemasilotti.com · 22/01/2025
Ch 1 - Build your first Hotwire Native apps This chapter introduces Hotwire Native and helps you set up your local development environment. By the end, you’ll have basic hybrid apps running on iOS and Android, powered by your Rails backend.
Chapter 1
100
Joe Masilotti @joemasilotti.com · 19/12/2024
And now… the fun begins. Where's my red pen!
A printed out copy of the first six chapters of my book.
1110
Joe Masilotti @joemasilotti.com · 11/12/2024
December's newsletter goes out tomorrow! And it includes a subscriber-exclusive announcement - add your email to hear about it first: masilotti.com/newsletter
Screenshot of the following text:

10 tips from 10 years of Hotwire Native

10 years ago I launched my first Hotwire Native app in the App Store. It was called something different back then (anyone remember Turbolinks?) but a lot of the same concepts and learnings apply.

To celebrate my 10-year anniversary, here are 10 of my favorite Hotwire Native tips and tricks. These will help make your hybrid app feel more native and achieve the number one goal of Hotwire Native: leaving as much business logic on the server as possible.

P.S. You don’t want to miss #10. 😉
000
Joe Masilotti @joemasilotti.com · 03/12/2024
See this little button component - the dynamic text or image in the upper right? Guess how many lines of code for iOS. Then guess how many for Android. 😅
Screenshot of a button component in iOS and Android apps.
010
Joe Masilotti @joemasilotti.com · 26/11/2024
Would LOVE to omit this from my book. 🙈
020
Joe Masilotti @joemasilotti.com · 26/11/2024
No errors! Here's with --trace
100
Joe Masilotti @joemasilotti.com · 26/11/2024
Not sure if this helps explain but I run reset then try to query for a User and it shows the migrations haven't been run. Then I run migrate and seed and query again - then you can see the user.
120