api: "YAML JSON TOON Database"
version: "1.0.0"
format: "json"
dataset:
  id: 33
  slug: "browser-web-apis-reference"
  title: "Browser Web APIs Reference"
  description: "Essential browser APIs: Fetch, WebSocket, Service Workers, Web Storage, Geolocation, Canvas, WebGL, Notifications, Clipboard."
  category: "Web Technologies"
  category_slug: "web-technologies"
  tags: "javascript,browser,api,websocket,fetch,service-worker,webgl"
  view_count: 0
  created_at: 1777673262
  updated_at: 1777673262
data:
  apis:
    - name: "Fetch API"
      category: "networking"
      purpose: "Modern promise-based interface for making HTTP requests, replacing XMLHttpRequest."
      basic_usage: "fetch(url).then(res => res.json()).then(data => console.log(data));"
      browser_support: "All modern browsers (IE not supported)"
      related_apis:
        - "XMLHttpRequest"
        - "Request"
        - "Response"
        - "Headers"
    - name: "WebSocket"
      category: "networking"
      purpose: "Full-duplex, persistent TCP connection for real-time bidirectional communication."
      basic_usage: "const ws = new WebSocket('wss://example.com'); ws.onmessage = e => console.log(e.data);"
      browser_support: "All modern browsers"
      related_apis:
        - "WebSocketServer (Node.js)"
        - "Server-Sent Events"
    - name: "Service Workers"
      category: "offline"
      purpose: "Background scripts that act as network proxies, enabling offline support, caching, and push notifications."
      basic_usage: "navigator.serviceWorker.register('/sw.js').then(reg => console.log('Registered'));"
      browser_support: "All modern browsers (IE no)"
      related_apis:
        - "Cache API"
        - "Push API"
        - "Background Sync"
        - "Notification"
    - name: "Web Storage (localStorage/sessionStorage)"
      category: "storage"
      purpose: "Simple key-value storage for small amounts of data, persisted across sessions (localStorage) or tab lifetime (sessionStorage)."
      basic_usage: "localStorage.setItem('key', 'value'); const v = localStorage.getItem('key');"
      browser_support: "All browsers including IE8+"
      related_apis:
        - "IndexedDB"
        - "Cache API"
        - "Cookies"
    - name: "IndexedDB"
      category: "storage"
      purpose: "Low-level transactional database for storing large amounts of structured data (including files/blobs)."
      basic_usage: "const db = await indexedDB.open('mydb', 1); db.onsuccess = e => { const store = e.target.result... }"
      browser_support: "All modern browsers"
      related_apis:
        - "Web Storage"
        - "Cache API"
        - "File API"
    - name: "Geolocation API"
      category: "hardware"
      purpose: "Retrieve device's geographic location (latitude, longitude) with user permission."
      basic_usage: "navigator.geolocation.getCurrentPosition(pos => console.log(pos.coords.latitude, pos.coords.longitude));"
      browser_support: "All modern browsers (HTTPS required)"
      related_apis:
        - "Geolocation API (W3C)"
        - "DeviceOrientation API"
    - name: "Canvas API"
      category: "graphics"
      purpose: "2D drawing surface for rendering shapes, text, images, and animations via JavaScript."
      basic_usage: "const ctx = canvas.getContext('2d'); ctx.fillRect(10, 10, 100, 100);"
      browser_support: "All modern browsers (IE9+)"
      related_apis:
        - "WebGL"
        - "CanvasRenderingContext2D"
        - "OffscreenCanvas"
    - name: "WebGL"
      category: "graphics"
      purpose: "JavaScript API for rendering 3D and 2D graphics using the GPU via OpenGL ES."
      basic_usage: "const gl = canvas.getContext('webgl2'); gl.clearColor(0, 0, 0, 1); gl.clear(gl.COLOR_BUFFER_BIT);"
      browser_support: "All modern browsers (IE11 has WebGL 1)"
      related_apis:
        - "WebGL2"
        - "WebGPU (next-gen)"
        - "Three.js (library)"
    - name: "Notifications API"
      category: "notifications"
      purpose: "Display system notifications to the user, even when the browser is not in focus."
      basic_usage: "Notification.requestPermission().then(p => { if (p === 'granted') new Notification('Hello!'); });"
      browser_support: "All modern browsers (requires permission)"
      related_apis:
        - "Push API"
        - "Service Workers"
    - name: "Clipboard API"
      category: "utilities"
      purpose: "Read from and write to the system clipboard (text, images, rich content) with user permission."
      basic_usage: "await navigator.clipboard.writeText('Copied!'); const text = await navigator.clipboard.readText();"
      browser_support: "All modern browsers (HTTPS required)"
      related_apis:
        - "ExecCommand (legacy)"
        - "ClipboardEvent"
    - name: "History API"
      category: "navigation"
      purpose: "Manipulate browser session history (pushState, replaceState) for single-page app navigation without reloads."
      basic_usage: "history.pushState({page: 2}, 'Title 2', '/page2'); window.onpopstate = e => console.log(e.state);"
      browser_support: "All modern browsers (IE10+)"
      related_apis:
        - "Location"
        - "Window.location"
    - name: "Intersection Observer"
      category: "observer"
      purpose: "Asynchronously observe changes in intersection of target element with ancestor or viewport."
      basic_usage: "const observer = new IntersectionObserver(entries => { entries.forEach(e => console.log(e.isIntersecting)); }); observer.observe(el);"
      browser_support: "All modern browsers (IE not)"
      related_apis:
        - "ResizeObserver"
        - "MutationObserver"
