The whole visual half of LittleStory runs fine inside Expo Go — pick a photo, generate the illustration, change a layout and see it a second later. The half that needs a microphone does not. This is what I swapped, what I quietly faked for a week, and the to-do list that fell out of it.
Indie DevReact NativeExpoThe button that recorded nothing
On the third night my daughter asked for the same story again — the one built from a photo of the neighbour's cat. LittleStory turns one photo, a few seconds of your own voice and a single sentence into an illustrated bedtime story, read back in the voice you recorded. I wanted her to hear mine.
So I pressed record. The button lit, the seconds counted up, a little waveform moved along the bottom. Nothing was captured. On a real build that same tap would have kept my voice; inside Expo Go it was theatre, and I only found out when I played it back and heard silence.
Expo Go ships the modules you didn't need
Expo Go is a precompiled app, which is the whole reason it can open your project in ten seconds. The price is a fixed set of native modules, and the three I was counting on — audio recording, direct camera access and persistent key-value storage — are not in it. The console says it plainly enough: `Cannot find native module 'ExponentAV'`.
There were two honest ways out: build a development client so the app can carry its own native code, or bend the app to fit the sandbox for one more week while I found out whether parents would use this at all. I picked the second. That is a bet, not a strategy, and it turned out to cost exactly one convincing lie.
A button that looks alive
Everything visual kept working. The photo picker, the generated illustration, the reading screen with its page turns — same behaviour in the sandbox as anywhere else, so I could move a card up three pixels and see it a second later. That loop is worth a lot when you are still guessing at the shape of the thing.
The recording button is where I drew the line and then crossed it anyway. It still lights up and still counts seconds; the audio is never captured. I have labelled it as a demo. I also know what a lifelike button does to a person who wants to believe it.
Guest mode, and the list that wrote itself
No persistent storage meant no login either, because there was nothing to keep a session in. The app now creates a guest account on first launch and writes the stories to the server, which is why my daughter's cat story survived a restart and why it will vanish if I change phones.
The week's real output was a to-do list. Put the microphone back. Replace the in-memory store with something that outlives the process. Add Google sign-in so a parent can carry their stories between devices. None of it is interesting, which is the point — every item is just the distance between a build that can hear you and one that can only show you a button.
If you are unsure your idea deserves a week of native plumbing, start in the sandbox and let it tell you what it cannot do. Just do not let the demo mode quietly become the product. My daughter has asked for the same story four nights running. On the fifth I would like her to hear my voice.