

The Skim mobile app listing on the App Store — image 1 of 2
The Skim mobile app for iOS and Android, built with React Native and Expo. It brings the article and video feeds, credibility scoring and bias analysis to phones, with filtering by brand, date, score and category.
The app shares its Zod schemas, types and analytics layer with the web platform through the same monorepo, so a change to the analysis contract lands in both places at once. Feeds use TanStack Query for infinite scroll, and credibility results are visualised with native chart components rather than a web view.
Authentication supports Google, Apple, magic link and email, with tokens held in the device keychain through expo-secure-store and refreshed automatically. Expo Router handles file-based navigation and the app ships to both stores through EAS. As with the rest of the platform, my work here extends into the backend services the app consumes rather than stopping at the client.
Case study
- The problem
- Most reading happens on a phone, but a credibility tool that is only a website means either a browser tab or a wrapped web view that feels wrong on mobile.
- My approach
- I built the native app in React Native and Expo, reusing the schemas, types and analytics package the web platform already had, with secure token storage in the device keychain and native charts for the credibility visualisations, and contributed changes to the backend services it depends on.
- The outcome
- Shipped to both the Apple App Store and Google Play, sharing its contracts with the web platform so the two cannot drift apart.