Back to Blog
product updatesFeatured

Stylo for Android: From Idea to Release

After months of development and optimization, Stylo for Android is finally ready for testing. Here's what it took to build it.

Stylo Team
4 min read
Stylo for Android: From Idea to Release

When I sat down to write the first line of code for the Android version of Stylo a few months ago, I had no idea how many late-night debugging sessions awaited me. Today, the app is finally ready for testing and I can breathe.

How it started

It all started with a simple question from a friend: "Why doesn't Stylo have an Android app?" And I answered like a typical programmer: "It'll be done in a week."

Well, it wasn't.

The web version worked great, but a mobile app is a completely different world. We wanted people to have Stylo on their phones โ€” on the bus, at a coffee shop, wherever they need to quickly fix some text. So I said, alright, let's try it.

Kotlin, Compose, and all those fancy things

I decided to do it properly. Not some quick & dirty prototype, but a real production app. So Kotlin (of course), Jetpack Compose instead of those crazy XML layouts, MVVM architecture so I'd still understand it in six months, Hilt for dependency injection, and Room database for offline mode.

It all sounded great in my head. In practice... well, let me tell you about it.

That Galaxy A5 that taught me patience

The worst part was when a friend sent me a screenshot: "The app crashed." He had an old Samsung Galaxy A5 from 2017. 2GB RAM. Android 9.

And there I was with my new phone where everything ran beautifully smooth, and I realized I had completely neglected optimization for old devices.

I spent about 3 weeks just hunting memory leaks, debugging why Compose recomposes 50 times instead of 2, and profiling every single LazyColumn. You know what's the worst? When you see in the profiler that your animation is eating 80% of CPU. That's when I realized some animations just have to go.

But when I finally saw the app running smoothly on that old Samsung, I felt like I'd won a marathon.

Architecture? When it pays off

At first, I wondered if it was worth doing the whole Clean Architecture with MVVM. It sounds complicated โ€” you have a UI layer, domain layer, data layer, each communicating only through interfaces...

I decided to give it a try. And then came the moment when we needed to add offline mode. You know what? I changed the repository implementation to get data from Room database instead of API. I didn't have to change the UI at all. Not a single line.

That's when I understood why all those Android tutorials on YouTube shout so much about separation of layers.

That token bug that cost me an evening

I'll never forget how I forgot to implement EncryptedSharedPreferences and was storing tokens in plain text. I found it by accident when I was reading documentation about something completely different.

Imagine if someone decompiled the APK and found Supabase tokens just sitting there in SharedPreferences. Nightmare. I quickly rewrote it with AES-256 encryption and since then I check security before I commit anything.

Lesson? Never postpone security for later. When you have a deadline and you're tired, you'll forget about it.

What does the app actually do?

Okay, so after all those optimizations and refactors, we have an app that can transform text in 10 different ways โ€” grammar, formal style, summarization, everything. It works in 5 languages and has auto-detect mode, so you don't have to select the language manually.

Everything is stored locally in Room database, so even without internet, you see your history. I implemented rate limiting so we don't spam the API โ€” 6 requests per hour for visitors, 20 for logged-in users.

I used Supabase for authentication, Material Design 3 for UI (with dark mode, of course), and we also made support for tablets, which was actually easier than I expected.

What's next?

Now I need real people to try it. Not friends who'll say "great app bro", but people who'll tell me "this crashed", "this is slow", "this doesn't make sense".

Beta testing starts soon. If you have Android and want to help, I'd be glad.

And one more thing โ€” thank you. Stack Overflow saved my life about 20 times, Google documentation is actually good (which can't be said about many docs), and the Kotlin community is super helpful.

But mainly, thank you to those who use Stylo and give feedback. That's what drives me forward.

See you in the app. ๐Ÿš€


Found a bug or have a question? Write to me, I'll be happy to answer.

AI-Powered Writing

Ready to improve your writing?

Try Stylo for free and experience AI-powered writing assistance that adapts to your style.

Try Stylo Free
AndroidKotlinJetpack ComposeMVVMdevelopment

Related Posts