┌───────────────────────┐
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
└───────────────────────┘
[ GrapheneOS Without Google Play: What Actually Worked ]
~ cold
INTRODUCTION //

Flashing ROMs is nothing new to me. I have been flashing custom ROMs
going all the way back to Android 1.6 Donut on my HTC Dream. I even
remember bricking the Dream once with a bad flash and having to meet a
stranger from XDA Developers at a public mall who had a JTAG programmer
to reflash it.

Suffice to say, when I went through the GrapheneOS web installation
process, I was pretty stunned by how easy and intuitive it was.

This was not an attempt to prove that every Google service is useless,
that Google is stealing all your data, or that everyone should
immediately delete their existing setup. I just wanted a device that
relied less on one big tech company, focused more on privacy, and still
worked well with what I use day to day.

The only part I was really unsure about was app compatibility. Coming
from a microG-based ROM, I had gotten used to depending on the Play
Store for everything. A lot of "de-Googled" advice online still assumes
Google Play is there somewhere, even for apps that shouldn't obviously
need it. Some apps worked exactly as expected, some needed a
replacement, and a few simply were not worth fighting with.

A phone is personal and should be set up around your own preferences,
not what some company says you should use. This is not a GrapheneOS
setup guide. It is just a record of what worked for me, what didn't, and
where I had to make compromises.

THE BEGINNING //

I installed GrapheneOS on a brand-new Pixel 10a and left the bootloader
locked once the installation was complete.

Migrating over was trivial. My contacts had never been tied to a Google
account in the first place, just saved locally on my old phone, so I
just had to import them as a .vcf file to the new device.

I also made the decision not to install sandboxed Google Play.
GrapheneOS supports it, and I understand that certain apps require
Google Play services to function correctly, but I wanted to see how far
I could get without adding them back into the system. Did I really need
them?

My starting point was simple, since most of these apps were already part
of my ecosystem:

  Vanadium as the main browser
  Proton Authenticator for two-factor codes
  Bitwarden for passwords and autofill
  HeliBoard for the keyboard
  Thunderbird for email
  Organic Maps for navigation
  Proton VPN for public Wi-Fi
  Syncthing and Markor for notes
  Chora as a Navidrome client

I mostly kept the GrapheneOS defaults and avoided changing settings just
for the sake of changing them. The defaults shipped with GrapheneOS are
already sane, and the goal was a clean daily-use phone, not a privacy
checklist where every toggle had to be different from stock.

WHAT WORKED //

Most of the basic alternatives worked without much effort.

Vanadium handled normal browsing, Bitwarden worked with biometrics and
autofill, Proton Authenticator restored my codes, and Thunderbird
handled email without any obvious limitations.

Basic phone functionality was never in question either. Calls, texts,
and network settings were all detected automatically with no drops, and
GPS locked my position without any of the accuracy problems I'd read
about beforehand. The camera held up too. I don't take a ton of photos,
but I haven't noticed any quality drop compared to the stock camera app.
The one built into GrapheneOS is more than enough for what I actually
use it for.

The local and self-hosted stuff was even easier. Syncthing kept my notes
in sync whether on my LAN or through Tailscale. Markor gave me a simple,
robust Markdown editor, ConnectBot handled SSH access to Nexus when
needed, and LocalSend is so useful I don't know how I ever lived without
it.

Organic Maps covered offline navigation. I downloaded my local map and
never had any issues using it. Proton VPN worked when I needed it on
sketchy public Wi-Fi, and Capy gave me a clean RSS reader for toilet
scrolling, replacing most of the news browsing I used to do through X.

Tempus connected to my Navidrome server without issue and gave me access
to my music library from either the LAN or mobile data through
Tailscale.

None of these apps have made me feel constrained or like I was using an
inferior OS. They installed quickly, worked as advertised, and mostly
stayed out of the way, which was exactly what I was looking for.

WHAT NEEDED REPLACEMENT //

