# Show GN: Craby: React Native를 위한 Type-Safe Rust 통합 도구

> Clean Markdown view of GeekNews topic #24141. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=24141](https://news.hada.io/topic?id=24141)
- GeekNews Markdown: [https://news.hada.io/topic/24141.md](https://news.hada.io/topic/24141.md)
- Type: show
- Author: [leegeunhyeok](https://news.hada.io/@leegeunhyeok)
- Published: 2025-11-05T04:05:03+09:00
- Updated: 2025-11-05T04:05:03+09:00
- Original source: [craby.rs](https://craby.rs)
- Points: 7
- Comments: 5

## Summary

React Native에서 **Rust 모듈을 직접 TurboModule로 통합**할 수 있게 해주는 **Craby**는, 타입 안전성과 성능을 모두 잡은 흥미로운 시도입니다. TypeScript로 API를 정의하면 **Rust–C++ 바인딩 코드가 자동 생성**되어, 개발자는 비즈니스 로직에만 집중할 수 있습니다. 특히 **ExpoModules 대비 최대 80배 빠른 성능**을 보여주며, 복잡한 ObjC/Java 레이어 없이 순수 C++ 경로로 실행된다는 점이 인상적입니다. Rust로 모바일 네이티브 성능을 극대화하고 싶은 개발자라면 꼭 살펴볼 만한 프로젝트입니다.

## Topic Body

React Native에서 Rust 기반 모듈을 순수 C++ TurboModule과 통합할 수 있게 해주는 도구 Craby를 소개합니다.  
  
문서 보러가기: [https://craby.rs](https://craby.rs)  
GitHub: [https://github.com/leegeunhyeok/craby](https://github.com/leegeunhyeok/craby)  
  
#### Craby란?  
  
Craby는 Rust로 고성능 네이티브 모듈을 작성하면서 TypeScript - Rust - C++ 전체 스택에서 타입 안전성을 유지할 수 있는 개발 도구입니다. React Native TurboModule의 플랫폼별 레이어(ObjCTurboModule/JavaTurboModule) 없이, 순수 C++ TurboModule과 직접 통합하여 최고의 성능을 끌어냅니다.  
  
#### 성능  
  
다른 솔루션과의 벤치마크 비교 ([벤치마크 참고](https://github.com/leegeunhyeok/NitroBenchmarks)):  
  
- ExpoModules 대비 20-80배 빠름  
- 표준 TurboModules 대비 15-20배 빠름  
- NitroModules(Swift/Kotlin 기반, C++ 아님)대비 25~30% 빠름  
  
> 이는 극단적인 처리량 테스트(10만 회 호출)이며, 실제 사용 환경에서는 결과가 다를 수 있으니 참고만 부탁드립니다.  
  
#### 주요 기능  
  
- 자동 코드 생성: TypeScript로 API를 정의하면 Rust/C++ 바인딩을 자동 생성  
- 타입 안전성: TypeScript, Rust, C++ 간 컴파일 타임 타입 체킹  
- Zero-Cost FFI: [cxx](https://cxx.rs)를 통해 Rust-C++ 상호운용 오버헤드 최소화  
- 간단한 API: Rust 구현에만 집중하면 나머지는 Craby가 처리  
  
#### 사용 예시  
  
```typescript  
// 모듈 스키마 정의 (TypeScript)  
interface Spec extends NativeModule {  
  add(a: number, b: number): number;  
}  
```  
  
```rust  
// 실제 모듈 구현 (Rust)  
#[craby_module]  
impl CalculatorSpec for Calculator {  
    fn add(&mut self, a: Number, b: Number) -> Number {  
        a + b  
    }  
}  
```  
  
모든 브릿징 코드는 Craby가 자동으로 생성하며, 사용자는 실제 모듈(Rust)만 구현하면 됩니다.  
  
자세한 내용은 문서/GitHub 저장소 참조 부탁드리며, 다양한 피드백은 언제든지 환영합니다!

## Comments



### Comment 46032

- Author: bangdy
- Created: 2025-11-07T13:03:24+09:00
- Points: 1

좋은 프로젝트네요. 별표 추가했어요!!

### Comment 45906

- Author: gargoyle92
- Created: 2025-11-05T13:59:28+09:00
- Points: 1

괴물 근혁님…

### Comment 45885

- Author: mindok
- Created: 2025-11-05T09:20:14+09:00
- Points: 1

진짜 대단하신 분들이 엄청 많네요..

### Comment 45884

- Author: skageektp
- Created: 2025-11-05T09:14:53+09:00
- Points: 1

와... 혹시 이 도구를 만드시게 된 계기가 있으신가요? 저도 이런거 만들어보고 싶은데, 다들 어떤 계기가 있어서 만드시는가 궁금했습니다.

### Comment 45989

- Author: leegeunhyeok
- Created: 2025-11-06T15:39:24+09:00
- Points: 1
- Parent comment: 45884
- Depth: 1

최근 New Architecture로 넘어가야하는 상황이 생겼는데요, TurboModule 내부 구현을 살펴보면서 “이렇게 접근해보면 충분히 가능성 있겠는데” 라는 아이디어로부터 시작하게 되었습니다!
