Skip to content

SOC-0031: Build Native Apps using the Deno TypeScript Runtime

Project size: 3 months

Estimated difficulty: Hard

  • Proficiency with Deno and TypeScript
  • Experience using FFI to bridge between JavaScript runtimes and native libraries
  • Familiarity with iOS development (UIKit, Xcode toolchain, code signing)
  • Understanding of custom renderer architectures (React, Solid, Vue, or Angular host configs)
  • Knowledge of JavaScript engines (V8 and QuickJS)

Description

This project will bring the Deno runtime to native iOS application development. It begins by cross-compiling Deno for arm64 iOS and embedding it into an Xcode project. You’ll then use Deno’s FFI API to invoke UIKit and render a centered “Hello World!” UILabel at app launch. Building on that demo, you’ll design and implement a custom renderer (e.g. React) that maps framework primitives (<View>, <Text>, <Button>) directly to UIKit components via FFI. If mobile performance proves challenging, you’ll add a macOS “Deno Native” fallback mode. Finally, you’ll prototype swapping V8 for QuickJS in the Deno binary to evaluate startup time and bundle size improvements on iOS.

Expected Results

  • A cross-compiled Deno binary for iOS (arm64) with build and packaging scripts
  • An VS Code sample app that uses Deno FFI to display a “Hello World!” UILabel
  • A published custom renderer package (e.g. deno-react-renderer-ios) exposing core native components

Stretch Goals

  • Hot-reload over a development WebSocket bridge
  • Desktop fallback support on macOS using the same renderer API
  • Sample apps for iPadOS, Mac Catalyst, tvOS, and visionOS
  • VS Code extension for streamlined renderer development and Deno deployment
  • A QuickJS-powered Deno prototype and a comparative performance report