124 lines
9.8 KiB
Markdown
124 lines
9.8 KiB
Markdown
FAQ | Documentation
|
||
|
||
|
||
|
||
-
|
||
|
||
-
|
||
|
||
|
||
|
||
-
|
||
|
||
-
|
||
|
||
-
|
||
|
||
-
|
||
|
||
|
||
|
||
|
||
Skip to contentDocumentationSearch⌘CtrlK Main Navigation PortalThemeMenuReturn to top Sidebar Navigation
|
||
## Get Started
|
||
Overview
|
||
### Quickstart
|
||
Sign inHardwareInstall Node.js & npmInstall Even Hub toolingYour First AppTemplatesArchitecture
|
||
## Build
|
||
Page LifecycleDisplay & UI SystemUI/UX Design GuidelinesDevice APIsContextual MenuNetworkingBackground & Lifecycle
|
||
## Test
|
||
SimulatorLocal TestingPrivate TestingBeta Testing
|
||
## Ship
|
||
Packaging & DeploymentApp Submission & QA Guidelines
|
||
## Reference
|
||
GlossaryCLIVersioning PolicyChangelogFAQ
|
||
## AI Tooling
|
||
Claude CodeOn this pageLast updated: 2026-08-25Most "can I do X?" questions have a one-line answer plus a pointer. That's what this page is, grouped by surface. If yours isn't here, check the Glossary or open an issue in the dev portal.
|
||
## Display & rendering
|
||
|
|
||
| | Q | A
|
||
| | Can I draw arbitrary pixels? | No. The display surface is a container-based model - text, images, and lists. See Display & UI System.
|
||
| | Can I render full-color content? | No. The Even G2 display is monochrome green, 4-bit (16 shades). Source assets must be greyscale; the hardware tints them.
|
||
| | Can I show video / animated GIFs? | No native support. You can simulate animation by sequencing textContainerUpgrade or updateImageRawData calls - BLE bandwidth (~10–30 KB/s) limits practical frame rate.
|
||
| | Can I overlay containers (z-order)? | Yes. SDK 0.0.12+ adds explicit zOrderIndex - larger renders in front; all-or-nothing per page and values unique. Pages that omit it everywhere fall back to declaration order (later renders on top). See Display & UI System.
|
||
| | Do I need to opt in to image compression? | No. SDK 0.0.12+ LZ4-compresses updateImageRawData payloads in transit automatically - zero code change, smaller transfers, faster image updates.
|
||
| | Why LZ4 instead of a higher-ratio codec? | LZ4 has the lowest decompression memory footprint and near-instant encode/decode, which fits the glasses' RTOS memory budget. Compression ratio was a deliberate trade-off, not the priority.
|
||
| | Can I change text brightness? | Yes. SDK 0.0.14+ adds textColor on text containers - five levels, 0-4, despite the name it is brightness not color. Omit it for the device default 4. See Display & UI System.
|
||
| | Can I use my own font? | No. The glasses render with a fixed system font. Sizing/spacing follows Design Guidelines.
|
||
| | What size is the canvas? | 576×288 monochrome green pixels. See Overview.
|
||
| | Can I render emoji? | No. Use Unicode geometric / box-drawing characters instead. See Glossary.
|
||
## Input & sensors
|
||
|
|
||
| | Q | A
|
||
| | Can I detect a tap then long press? | Yes. SDK 0.0.14+ (Even App 2.2.9+) fires LONG_PRESS_EVENT when the press starts and LONG_PRESS_RELEASE_EVENT when it lifts - two separate events, ordinary list/text/sys routing. See Device APIs → Tap then long press.
|
||
| | Can I add my own items to the glasses menu? | Yes. SDK 0.0.14+ (Even App 2.2.9+) lets you attach up to 10 action items via menuObject on create/rebuild; selections arrive as menuItemClickEvent. See Contextual Menu.
|
||
| | Can a menu item show state, like a toggle? | No. Every item is fire-and-forget - one event, menu closes, the glasses never re-render the label. Re-declare the menu to change what it reads. See Contextual Menu.
|
||
| | Can I read raw IMU sensor data? | Yes. IMU_DATA_REPORT events stream at configurable rate. See Device APIs → IMU. A units table is still TBD.
|
||
| | Can I pick which microphone to capture? | Yes - pass AudioInputSource.Glasses or AudioInputSource.Phone to audioControl(true, ...). Default is glasses. Each source is mono. Per-mic capture inside the glasses four-mic array + DOA angle reporting is on the roadmap. See Device APIs → Audio.
|
||
| | Can I trigger haptics on the glasses or R1? | No. No haptic actuator.
|
||
| | Can I detect when the glasses are being worn? | Yes. Wearing-detection events fire on put-on / take-off. See Device APIs.
|
||
| | Can I read battery level? | Yes. Device info API exposes battery percentage. See Device APIs.
|
||
## Networking
|
||
|
|
||
| | Q | A
|
||
| | Can I fetch() arbitrary URLs? | No. The domain must be in your app.json network whitelist. See Networking.
|
||
| | Does the network whitelist bypass CORS? | No. Whitelist is necessary but not sufficient - remote API still needs Access-Control-Allow-Origin.
|
||
| | Can I open a WebSocket? | Yes - same whitelist rules. Expect drops when the WebView backgrounds. See Background & Lifecycle.
|
||
| | Can I open a deep link in the system browser? | TBD. Currently no window.open(url, '_system') equivalent. Track via the dev portal.
|
||
| | Can I receive push notifications? | No. Plugins are foreground-only on the glasses. The phone app receives notifications and may surface them in its own UI.
|
||
| | Can I make network calls while backgrounded? | No. WebView is suspended on background; in-flight requests stall. Plan for resume. See Background & Lifecycle.
|
||
## Storage & state
|
||
|
|
||
| | Q | A
|
||
| | Can I use localStorage? | Yes - survives suspension, kill, and update. Cleared on uninstall.
|
||
| | Can I use IndexedDB or OPFS? | Yes, but quotas are not yet documented. Treat as "best-effort, persistent." Deep-dive coming.
|
||
| | Does state sync between the phone and the glasses? | No - app state lives in the WebView on the phone. The glasses are a render target, not a state store.
|
||
| | Can I share state between two of my apps on the same device? | No. Storage is sandboxed per package_id.
|
||
| | Can I read/write the user's media library or files? | Read: limited. A user-driven single-image picker via pickImageFromAlbum() (with the album permission) returns one AppImageAsset. No bulk read, no write, no file system, no clipboard. See Device APIs → Photos.
|
||
## Packaging & submission
|
||
|
|
||
| | Q | A
|
||
| | Can I publish without a developer account? | No. Account at hub.evenrealities.com is required. See Sign in.
|
||
| | Can I roll back a released version? | No. Fix-forward only. See Submission Flow.
|
||
| | Do I set min_app_version myself? | No. The CLI derives it from your SDK version at pack time and stamps it into the .ehpk. Declare it in app.json only to pin a stricter floor; --enforce-manual-version overrides it for local testing. See Auto-deriving min_app_version.
|
||
| | Why won't my plugin open on an older app? | Its min_app_version (the SDK floor it was packed against) is higher than the user's Even Realities App version, so the app blocks it at open with an update prompt - shown on the glasses if launched there. The user updates the app to open it. See the open-time gate.
|
||
| | Can I commit my API key to the .ehpk? | No - anyone with the released .ehpk can extract bundled contents. Move keys behind a server-side proxy. See Submission Flow.
|
||
| | Can I edit app.json after submission? | Not after Submitted state. Edit metadata in Draft / Test only.
|
||
| | Can I publish a hotfix without going through review? | No. Every version goes through the same review path. Hotfix versions are usually approved faster but not bypassed.
|
||
| | Can I ship to specific countries / regions? | Not currently. All Released versions are globally visible.
|
||
| | Can I price my app? | TBD. No paid distribution yet.
|
||
| | What's the maximum .ehpk size? | Practical cap is currently ~10 MB - larger packages still upload but degrade install UX over BLE.
|
||
## Testing
|
||
|
|
||
| | Q | A
|
||
| | Can I test on the simulator alone? | For UI/logic work, yes. For backgrounding, real permissions, or BLE timing, you need hardware. See Testing Modes.
|
||
| | Can I share a build with a teammate? | Yes - via Beta groups in the dev portal. They install from the phone app's Beta tester section.
|
||
| | Can I automate sim testing in CI? | Yes - the simulator exposes an HTTP API. See Headless Testing.
|
||
| | Can I install two of my own apps side-by-side? | Yes. Each has its own package_id, its own container, its own state.
|
||
| | Can I see device logs from real hardware? | Console output appears in the phone app's dev console when in Developer Mode. See Enable Developer Mode.
|
||
## Languages & locales
|
||
|
|
||
| | Q | A
|
||
| | Which languages are supported in supported_languages? | Currently: en, de, fr, es, it, zh, ja, ko.
|
||
| | How are translations selected at runtime? | Device locale → first match in supported_languages → first item if none match.
|
||
| | How do I localize my UI strings? | TBD - Internationalisation page coming. For now, switch on bridge.getDeviceInfo().locale.
|
||
| | Can I add a locale not in the supported list? | No. Submission validation rejects unknown locales.
|
||
## Privacy & permissions
|
||
|
|
||
| | Q | A
|
||
| | Does my app see the user's name / email? | Only with the user-info permission, and only what they consented to share.
|
||
| | Does my app see other apps' data? | No. Strict per-package_id sandbox.
|
||
| | Does my app see ambient audio when not actively capturing? | No. Capture only fires while audioControl(true) is held and the user has granted the mic permission.
|
||
| | Can my app access the camera? | Not on the glasses - the Even G2 has no camera (privacy-by-design). It can capture from the phone camera via captureImageFromCamera() with the camera permission. See Device APIs → Photos.
|
||
## Misc
|
||
|
|
||
| | Q | A
|
||
| | Can I build with React / Vue / Svelte? | Yes - the SDK is framework-agnostic. The boilerplate uses vanilla TS for size; bring whatever framework you prefer.
|
||
| | Can I use TypeScript? | Yes - it's the recommended path. The SDK ships full type definitions.
|
||
| | Can I use ESM imports? | Yes - the SDK is ESM-first. Vite handles bundling.
|
||
| | Can I use AI tooling (Claude Code) to develop? | Yes - there's a dedicated AI Tooling section with the skill catalog.
|
||
## Related
|
||
|
||
- Glossary - definitions referenced above
|
||
- Versioning Policy - when "TBD" becomes "available"
|
||
- Architecture - the model these answers compose againstPagerPrevious pageChangelogNext pageAI Tooling |