The bigger adjustment was not losing functionality, but finding the
right apps to handle it.

Some replacement apps were obvious. HeliBoard replaced FUTO, PipePipe
replaced YouTube, Organic Maps replaced Google Maps, and Capy replaced a
lot of the time I previously spent scrolling through X for news.

Music, however, was a little annoying at first. Chora worked on my older
phone, and I had grown accustomed to its UI, but it had issues
connecting on the Pixel 10a. While searching for alternatives, I found
that nearly every other Navidrome client on F-Droid was either stale or
no longer actively maintained.

Ultrasonic ended up being the first reliable option, no connection
issues and easy to use. I later switched to Tempus, which has a cleaner
UI than either Chora or Ultrasonic and has been my go-to music app
since.

The ChatGPT app was another easy enough swap once I looked into it. It
requires Google Play services just to log in, and the web app felt laggy
inside Vanadium, so I found a lighter wrapper called gptAssist on
F-Droid instead. Turned out better than either of the original options.

None of this was particularly difficult. Sure, an argument can be made
for convenience's sake, and it did require letting go of the assumption
that the first familiar app in an app store was automatically the best
choice. But the time and effort I spent researching alternatives paid
off in the end.

WHAT DIDN'T WORK - THE DARK TRUTH //

Right out of the gate, there were a few apps that were not worth the
effort or the headache.

Some just straight up refused to run without Google Play services.
Others would open, but with key features like notifications, location
access, or account logins broken.

Discord was the clearest example. The web app through Vanadium never
delivered notifications properly, and none of the open source
alternatives I looked into were good enough replacements. In the end I
installed the actual Discord app through Aurora Store using an anonymous
account, which solved it completely.

This was the point where I had to decide whether having the app was
actually necessary or whether I was just used to seeing it in my app
drawer. Smart Life made that decision easy. I used it to control some
Teckin smart bulbs, but between the account requirements and general app
bloat, it wasn't worth fighting for. I ditched both the app and the
bulbs, which weren't great to begin with, and I'm planning on running
smart lighting through Home Assistant on my homelab server instead.

Banking and payment apps were the area where I expected the most pain.
Compatibility varied based on the research I had done, but surprisingly,
the apps I actually rely on worked flawlessly as web apps in Vanadium.
Steam wasn't an issue either, since they offer a direct APK download for
the authenticator. I never felt pressured to install sandboxed Google
Play.

Notifications were less predictable in general, which caught me off
guard. Apps using their own background connection generally worked
without issue. Notifications from apps relying entirely on Google's push
service could be delayed or never arrive at all. That was never a huge
problem for me, but it required some extra effort to find the right apps
and set the correct battery permissions so they could run properly in
the background.

Not everything got resolved. The Divoom app I use to sync the clock on
my Timebox Evo wouldn't install at all, and I never found a workaround.
It's still installed on my old phone running microG, which I keep around
just to fix the time drift when it happens.

The biggest compromise for me was obviously convenience. Google Play
makes installation, updates, and push notifications feel almost
automatic. Without it, I had to use a mix of F-Droid, custom repos, and
direct downloads. It took more time and effort, but not enough to make
me want to crawl back to Google.

I guess that is the cost of knowing that I am in control of my apps and
data, and in control of what I choose to share with the world. I don't
mind making that compromise if it gives me some peace of mind.

THE VERDICT - END OF LINE //

For me, the experiment was a success.

I ended up with a phone I actually like using, enough that I'm here
writing about it. It feels fast, private, and fully functional without
Google Play. Getting the app drawer where I wanted it took some extra
effort. Some apps needed replacements, and others were simply not worth
keeping or fighting with.

Again, this is not a tutorial. In fact, I don't think anyone should copy
this exact setup. You should find what works for you. I'm also not
pretending there were no compromises. But after using it as my daily
phone, I have not looked back.

I guess that is a convoluted answer to the question I started with. No,
I did not really need it.