Source: https://seerepo.com/r/bluesky-social/social-app/built
Markdown source: https://seerepo.com/r/bluesky-social/social-app/built.md
Description: social-app is a TypeScript repo built with react-native, React, react-navigation, Expo, react-native-web, and 5 more.

# What is social-app built with?

social-app is a TypeScript repo built with react-native, React, react-navigation, Expo, react-native-web, and 5 more. It stores its data in @react-native-async-storage/async-storage, react-native-mmkv, and idb-keyval, reaches it with kysely, signs people in with jwt-decode, uses AI through lande, watches its errors with Sentry, makes its content with expo-image-picker, expo-media-library, expo-image-manipulator, @braintree/sanitize-url, mediabunny, and 4 more, validates its data with Zod, is tested with @testing-library/react-native, deploys with expo-updates, github.com/ipfs/go-log, Prometheus, prom-client, and pino, and uses lru-cache and Postgres. It has 336,218 written lines, with 220 test files.

Read on November 6, 2026, at commit 1ff1973.

Repository: https://github.com/bluesky-social/social-app

## Frontend (/)

### The base

- **[react-native](https://seerepo.com/uses/react-native)**: 759 files
- **[React](https://seerepo.com/uses/react)**: 737 files
- **react-navigation**: 146 files
- **[Expo](https://seerepo.com/uses/expo)**: 37 files
- **react-native-web**: 1 file

### Styles

- **expo-font**: 2 files

### Interface

- **[react-native-reanimated](https://seerepo.com/uses/react-native-reanimated)**: 135 files
- **expo-image**: 72 files
- **[react-native-safe-area-context](https://seerepo.com/uses/react-native-safe-area-context)**: 59 files
- **expo-linear-gradient**: 22 files
- **[react-native-gesture-handler](https://seerepo.com/uses/react-native-gesture-handler)**: 21 files
- **[react-native-svg](https://seerepo.com/uses/react-native-svg)**: 17 files
- **react-native-keyboard-controller**: 14 files
- **emoji-mart**: 6 files
- **expo-blur**: 6 files
- **@expo/ui**: 4 files
- **react-native-drawer-layout**: 4 files
- **react-native-pager-view**: 4 files
- **[tiptap](https://seerepo.com/uses/tiptap)**: 4 files
- **expo-splash-screen**: 3 files
- **sonner-native**: 3 files
- **expo-camera**: 2 files
- **expo-glass-effect**: 2 files
- **expo-navigation-bar**: 2 files
- **expo-status-bar**: 2 files
- **expo-system-ui**: 2 files
- **expo-video**: 2 files
- **react-native-webview**: 2 files
- **react-responsive**: 2 files
- **[sonner](https://seerepo.com/uses/sonner)**: 2 files
- **@floating-ui/react-dom**: 1 file
- **[react-hotkeys-hook](https://seerepo.com/uses/react-hotkeys-hook)**: 1 file
- **react-image-crop**: 1 file
- **react-native-screens**: 1 file
- **tippy.js**: 1 file

## Backend (/)

### The base

- **Echo**: 6 files

### Data

- **@react-native-async-storage/async-storage**: 4 files
- **react-native-mmkv**: 3 files
- **idb-keyval**: 2 files

### Sign-in

- **[jwt-decode](https://seerepo.com/uses/jwt-decode)**: 2 files

### AI

- **lande**: 2 files

### Services

- **[Sentry](https://seerepo.com/uses/sentry)**: 5 files · [src/logger/sentry/lib/index.ts, line 13](https://github.com/bluesky-social/social-app/blob/1ff197301c153d7ced43ea7ed66bee311f5e6bb5/src/logger/sentry/lib/index.ts#L13)

## Support (/)

### The base

- **expo-modules-core**: 1 file

### Content

- **expo-image-picker**: 17 files
- **expo-media-library**: 6 files
- **expo-image-manipulator**: 5 files
- **@braintree/sanitize-url**: 2 files
- **mediabunny**: 2 files

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 5 files

### Testing

- **@testing-library/react-native**: 52 files

### Deploy

- **expo-updates**: 2 files
- **github.com/ipfs/go-log**: 2 files
- **[Prometheus](https://seerepo.com/uses/prometheus)**: 2 files

### Tools

- **CocoaPods**
- **github.com/urfave/cli/v2**: 4 files
- **oxlint**: 2 files

### Other

- **lingui**: 655 files
- **[TanStack](https://seerepo.com/uses/tanstack)**: 213 files
- **react-native-worklets**: 28 files
- **nanoid**: 15 files
- **expo-clipboard**: 14 files
- **date-fns**: 12 files
- **eventemitter3**: 12 files
- **expo-file-system**: 12 files
- **Lodash**: 7 files
- **bcp-47-match**: 5 files
- **expo-linking**: 5 files
- **growthbook**: 5 files
- **lodash.chunk**: 5 files
- **expo-asset**: 4 files
- **expo-localization**: 4 files
- **expo-notifications**: 4 files
- **expo-application**: 3 files
- **expo-haptics**: 3 files
- **hls.js**: 3 files
- **react-keyed-flatten-children**: 3 files
- **tldts**: 3 files
- **expo-location**: 2 files
- **expo-screen-orientation**: 2 files
- **expo-sharing**: 2 files
- **expo-web-browser**: 2 files
- **fast-deep-equal**: 2 files
- **github.com/joho/godotenv**: 2 files
- **github.com/klauspost/compress**: 2 files
- **libphonenumber-js**: 2 files
- **lodash.throttle**: 2 files
- **psl**: 2 files
- **bidi-js**: 1 file
- **emoji-regex**: 1 file
- **expo-device**: 1 file
- **expo-intent-launcher**: 1 file
- **expo-keep-awake**: 1 file
- **fast-text-encoding**: 1 file
- **formatjs**: 1 file
- **fuse.js**: 1 file
- **golang.org/x/sync**: 1 file
- **js-sha256**: 1 file
- **setimmediate**: 1 file
- **slugify**: 1 file
- **tlds**: 1 file

## Frontend (bskyembed)

### The base

- **[Preact](https://seerepo.com/uses/preact)**: 12 files

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**

## Backend (bskylink)

### The base

- **[Express](https://seerepo.com/uses/express)**: 13 files · [in bskylink/package.json](https://github.com/bluesky-social/social-app/blob/1ff197301c153d7ced43ea7ed66bee311f5e6bb5/bskylink/package.json)

### Data

- **[lru-cache](https://seerepo.com/uses/lru-cache)**: 1 file
- **[Postgres](https://seerepo.com/uses/postgres)**: 1 file · [bskylink/src/db/index.ts, line 14](https://github.com/bluesky-social/social-app/blob/1ff197301c153d7ced43ea7ed66bee311f5e6bb5/bskylink/src/db/index.ts#L14)

### Data access

- **kysely**: 7 files

## Support (bskylink)

### Content

- **[escape-html](https://seerepo.com/uses/escape-html)**: 3 files

### Deploy

- **[prom-client](https://seerepo.com/uses/prom-client)**: 2 files
- **[pino](https://seerepo.com/uses/pino)**: 1 file

### Other

- **@atproto/api**: 2 files
- **body-parser**: 1 file
- **cors**: 1 file
- **tldts**: 1 file
- **uint8arrays**: 1 file

## Frontend (bskyogcard)

### Icons

- **twemoji**: 1 file

## Backend (bskyogcard)

### The base

- **[Express](https://seerepo.com/uses/express)**: 7 files · [in bskylink/package.json](https://github.com/bluesky-social/social-app/blob/1ff197301c153d7ced43ea7ed66bee311f5e6bb5/bskylink/package.json)

## Support (bskyogcard)

### Content

- **satori**: 4 files
- **@resvg/resvg-js**: 3 files

### Deploy

- **[prom-client](https://seerepo.com/uses/prom-client)**: 1 file

### Other

- **@atproto/api**: 7 files

## Frontend (modules/bottom-sheet)

### The base

- **[React](https://seerepo.com/uses/react)**: 4 files

### Interface

- **[Google](https://seerepo.com/uses/google)**: 1 file

## Support (modules/bottom-sheet)

### The base

- **com.facebook.react:react-native**: 2 files
- **[react-native](https://seerepo.com/uses/react-native)**: 2 files
- **[Expo](https://seerepo.com/uses/expo)**: 1 file

### Testing

- **@testing-library/react-native**: 1 file

## Frontend (modules/expo-background-notification-handler)

### The base

- **[React](https://seerepo.com/uses/react)**: 1 file

## Support (modules/expo-background-notification-handler)

### The base

- **[Expo](https://seerepo.com/uses/expo)**: 1 file

## Frontend (modules/expo-bluesky-gif-view)

### The base

- **[React](https://seerepo.com/uses/react)**: 2 files
- **[Expo](https://seerepo.com/uses/expo)**: 1 file

### Interface

- **[androidx.appcompat:appcompat](https://seerepo.com/uses/androidxappcompat-appcompat)**: 1 file

## Support (modules/expo-bluesky-gif-view)

### The base

- **[react-native](https://seerepo.com/uses/react-native)**: 2 files
- **expo-modules-core**: 1 file

### Content

- **Glide**

## Frontend (modules/expo-bluesky-swiss-army)

### The base

- **[React](https://seerepo.com/uses/react)**: 1 file

## Support (modules/expo-bluesky-swiss-army)

### The base

- **[Expo](https://seerepo.com/uses/expo)**: 4 files
- **[react-native](https://seerepo.com/uses/react-native)**: 4 files

### Other

- **com.android.installreferrer:installreferrer**: 1 file

## Frontend (modules/expo-emoji-picker)

### The base

- **[Expo](https://seerepo.com/uses/expo)**: 2 files
- **[react-native](https://seerepo.com/uses/react-native)**: 2 files
- **[React](https://seerepo.com/uses/react)**: 1 file

## Support (modules/react-native-scroll-forwarder)

### The base

- **[react-native](https://seerepo.com/uses/react-native)**: 1 file

## Other repos with a similar stack

- [reactive-resume/reactive-resume](https://seerepo.com/r/reactive-resume/reactive-resume/built): react-native, React, Expo, Postgres, expo-font, react-native-reanimated, expo-image, react-native-safe-area-context, react-native-gesture-handler, react-native-svg, react-native-keyboard-controller, @expo/ui, tiptap, expo-splash-screen, expo-status-bar, expo-image-picker, Zod, expo-updates, Tailwind CSS · [Compare](https://seerepo.com/compare/bluesky-social/social-app/vs/reactive-resume/reactive-resume)
- [multica-ai/multica](https://seerepo.com/r/multica-ai/multica/built): react-native, React, Expo, Postgres, react-native-reanimated, expo-image, react-native-safe-area-context, react-native-gesture-handler, react-native-svg, react-native-keyboard-controller, emoji-mart, tiptap, expo-status-bar, sonner, expo-image-picker, Zod, Prometheus, Tailwind CSS · [Compare](https://seerepo.com/compare/bluesky-social/social-app/vs/multica-ai/multica)
- [TryGhost/Ghost](https://seerepo.com/r/TryGhost/Ghost/built): React, Sentry, Preact, Express, lru-cache, emoji-mart, tiptap, sonner, @floating-ui/react-dom, Zod, Tailwind CSS · [Compare](https://seerepo.com/compare/bluesky-social/social-app/vs/TryGhost/Ghost)
- [novuhq/novu](https://seerepo.com/r/novuhq/novu/built): React, Sentry, Express, lru-cache, tiptap, sonner, tippy.js, jwt-decode, Zod, Tailwind CSS, pino · [Compare](https://seerepo.com/compare/bluesky-social/social-app/vs/novuhq/novu)
- [laurent22/joplin](https://seerepo.com/r/laurent22/joplin/built): react-native, React, Expo, Sentry, Postgres, react-native-safe-area-context, react-native-svg, expo-camera, react-native-webview, expo-image-manipulator · [Compare](https://seerepo.com/compare/bluesky-social/social-app/vs/laurent22/joplin)
- [ruvnet/ruflo](https://seerepo.com/r/ruvnet/ruflo/built): React, Express, Postgres, sonner, Zod, Tailwind CSS, prom-client, pino, satori · [Compare](https://seerepo.com/compare/bluesky-social/social-app/vs/ruvnet/ruflo)

## Frequently asked questions

### What language is social-app written in?

social-app is written in TypeScript, with 336,218 written lines.

### What framework does social-app use?

social-app is built with react-native, React, react-navigation, Expo, react-native-web, Echo, expo-modules-core, Preact, Express, and com.facebook.react:react-native.

### What database does social-app use?

social-app stores its data in @react-native-async-storage/async-storage, react-native-mmkv, and idb-keyval and reaches it with kysely.

### What does social-app sign people in with?

social-app signs people in with jwt-decode.

### Does social-app use AI?

Yes. social-app uses AI through lande.

### What services does social-app use?

social-app watches its errors with Sentry and uses lru-cache and Postgres.

The proof: [src/logger/sentry/lib/index.ts, line 13](https://github.com/bluesky-social/social-app/blob/1ff197301c153d7ced43ea7ed66bee311f5e6bb5/src/logger/sentry/lib/index.ts#L13)

### Does social-app have tests?

Yes. social-app has 220 test files and is tested with @testing-library/react-native.

### Which repos have a stack like social-app's?

The ones that share most of its stack: reactive-resume/reactive-resume, multica-ai/multica, and TryGhost/Ghost.

## What is your repo built with?

Any public repo, with no account: https://seerepo.com/r/owner/repo/built, with the owner and name it has on GitHub.
