I was prompted to write this post by major frustrations in dealing with the Quest 3. The sad thing is these frustrations are part of something I accomplished using the Quest 3 that I really wanted to talk about, and then this crap came up.
Meta Quest’s Browser
As described earlier, the browser is in many ways terrible. And it’s the only game in town unless you want to deal with side-loading (which is probably something you’ll have to deal with inevitably).
My latest frustration came when, on the cusp of triumph, I ran into a confusing snag. It turns out that the Quest’s browser doesn’t support StorageEvent. Now, to be fair, I didn’t know about StorageEvent until last night, but it’s not exactly new on the block. (And yes, I will be using is a lot. And yes, I would prefer if I could use IndexedDB, but IndexedDB only has experimental support in Chrome for observers so, once again, IndexedDB is basically useless.)
Anyway, because I wanted to get multi-window web apps working (again) specifically to leverage multiple (browser) window support on the Quest (and VisionPro when it comes), I turned to StorageEvent, got it working incredibly easily, and then discovered it just doesn’t work on the Quest 3.
This could also be the motto of the Quest 3.
StorageEvent? It just doesn’t work™…
Anyway, I eventually built a fallback solution using (ugh) setInterval which works fine (and I tested it turning off the
StorageEvent listener on my Mac) and really a maximum 0.5s delay isn’t even noticeable in XR because in practice you don’t even turn your head that fast.
Capturing the Hello World Video
So, having thought about it for a few weeks, and having started working on it last night, this morning I was ready for my “hello world” demo… self-hosted XR development on a Quest 3 using xinjs-ui. I did the demo, everything worked, it was—if I may say so—fucking amazing.
OK, sure, for some reason the standard video-capture shortcut mysteriously doesn’t work today and I don’t know why. The UI doesn’t mention the shortcut. Maybe it got disabled in an OTA update? WTF. OK so I had to trigger the video manually.
OK, sure, the system forgot my capture settings and went back to square videos. Easy fix.
But now I had it, a really nice demo covering all the key points. But, how do I get it onto my freaking computer? Well, Meta tells me to download Android File Transfer utility. (I love how for years you could just plug pretty much anything with a storage device on it into a Mac and, maybe click a permissions dialog on the device, and boom you have access. Android is so special.
(I should note that my Quest 3 sits on my desk, next to my Macbook Pro when not in use, and plugged into a USB cable directly into the Macbook Pro in order to charge.)
Android File Transfer. It just doesn’t work™.
I should note that the first thing I tried was the Meta Quest iPhone app that supposedly syncs to my Quest 3 magically.
Yeah, all this stuff is on the same very fast WiFi network but syncing stopped working four days ago. What happened four days ago? Well, I added my user (vs. developer) account to the Quest 3. Now, whenever I put it on, I am dropped into a “Select User” modal space (which doesn’t support any kind of pass through. Seriously, fuck you Meta. You haven’t sorted this shit out?
File Sync? Multiple-user support? Is just doesn’t work™.
Guess what works, is super reliable, surprisingly easy to spin up and reasonably fast?
So, in the end, good old iCloud Drive to the rescue!
There’s a LOT to like, but that’s not what this post is about
Make no mistake, I like the Quest 3. It’s a very impressive device—especially given the price—in many ways. But the software just drops the ball in so many ways. Which is a shame, because I think this is pretty awesome…