Responsibilities
- Own the React Native SDK. Drive the design, implementation, and ongoing maintenance of Ditto's React Native SDK, ensuring it meets our high standards for reliability, performance, and developer ergonomics.
- Craft idiomatic APIs for React Native developers. Expose public interfaces that feel natural—hooks, TypeScript types, familiar async patterns, and clear error handling—while abstracting away the complexity of native bridges and synchronization internals.
- Build and maintain native bridges. Implement safe, efficient bindings between JavaScript and native code via JSI, TurboModules, or the classic bridge, handling threading, serialization, memory management, and error propagation.
- Debug across the full stack. Trace issues from JavaScript through the React Native bridge, into native Android and iOS code, and potentially into our Rust core. You'll need to be equally comfortable in Chrome DevTools and Android Studio.
- Work with other SDK owners. Work closely with the engineers who own our native Android, iOS, and Rust SDKs to ensure the React Native SDK stays in sync with platform capabilities and benefits from shared improvements.
- Develop comprehensive test suites. Write and automate unit, integration, and end-to-end tests—including native interop scenarios and multi-device synchronization tests—to continuously validate SDK functionality and guard against regressions.
- Integrate with CI/CD pipelines. Collaborate with the Release and QA teams to embed your tests into our continuous integration workflows, monitor release quality, and iterate rapidly on customer feedback.
- Partner with customer support. Triage and resolve customer-reported integration issues, debug edge-case failures in the field, and feed learnings back into product and engineering roadmaps.
- Mentor and evangelize best practices. Share your expertise in React Native architecture and cross-platform SDK design through design reviews, documentation, and coaching to level up the team.
Requirements
- 5+ years of professional mobile development experience with a proven track record of delivering production-quality applications or libraries.
- Deep expertise in React Native internals. Hands-on experience with the native bridge architecture, JSI, TurboModules, or Fabric. You understand how JavaScript communicates with native code and have debugged issues that span both worlds.
- Strong Android development experience. You've built or maintained Android applications in Kotlin or Java. You can navigate Android Studio, read native stack traces, understand the Android lifecycle, and debug issues at the native layer. This isn't about owning our Android SDK—it's about being effective when React Native issues lead you into native Android code.
- Debugging and diagnostic expertise. Ability to trace issues across the JavaScript-native boundary, read stack traces from multiple languages, interpret logs and memory profiles, and isolate problems in complex cross-platform systems.
- Test automation and CI/CD fluency. Experience designing and implementing unit, integration, and end-to-end tests for mobile SDKs, and integrating them into automated build and release pipelines.
- Excellent communication skills. Strong written and verbal communication to thrive in an async-first, distributed team—drafting clear design docs, participating in code reviews, and coordinating with customers and stakeholders.
Nice to Have
- Native module development experience. You've built custom native modules for React Native that bridge to platform-specific APIs or native libraries, handling threading, serialization, and lifecycle concerns.
- iOS development experience. Familiarity with Swift or Objective-C and Xcode, enabling you to debug issues on both mobile platforms when they arise.
- FFI and JNI experience. Background building and maintaining Foreign Function Interface bridges, particularly JNI bindings between Kotlin/Java and native code.
- Rust development experience. Hands-on work writing, testing, and maintaining Rust codebases, with familiarity in Cargo workflows and idiomatic Rust patterns.
- Experience with SDK distribution. Proven ability to publish packages to npm, including versioning, TypeScript declarations, changelog management, and migration guides.
- Track record of open-source contributions. Demonstrated involvement in React Native or mobile SDK projects that showcases collaborative development and code quality.
Benefits
- Competitive salaries and meaningful equity.
- Health, dental, vision, life, and disability insurance, plus a 401(k) and flexible spending accounts (in the US).
- Flexible time off.
- Atlanta and San Francisco offices open for work or meetings.
Additional Information
- We believe everyone on the team should have a stake in what we’re building.