1bf406d3a8a7d764eb2e8dfa5b6c5b2aa2aa3ad3
Two reported symptoms — the transcript screen sitting on its loading spinner after a transcription, and a follow-up transcription stuck at 0% — both trace to the same cause: after a transcript saves, embedOne() embeds the whole lecture in ONE synchronous WASM call on the MAIN thread. Measured in a browser harness: embedding 150 segments blocks the thread for ~1.86s straight (a 50ms heartbeat fired once instead of ~35x); on a phone or a long lecture that's many seconds of total UI freeze. During it the just-navigated transcript screen can't run its get() callback (looks "stuck loading") and a concurrent transcription's progress UI is frozen at 0%. - embeddingStore.embedTranscript: embed in batches of 16, yielding to the event loop between batches, so the UI stays responsive. Per-text vectors are identical (e5 pools each text independently); this only changes scheduling. - transcript/[id].tsx: the get() load had NO error handling, so a rejected load (or a long freeze) left the spinner up forever. Add .catch -> show a real "couldn't load" message instead of an infinite spinner; also catch the (non-fatal) media-url load. Ruled out (via harness) the theory that the e5 embedding model hits the same WASM MatMulNBits load failure as Whisper — e5 (encoder-only) loads fine at both q8 and fp32 on WASM, so its dtype is left unchanged. Proper long-term fix (separate, larger): run embeddings in a Web Worker. Validated: tsc clean, 282 tests, web export OK. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Welcome to your Expo app 👋
This is an Expo project created with create-expo-app.
Get started
-
Install dependencies
npm install -
Start the app
npx expo start
In the output, you'll find options to open the app in a
- development build
- Android emulator
- iOS simulator
- Expo Go, a limited sandbox for trying out app development with Expo
You can start developing by editing the files inside the app directory. This project uses file-based routing.
Get a fresh project
When you're ready, run:
npm run reset-project
This command will move the starter code to the app-example directory and create a blank app directory where you can start developing.
Other setup steps
- To set up ESLint for linting, run
npx expo lint, or follow our guide on "Using ESLint and Prettier" - If you'd like to set up unit testing, follow our guide on "Unit Testing with Jest"
- Learn more about the TypeScript setup in this template in our guide on "Using TypeScript"
Learn more
To learn more about developing your project with Expo, look at the following resources:
- Expo documentation: Learn fundamentals, or go into advanced topics with our guides.
- Learn Expo tutorial: Follow a step-by-step tutorial where you'll create a project that runs on Android, iOS, and the web.
Join the community
Join our community of developers creating universal apps.
- Expo on GitHub: View our open source platform and contribute.
- Discord community: Chat with Expo users and ask questions.
Languages
TypeScript
93.7%
Shell
3.3%
Dockerfile
2.1%
JavaScript
0.8%
CSS
0.1%