Files
2nd/10_Wiki/Topics/Domain_Programming/Frontend/WebKit.md
T
Antigravity Agent c24165b8bc refactor(topics): 멀티 에이전트용 지식 재편 — _Common(공통 기본기) + Domain_* 구조
에이전트 8종(대화형/프로그래머 C·S/디자이너/설계자/기획자/QA/PD/PM)에게
[공통 기본 능력 + 롤별 Specialty] 2층으로 지식을 주입하기 위한 재분류.
문서 내용·포맷은 무수정, 폴더 이동만 (6,372개 문서 수 보존 확인).

- Topic_Programming → Domain_Programming (내부 구조 보존)
- Topic_Graphic → Domain_Design
- Topic_Business → Domain_Product
- Topic_General → Domain_General
- _Common 신설: Math(구 Topic_Math_Specialty), Reasoning(구 General/From_Thinking & Reasoning),
  Reasoning_Creativity(구 General/From_창의성), Communication(Poetic_Blog_Writing + From_writing)
- 타 도메인의 From_* 폴더는 유지 (출처 표기일 뿐, 이미 도메인에 맞게 분류된 문서)
- 빈 폴더 정리 (memory/procedures)
- 에이전트→폴더 매핑은 workspace의 .astra/agent-knowledge-map.json (9개 에이전트)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 11:05:56 +09:00

6.5 KiB

id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, verification_status, tags, raw_sources, last_reinforced, github_commit, tech_stack
id title category status canonical_id aliases duplicate_of source_trust_level confidence_score verification_status tags raw_sources last_reinforced github_commit tech_stack
wiki-2026-0508-webkit WebKit 10_Wiki/Topics verified self
WebKit
JavaScriptCore
Safari Engine
none A 0.9 applied
browser
engine
webkit
safari
ios
2026-05-10 pending
language framework
c++ webkit

WebKit

매 한 줄

"매 Apple's open-source browser engine — Safari & iOS WebView 의 foundation". 매 KHTML fork (2001) 로 시작, Blink (Chrome) 로 fork (2013), 매 iOS 의 모든 browser (Chrome iOS, Firefox iOS 포함) 가 WebKit 강제 (App Store 정책 — 2025 EU DMA 로 부분 완화). 매 JavaScriptCore (JIT) + WebCore (rendering) + WebKit2 (multi-process) 구조.

매 핵심

매 architecture

  • JavaScriptCore (JSC): 매 JS engine — LLInt → Baseline JIT → DFG JIT → FTL JIT (4-tier).
  • WebCore: 매 HTML/CSS parsing, layout, rendering.
  • WebKit2: 매 multi-process — UI process + Web process (per tab) + Networking process. 매 Chrome 의 Blink 보다 먼저 도입 (2011).
  • Safari ≠ WebKit: 매 Safari 는 WebKit 위 의 shell. 매 WebKit nightly build 는 Safari Technology Preview.

매 distinguishing features (vs Blink/Gecko)

  • iOS 독점: 매 모든 iOS browser 가 WebKit 사용 강제 (UIWebView/WKWebView). 매 EU DMA 로 2024+ 부분 완화 (BrowserEngineKit) 하나 매 실효성 의문.
  • Conservative spec adoption: 매 Web Push, IndexedDB, ServiceWorker 매 늦게 지원. 매 privacy-first stance (ITP, fingerprinting protection).
  • Memory efficiency: 매 Chrome 보다 RAM 적게 사용 — Mac 의 battery life 우위.
  • No Manifest V3 ad-blocker drama: 매 Safari content blocker API 별도.

매 응용

  1. Safari (macOS, iOS, iPadOS, visionOS).
  2. iOS 의 모든 in-app WebView (Twitter/X, Instagram 의 link preview).
  3. PlayStation browser, Amazon Kindle browser.
  4. Bun runtime — 매 JavaScriptCore 사용 (vs Node 의 V8).
  5. GNOME Web (Epiphany), WPE WebKit (embedded).

💻 패턴

Feature detection — Safari quirks

// Safari 의 backdrop-filter
const supportsBackdrop = CSS.supports('backdrop-filter', 'blur(10px)') ||
                        CSS.supports('-webkit-backdrop-filter', 'blur(10px)');

// Safari date input — limited styling
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
if (isSafari) {
  // workaround
}

// iOS Safari 100vh bug (toolbar overlap)
:root {
  --vh: 1vh;
}
// JS sets --vh dynamically

