# Tauri 2.0 정식 릴리즈

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

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=17083](https://news.hada.io/topic?id=17083)
- GeekNews Markdown: [https://news.hada.io/topic/17083.md](https://news.hada.io/topic/17083.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2024-10-05T09:32:01+09:00
- Updated: 2024-10-05T09:32:01+09:00
- Original source: [v2.tauri.app](https://v2.tauri.app/blog/tauri-20/)
- Points: 27
- Comments: 4

## Summary

Tauri 2.0은 모든 주요 데스크톱과 모바일 플랫폼을 지원하며, HTML, JavaScript, CSS로 컴파일되는 프론트엔드 프레임워크와 Rust, Swift, Kotlin 같은 언어를 백엔드 로직에 활용할 수 있는 유연성을 제공합니다. create-tauri-app(CTA) 으로 빠르게 새로운 앱을 생성할 수 있으며 새로운 플러그인 시스템과 핫 모듈 교체 기능을 통해 개발자 경험을 개선하였습니다.  또한, 더 세분화된 접근 제어 시스템과 프로세스 간 통신(IPC) 재작성을 통해 성능과 보안성을 강화하였습니다.

## Topic Body

- Tauri는 모든 주요 데스크톱(macOS, Linux, Windows)과 모바일(iOS, Android) 플랫폼을 위한 작고 빠른 바이너리를 구축하기 위한 프레임워크  
- HTML, JavaScript, CSS로 컴파일되는 모든 프론트엔드 프레임워크를 통합할 수 있고, 필요할 때 백엔드 로직을 위해 Rust, Swift, Kotlin 같은 언어를 활용할 수 있음  
- 광범위한 JavaScript API를 제공하여, 대부분의 경우 Rust, Swift, Kotlin으로 코드를 작성할 필요는 없음  
  
### 언제 Tauri를 사용해야 하는가?   
- 모든 플랫폼을 위한 단일 UI 코드베이스를 원하는 경우  
- 가능한 한 많은 사용자에게 그들의 플랫폼(예: Windows, macOS, Linux, Android, iOS)에서 접근  
- 프론트엔드 웹 개발자이고 네이티브 애플리케이션을 작성하고 싶은 경우  
- Rust 개발자이고 Rust로도 작성할 수 있는 옵션을 가진 멋진 UI로 애플리케이션을 작성하고 싶은 경우  
- 웹 개발자 팀이 있고 낮은 초기 투자로 네이티브 애플리케이션 시장으로 확장하고 싶은 경우  
- Rust개발자 팀이 있고 모든 것을 Rust로 작성하고 싶은 경우  
  
### 2.0의 장점 및 개선점  
#### 시작하기 경험 개선  
- 개발자 경험(DX)을 중요시하며, 이 초기 프로세스를 최종 애플리케이션을 구축하고 배포하는 것만큼 원활하게 만들려고 노력함  
- create-tauri-app(CTA)이라는 프로젝트를 만들어 개발자가 처음부터 시작하여 몇 시간이 아닌 몇 분 만에 실행 중인 Tauri 앱을 얻을 수 있음  
  
#### Hot-Module Replacement  
- 1.x에서 이미 개발 프로세스를 개선하기 위해 고려했던 핫 모듈 교체(HMR)를 모바일 장치 및 에뮬레이터로 확장함  
- 애플리케이션의 프론트엔드에 대한 모든 변경 사항은 전체 애플리케이션을 다시 빌드할 필요가 없으며 개발 중인 장치나 운영 체제에서 어떻게 보일지 실시간으로 미리 볼 수 있음  
  
#### 플러그인  
- Tauri 2.0에서 더 발전된 플러그인 시스템을 구축함. 이전 기능의 많은 부분을 공식 플러그인으로 이전하여 커뮤니티가 Tauri에 더 쉽게 기여할 수 있도록 함  
- 플러그인 시스템은 모바일 플러그인도 지원함. iOS에서는 Swift로, Android에서는 Kotlin으로 네이티브 코드를 작성하거나 재사용하고 주석(@Command on Android)을 사용하거나 하위 클래스(YourPluginClass: Plugin on iOS)를 구현하거나 Rust 기반 Tauri 명령에서 Swift 또는 Kotlin 코드를 호출하여 Tauri 프론트엔드에 직접 함수를 노출할 수 있음  
- 제공되는 공식 플러그인은 Tauri의 주요 버전을 따름   
  - **Autostart**: 시스템 시작 시 앱 자동 실행  
  - **Barcode Scanner**: 모바일 앱에서 QR코드, EAN-13 등의 바코드 스캔   
  - **Biometric**: Android와 iOS에서 생체 인증 프롬프트  
  - **Clipboard**: 시스템 클립보드 읽기 및 쓰기  
  - **Command Line Interface (CLI)**: 명령줄 인터페이스에서 인수 구문 분석  
  - **Deep Linking**: Tauri 애플리케이션을 URL의 기본 처리기로 설정  
  - **Dialog**: 파일 열기 및 저장, 메시지 대화상자를 위한 네이티브 시스템 대화상자  
  - **File System**: 파일 시스템 접근  
  - **Global Shortcut**: 전역 단축키 등록  
  - **HTTP Client**: Rust로 작성된 HTTP 클라이언트 접근  
  - **Localhost**: 프로덕션 앱에서 로컬호스트 서버 사용  
  - **Logging**: 구성 가능한 로깅  
  - **NFC**: Android 및 iOS에서 NFC 태그 읽기 및 쓰기  
  - **Notifications**: 사용자에게 네이티브 알림 전송  
  - **OS Information**: 운영 체제에 대한 정보 읽기  
  - **Persisted Scope**: 파일 시스템에 런타임 범위 변경사항 유지  
  - **Positioner**: 창을 일반적인 위치로 이동  
  - **Process**: 현재 프로세스에 접근  
  - **Shell**: 기본 응용 프로그램을 사용하여 파일 및 URL을 관리하고 자식 프로세스를 생성하기 위해 시스템 셸에 접근  
  - **Single Instance**: 한 번에 Tauri 앱의 단일 인스턴스만 실행되도록 보장   
  - **SQL**: sqlx를 통해 프론트엔드가 SQL 데이터베이스와 통신할 수 있는 인터페이스를 제공하는 Tauri 플러그인  
  - **Store**: 영구 키-값 스토리지  
  - **Stronghold**: 암호화된 안전한 데이터베이스   
  - **System Tray**  
  - **Updater**: Tauri 애플리케이션의 인앱 업데이트  
  - **Upload**: HTTP를 통한 파일 업로드  
  - **Websocket**: JavaScript에서 Rust 클라이언트를 사용하여 WebSocket 연결 열기  
  - **Window Customization**  
  - **Window State**: 창 크기와 위치 유지  
  
#### Allowlist의 죽음, Allowlist 만세   
- `allowlist`는 더 이상 존재하지 않음. 이 시스템의 한계에 빠르게 도달했기 때문  
- Tauri 핵심 기능에 대해서만 독점적으로 만들었지만 Tauri의 모든 API를 다루지는 않았음  
- 새로운 시스템은 Tauri의 모든 핵심 API 표면을 다룰 뿐만 아니라 앱과 플러그인 개발자가 통합된 접근 방식으로 자체 액세스 제어와 범위 지정을 구현할 수 있도록 지원함  
- `permissions` - *"Tauri 명령에 대한 On-off 토글"*, `scopes` - *"Tauri 명령에 대한 매개변수 유효성 검사"*, `capabilities` - *"Windows와 WebView에 권한과 범위 연결"*을 사용하여 유연하면서도 사용하기 쉬운 액세스 제어 시스템을 만듦  
- 이름이 지정된 권한 또는 범위 지정 파일을 만들고 다른 이름이 지정된 권한 또는 범위와 재사용 및 결합할 수 있음  
- 이를 통해 여러 단순하거나 복잡한 권한과 범위를 포함하는 더 세분화된 설명적 집합을 구축 가능  
- 이 추가 기능으로 인해 Tauri 코어는 이제 프론트엔드 WebView에서 명령 호출 메시지가 명령 함수에 도달하도록 허용되는지 여부를 이해할 수 있음  
  
#### 프로세스 간 통신(IPC) 재작성   
- IPC 계층을 재작성하여 이제 Raw Payload라는 오랫동안 원했던 기능을 지원하고 내부적으로 작동 방식을 변경함  
- 이전에는 모든 IPC 페이로드가 json으로 직렬화되고 역직렬화되어 오버헤드가 발생했음. 이는 프론트엔드와 백엔드 간에 몇 킬로바이트 이상이 전송되면 눈에 띄게 나타났음  
- 새로운 시스템은 Raw Request를 지원함. 이는 원시 바이트를 직접 사용하거나 자체 (역)직렬화 프로세스(예: bson, protobuf, avro 등)를 사용하여 백엔드에서 프론트엔드로, 또는 그 반대로 대량의 데이터 전송 속도를 높임  
  
#### 배포 가이드  
- Tauri 2.0에서는 모바일 생태계와 커뮤니티 기여로 인해 배포 다양성이 크게 증가함  
- Apple Appstore, Google Play, Microsoft Store, CrabNebula Cloud, Flathub, Snapcraft, AUR 및 기타 배포 형식에 배포하는 방법에 대한 공식 가이드가 배포 문서에 포함

## Comments



### Comment 29871

- Author: plumpmath
- Created: 2024-10-10T06:26:23+09:00
- Points: 1

https://github.com/DioxusLabs/dioxus  
  
러스트로만 개발한다면, 이게 더 나아보이네요. 방금알았음. Tauri 에 집중할랴고 했으나, rust 한언어로만으로 전부 개발할수있다고 하니 요걸로~* IPC보다 빠른 native 로 바로 접근이 가능하다고함.

### Comment 29876

- Author: xguru
- Created: 2024-10-10T09:35:12+09:00
- Points: 1
- Parent comment: 29871
- Depth: 1

[Dioxus - React에서 영향받은 Rust용 UI 라이브러리](https://news.hada.io/topic?id=8258)  
예전에 제가 함 올렸을때는 0.3 버전이라 그런지 난관이 좀 있다는 댓글이 있었습니다.   
  
[Dioxus 0.5: 러스트로 개발하는 웹, 데스크톱, 모바일 앱](https://news.hada.io/topic?id=14052)  
지금은 0.5 니까 달라졌을지도 모르겠네요.

### Comment 29734

- Author: tsboard
- Created: 2024-10-05T22:06:26+09:00
- Points: 1

세상에 정말 놀라운 소식입니다. Windows용 네이티브 앱 개발에도 유용할 것 같고, 모바일에서도 정말 유용하게 잘 쓰여질 것 같습니다.

### Comment 29731

- Author: bus710
- Created: 2024-10-05T11:50:46+09:00
- Points: 1

IPC 재작성이라니.... 영상 같은 큰 데이터 보내기 좋겠네요.
