Playground API
DocsStatsBlogStudio
Documentation Tree
Technical BlogFeature Deep Dives
  • Introduction
  • Quickstart
    5 min
  • How It Works
  • Recipes & Cookbooks
  • Platform Comparisons
  • Real-World Showcase
  • Interactive Studio
    Studio
  • GraphiQL IDE
    IDE
  • Session Quotas & Activity
  • Network Chaos Simulator
  • Atomic Sandbox Reset
  • Overview & Models
    Hub
  • Users Resource
  • Posts Resource
  • Comments Resource
  • Todos Resource
  • Custom Collections
    Custom
  • Multipart File Uploads
    Upload
  • Dynamic SVG Avatars
    SVG
  • Image Thumbnails
    CDN
  • Relational Filtering
  • Full-Text Search
  • Dynamic Sorting
  • Offset Pagination
  • Cursor Pagination
    Scroll
  • CSV & Excel Export & Import
    IO
  • Custom Collections
    CRUD
  • Overview & Architecture
    Hub
  • JWT Auth Flow
  • Refresh Token Rotation
    Mutex
  • RBAC Permission Matrix
    Roles
  • Expiry Simulation
  • Clock Skew Drift
  • Password Recovery Loop
  • Dual-Mode Sandboxing
  • GraphiQL IDE
    IDE
  • Relational Queries
  • Stateful Mutations
  • Realtime Subscriptions
  • Overview & Flowcharts
    Hub
  • Hosted Checkout
    Stripe
  • Payment Intents API
  • 3DS Challenge Modal
    Modal
  • Customers Vault
  • Charges & Refunds
  • Test Cards Catalog
  • Overview & Channels
    Hub
  • Virtual Email Mailbox
    Mailtrap
  • Virtual SMS Terminal
    Phone
  • In-App Notifications
  • Message Dispatcher
  • Realtime Studio
    Studio
  • Native WebSocket (/ws)
  • Socket.io Gateway
  • Presence & Echo Bot
  • Server-Sent Events (SSE)
    SSE
  • Analytics Telemetry
  • Webhook Subscriptions
  • HMAC SHA-256 Signatures
  • Delivery Logs
  • Manual Retry Simulator
  • Network Latency Delay
  • HTTP Status Codes
  • Rate-Limit Simulator
    429
  • Flaky Network & Jitter
    Chaos
  • Session Quotas & Activity
  • JSON Snapshots
    JSON
  • Headless CI/CD Testing
    CI
  • Mobile QR Code Sync
  • System Metrics & Health
  • Atomic Sandbox Reset
  • Official TypeScript SDK
  • Multi-Language Generators
  • DevTools Extension
  • OpenAPI 3.1 Spec
    JSON
  • Postman Collection v2.1
  • Bruno Collection
  • Insomnia Workspace
  • TypeScript .d.ts
    .d.ts
  • AI Prompt Rules
    Rules
  • Context Index (llms.txt)
  • Full Schema (llms-full.txt)
  • Manifest (product.json)
  • All Feature Articles
    Blog
  • React CRUD Without Backend
    Deep Dive
  • Why Static APIs Fail
  • Mocking Stateful Auth
  • WebSockets & SSE Guide
Technical Blog
Articles

In-depth articles explaining stateful mock APIs, WebSockets, payments, and frontend resilience.

Read Articles
PreviousHeadless CI/CD Testing
NextSystem Metrics & Health
Sandbox State & Health

Mobile QR Code State Synchronization

Test mobile responsive websites, iOS Safari, Android Chrome, and React Native builds with the exact stateful data you crafted on your desktop. Sync session tokens across physical devices via QR code without logging in or configuring local proxy tunnels.

SCAN WITH CAMERA
Live Desktop Session Connected

Scan to Sync Desktop Sandbox

Scanning this QR code with your mobile camera opens the web app with the ?_sandbox=... parameter, binding your mobile browser to your active desktop sandbox.

Active Sync URL
https://playground.nileslabs.com?_sandbox=active-session

Cross-Device Sync Architecture

1

Scan QR Code

Use iOS Camera or Android Lens to scan the code. No app downloads or authentication logins required.

2

Cookie Replicated

The API receives the _sandbox query param and issues a matching session cookie to your mobile browser.

3

Bidirectional Sync

Posts created on your phone appear immediately on desktop. Both devices share the exact same stateful overlay.

React Native & Expo Setup

In mobile native environments where cookies are not automatically shared, pass the session token via the X-Playground-Identity header:

MobileBlogFeed.tsx
1
// App.tsx in React Native / Expo
2
import React, { useState, useEffect } from 'react';
3
import { View, Text, FlatList } from 'react-native';
4
import axios from 'axios';
5
6
// 1. Session token extracted from QR scanner or deep link
7
const MOBILE_SESSION_ID = 'mobile-demo-session-8f42';
8
9
const api = axios.create({
10
baseURL: 'https://playground.nileslabs.com/api/v1',
11
headers: {
12
// Synchronizes this mobile device with your desktop session!
13
'X-Playground-Identity': MOBILE_SESSION_ID,
14
},
15
});
16
17
export default function MobileBlogFeed() {
18
const [posts, setPosts] = useState([]);
19
20
useEffect(() => {
21
api.get('/posts?_limit=10').then((res) => {
22
setPosts(res.data.data);
23
});
24
}, []);
25
26
return (
27
<View style={{ flex: 1, padding: 20, backgroundColor: '#fff' }}>
28
<Text style={{ fontSize: 22, fontWeight: 'bold', marginBottom: 15 }}>
29
Synchronized Desktop Feed
30
</Text>
31
<FlatList
32
data={posts}
33
keyExtractor={(item) => String(item.id)}
34
renderItem={({ item }) => (
35
<View style={{ paddingVertical: 10, borderBottomWidth: 1, borderColor: '#eee' }}>
36
<Text style={{ fontWeight: '600' }}>{item.title}</Text>
37
<Text style={{ color: '#666', marginTop: 4 }}>{item.body}</Text>
38
</View>
39
)}
40
/>
41
</View>
42
);
43
}

Want to inspect cluster health metrics?

Monitor live server uptime, latency round-trips, and memory usage telemetry.

View System Health