When shooting HDR brackets, you often know what you want your brightest or darkest shutter speed to be, but your camera requires you to start from the middle value for some reason.
Calculating that middle shutter speed in your head is hard, so this app presents a simple scrollable exposure table to show you the bracket sequence's darkest, middle, and brightest shutter speeds.
Depending on your camera's settings and capabilities, you can adjust the sequences and shutter speeds shown to you. So it's slightly more than just a static table ;)
The footer shows the complete sequence of all images.
- Scrollable exposure list - See a summary of the bracket sequence in three columns (Darkest, Mid, Brightest)
- Adjustable bracketing - Configure bracket count (3–11), EV spacing (1–3 stops), and camera shutter speed limits
- 1/3-stop support - Toggle between full-stop and third-stop increments
- Persistent settings - Remembers your settings between sessions using local storage
- Common presets - Emoji indicators for typical exposure scenarios:
- ☀️ Sunny day (1/8000 → 1/2")
- 🏠 Indoor (1/1000 → 4")
- 🌚 Night (1/250 → 15")
- Node.js (LTS)
- Expo Go app installed on a device, or an emulator
-
Install dependencies:
npm install
-
Start the dev server:
npm run start
-
Scan the QR code with Expo Go, or press the platform shortcut in the Expo terminal.
To build an APK for testing on Android devices:
eas build --platform androidThe build will be compiled in the cloud and a download link provided on completion.
npm run start- Start development servernpm run android- Launch on Android emulatornpm run ios- Launch on iOS simulatornpm run web- Launch on web
components/- Reusable UI componentsscreens/- App screens (MainScreen, SettingsScreen)utils/- Exposure math, shutter speed utilities, themecontext/- App state management with AsyncStorage persistence
- State Management - React Context with custom hooks
- Persistence - AsyncStorage for settings
- Exposure Math - Index-based stepping through sorted shutter speed options
- UI - React Native ScrollView with dynamic active row detection