iOS WebKit-specific CSS

/* Tap highlight 제거 */
* { -webkit-tap-highlight-color: transparent; }

/* Bounce scroll 제거 */
body { overscroll-behavior-y: none; }

/* iOS safe area (notch) */
.container {
  padding-top: env(safe-area-inset-top);
  padding-bottom: env(safe-area-inset-bottom);
}

/* Smooth scrolling on iOS */
.scroll-container {
  -webkit-overflow-scrolling: touch; /* legacy, iOS 13+ unnecessary */
  overflow-y: auto;
}

WKWebView (Swift) — bridging JS ↔ native

import WebKit

class ViewController: UIViewController, WKScriptMessageHandler {
  var webView: WKWebView!

  override func viewDidLoad() {
    let config = WKWebViewConfiguration()
    config.userContentController.add(self, name: "iosBridge")
    webView = WKWebView(frame: view.bounds, configuration: config)
    view.addSubview(webView)
  }

  func userContentController(_ ucc: WKUserContentController,
                            didReceive message: WKScriptMessage) {
    if message.name == "iosBridge" {
      print("From JS: \(message.body)")
    }
  }
}

// JS side:
// window.webkit.messageHandlers.iosBridge.postMessage({action: 'login'});

Bun — JavaScriptCore runtime

// Bun 매 JSC 사용 — Node (V8) 보다 startup 빠름
// bun run server.ts
import { serve } from "bun";

serve({
  port: 3000,
  fetch(req) {
    return new Response("Hello from JSC!");
  }
});

// 매 JSC 의 strength: startup time, memory.
// 매 V8 의 strength: peak throughput (FTL 수준), ecosystem.

Detecting WebKit engine

const isWebKit = 'WebkitAppearance' in document.documentElement.style;
const isAppleWebKit = navigator.userAgent.includes('AppleWebKit') &&
                     !navigator.userAgent.includes('Chrome');

// More robust: feature detection over UA sniffing
const hasWebKitDateBug = (() => {
  const input = document.createElement('input');
  input.type = 'date';
  return input.type !== 'date'; // pre-iOS 14
})();

Web Inspector — remote debugging

# iOS Safari → Mac Safari Web Inspector
# 1. iOS: Settings → Safari → Advanced → Web Inspector ON
# 2. Mac: Safari → Develop menu → [device name]
# 3. Inspect any tab/WKWebView

# Simulator 도 동일.
# Chrome iOS 도 매 WebKit 이라 Mac Safari 로 inspect 가능.

매 결정 기준

상황 Approach
iOS app webview 필요 WKWebView (UIWebView deprecated).
Cross-browser test Safari Technology Preview + iOS Simulator.
Bundle size 매 critical 매 JSC (Bun) — Node 대비 startup 빠름.
Modern API 의존 매 Chromium first 개발 후 Safari fallback.
Privacy-first browser Safari (ITP) 또는 Brave.

기본값: WKWebView (iOS), Safari Tech Preview (test), feature detection (production).

🔗 Graph

🤖 LLM 활용

언제: iOS 의 webview 통합, Safari-specific bug 디버깅, Bun runtime 결정, cross-browser CSS issue 의. 언제 X: Chrome-only Chrome extension, Electron app (Chromium), 매 generic web dev (browser-agnostic 지향 의).

안티패턴

  • UA sniffing: navigator.userAgent.includes('Safari') — Chrome iOS 도 WebKit. Feature detection 사용.
  • iOS 의 100vh 무시: 매 toolbar 가 viewport 차지 — dvh 사용 (iOS 15.4+) 또는 JS 로 --vh 계산.
  • Service Worker 의 Safari 무시: 매 iOS 16.4+ 부터 Web Push 지원, iOS PWA 매 still limited.
  • WebKit prefix 무지: 매 -webkit-backdrop-filter 매 still needed for Safari 17 까지.
  • iOS Chrome 을 진짜 Chrome 로 착각: 매 모든 iOS browser 가 WebKit 사용. 매 Chrome iOS 매 Blink 아님.

🧪 검증 / 중복

  • Verified (WebKit official site, WebKit Blog, Apple Developer docs).
  • 신뢰도 A.

🕓 Changelog

날짜 변경
2026-05-08 Phase 1
2026-05-10 Manual cleanup — WebKit engine, iOS quirks, WKWebView bridge, Bun JSC patterns 추가