{"id":16858025,"url":"https://github.com/leeoniya/ueye","last_synced_at":"2026-01-03T08:50:13.622Z","repository":{"id":66147155,"uuid":"62350146","full_name":"leeoniya/uEye","owner":"leeoniya","description":"A micro-lib for UI/UX interaction recording, logging \u0026 playback (IE9+)","archived":false,"fork":false,"pushed_at":"2016-07-01T07:32:08.000Z","size":2,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-24T18:12:25.790Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leeoniya.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-07-01T00:17:22.000Z","updated_at":"2016-07-01T06:03:02.000Z","dependencies_parsed_at":"2024-06-11T21:47:08.820Z","dependency_job_id":"7113ed57-7b82-42ac-b15a-a252682e93a8","html_url":"https://github.com/leeoniya/uEye","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leeoniya%2FuEye","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leeoniya%2FuEye/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leeoniya%2FuEye/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leeoniya%2FuEye/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leeoniya","download_url":"https://codeload.github.com/leeoniya/uEye/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244217951,"owners_count":20417677,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-13T14:11:14.933Z","updated_at":"2026-01-03T08:50:13.557Z","avatar_url":"https://github.com/leeoniya.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"uEye\n----\nA micro-lib for UI/UX interaction recording, logging \u0026 playback (IE9+) _(MIT Licensed)_\n\n---\n#### Have you ever wondered...\n\n- How do users interact with my website/SPA?\n- How well does it load/perform for them?\n- What are they doing before bouncing?\n- Do they bother scrolling the landing pages? How far?\n- What UI path leads to the fastest or highest value conversions?\n\nuEye can help you answer these and other questions without relying on third-party analytics libs (which can be slow, bulky and ad-blocked) and without compromising your users' privacy.\n\n---\n#### Features\n\n- Tiny - 2k recorder, 2k player\n- Unobtrusive \u0026 fast - uses events' capture phase and 100ms polling\n- Simple API for recording, playback \u0026 extending\n- Custom event logging\n- Chrome, Firefox, IE9+ (recorder), Chrome, Firefox (player)\n- 0 dependencies, though the following are recommended, as needed:\n\t- [simpleheat](https://github.com/mourner/simpleheat) for heatmaps\n\t- [hammer.js](https://github.com/hammerjs/hammer.js) for touch \u0026 gesture events\n\t- [mousetrap](https://github.com/ccampbell/mousetrap) for key combo events\n\t- [keycode](https://github.com/timoxley/keycode) for keycode mapping\n\t- [JSONH](https://github.com/WebReflection/JSONH) for log compression\n\t- [alite](https://github.com/chrisdavies/alite) for ajax\n\n---\n#### Basic Usage\n\n1. On any page you want to record...\n\n\t```html\n\t\u003cscript src=\"/ueye/recorder.js\"\u003e\u003c/script\u003e\n\t\u003cscript\u003e\n\t\t// start recording\n\t\tvar rec = new uEye.recorder();\n\t\trec.record();\n\n\t\t// ajax post log to server before page unload\n\t\twindow.addEventListener(\"beforeunload\", function(e) {\n\t\t\tvar req = new XMLHttpRequest();\n\t\t\treq.open(\"POST\", \"/uilogs\");\n\t\t\treq.setRequestHeader(\"Content-Type\", \"application/json\");\n\t\t\treq.send(JSON.stringify(rec.log));\n\t\t});\n\t\u003c/script\u003e\n\t```\n\n2. Create a page on the server which can load the player and the stored log, for example `/ueye/player.php?log=12345`:\n\n\t```html\n\t\u003cscript src=\"/ueye/player.js\"\u003e\u003c/script\u003e\n\t\u003cscript\u003e\n\t\t// barf the stored json log here (or do a secondary ajax request to fetch it)\n\t\tvar log = \u003c?= $log12345 ?\u003e;\n\n\t\t// create player\n\t\tvar ply = new uEye.player(log, {css: \"/ueye/ueye.css\"});\n\n\t\t// start playback\n\t\tply.play();\n\t\u003c/script\u003e\n\t```\n\n3. Optionally, use the example [playback \u0026 timeline controls](\"/\") rather than controlling the player through its API\n\n---\n#### Demos\n\n---\n#### Docs\n\n---\n#### Limitaions\n\n- uEye does not simulate mouse/keyboard/touch events (this is often impossible), so will not interact with your web page besides scrolling and resizing. The lib only shows when \u0026 where the events occur. For example, if a user hovers a drop-down nav menu or types into a form field, this will not visually occur during playback. However, if you've logged these events you can hook the player's `onevent` and manually trigger these actions as you see fit.\n- The player does not yet support multiple logs, so it's limited to replaying interactions with only a single page. To replay a user's entire session, you would need to string together multiple logs, though this should be fairly simple.\n\n---\n#### TODO","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleeoniya%2Fueye","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleeoniya%2Fueye","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleeoniya%2Fueye/lists"}