Skip to content
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
Cannot retrieve contributors at this time


  • Add the "reduce shaking" feature (using sensor smoothing) to the new-location-based A-Frame components #483
  • Include missing THREEx import in gps-new-camera, to allow use of ES6 modules #484
  • Add latLonToWorld() method to gps-new-camera, for compatibility with gps-projected-camera #485
  • Enable the gpsTimeInterval property in gps-new-camera (this sets the geolocation maximumAge property)
  • Add a distance property to gps-new-entity-place, representing the distance in metres from the GPS position to the entity. This is dynamically updated as the GPS position changes.
  • Enhanced new-location-based examples.


  • Display webcam errors via DOM element rather than alert box in three.js location based #429
  • Bugfix for undefined this.orientationChangeEventName in new A-Frame location based #464
  • Bugfix for undefined this.el and eventName in AR.js fork of three.js DeviceOrientationControls #471
  • Tweaks to location-based three.js example


  • Support for other Barcode Markers #469:
    • AR_MATRIX_CODE_5x5_BCH_22_12_5
    • AR_MATRIX_CODE_5x5_BCH_22_7_7
    • AR_MATRIX_CODE_5x5
    • AR_MATRIX_CODE_6x6
  • New arjs-nft-init-data event to get importan NFT marker data (width, height and dpi) #469;
  • Fix for oriantation on iOS #432
  • Typo fix in an example #431


  • New gh build script to compile libs see #415
  • Restored multimarker examples (learner and player) see #419
  • New A-Frame location based code see #406


  • Fixed bug in aframe image tracking see #407
  • Enhanced three location based code #409 #410
  • Removed double build in Three.js (nft or not) #407
  • Added prettier as formatter and husky as pre-formatter #407
  • New action github script to test linting and code formatting #407


  • ES6 feature into master
  • New threejs location based
  • New dispose methods in arjs-context.js and arjs-source.js
  • Use of artoolkit5-js instead of old jsartoolkit5 as base code
  • Other bug fixes see PR #400


  • Fixed bug which prevents minDistance and maxDistance working with a simulated location

  • Fixed typo in name of gps-entity-place-update-position event


  • Fixed bug in arjs-webcam-texture component which caused the webcam stream to freeze on iOS. Thanks to @stevenlybeck for this.

  • CORS proxy removed from examples

  • Added custom found/lost events to markerControls for three.js core (thanks to @fcor)

  • Deactivated GPS listener when AR.js app not in the foreground (thanks to @NVFedorov for raising this issue)

  • update license wording (thanks to @chingucoding)


  • Fix minor location-based bugs


  • Fix shaking of far/near entities on location-based using new configurable properties (thanks to @nickw1)


  • show camera error alert after dispatching camera-error event


  • support arbitrarily distant places on location-based (thanks to @nickw1, see PR #119)
  • minor bug fixes


  • added new, alternative version for location-based using a projected camera based on Spherical Mercator. For this purpose we introduce two new aframe components: gps-projected-camera and gps-projected-entity-place (thanks to @nickw1)
  • added video stop on marker being lost (nft-video example)
  • fixed rotation bug on X axis see issue #59, restored shift position on y instead of z
  • removed links to old repository in the examples
  • added maxDistance property on location-based
  • new arjs-nft-loaded event listener for NFT markers, dispatched when all NFT markers are loaded see PR #98 and issue #97


  • update documentation using latest aframe version on every example


  • fixed minDistance property updating on location based
  • enhanced Image tracking examples


  • fix minor Readme paths/typos


  • cleaned location based examples
  • removed gps-camera-debug component
  • enhanced Custom Events payloads


  • Fixed some path issues to make NFT work with remote sites
  • Updated for new structure


  • Added Image Tracking (NFT) support
  • New structure: 2 alternative versions (A-Frame/Three.js image tracking+location based, A-Frame/Three.js markers+location based)
  • Added a Web Worker for Image Tracking performances (as Blob object to be used cross-domain)
  • New examples structure, divided by features
  • Added examples for Image Tracking
  • Removed minified versions
  • Removed UglifyJS dependency
  • ES6 support
  • Move to new organization
  • Move to new repository
  • Change package.json info
  • Cleaned code from some examples/experiments
  • Removed obsolete code of Aruco markers and Google Tango
  • Reduced repository size by ~36%


  • Restored old camera constraints, was giving better performances for some devices but worst for others.


  • it's now possible to track markers with white background and black shapes, using labelingMode: white_region; property on arjs component (thanks to @umutto)
  • in location based is now possible to simulate altitude, longitude and latitude for user position (thanks to @cmcfadden)
  • default package script for jsdelvr (thanks to @benalfree)


  • handle y position (height) of content in Location Based, using position property of A-FRAME


  • enhanced distance property, now calculating combined distance for latitude/longitude


  • set distance in distance property of gps-entity-place (location based) as z axis (previously was x axis)


  • added distance and distanceMsg properties to gps-entity-place (location based)
  • added new example for distance property
  • added new example for a gps-entity-place that is always facing the user (location based)
  • fixed error when source is image or video and not camera
  • enhanced docs


  • fixed wrong positioning of content on markers


  • fixed a bug that causes Overconstrained Error on desktop
  • cleaned repo (removed data like videos and heavy files)


  • Removed support for Google Tango (obsolete and no more supported by Google)
  • Removed support for Aruco markers
  • Fixed loader bug on location based examples
  • Merged PR jeromeetienne/AR.js#673 and jeromeetienne/AR.js#666
  • Fixed documentation
  • Cleaned repo, preparing for next release


  • Fixed bug on location-based while added places via HTML
  • Added example of location-based using only HTML
  • Added loader during the time between gps-camera initialization and gps-entity-place add


  • Fixed a bug on location-based statically add of places via script


  • Fixed motion and orientation sensors permission for iOS 13+ devices


  • Fixed location-based files build
  • Removed unuseful imports on location-based examples


  • Introduced Location Based Augmented Reality adding new aframe custom components (gps-entity-place, gps-camera, gps-camera-debug)
  • Added new and updated documentation
  • Added examples for Location Based AR
  • Reduced repository size deleting unuseful code


(Release drafted for problems with the release flow. No change from previous version)


  • added event when camera video stream has been appended to the DOM tree (arjs-video-loaded)


  • added events for camera initialization success/error (camera-init, camera-error)
  • enhanced Debug UI style
  • minor documentation fixes


  • updated three.js dependency to r103 version
  • minor documentation fixes
  • replace all rawgit URLs (learn more at


  • added possibility to change border marker color in marker generator


  • optionally manage smooth parameter (for video entity glitches and similar problems)
  • generate .patt files keeping uploaded image name
  • enhanced marker generator
  • reduce build size


  • added a npm run build script for travis


  • Adds TravisCI config with NPM deployment configured - thanks @joestrong - #344



  • aframe-ar.js - <a-marker> elements will emit markerFound and markerLost events - thanks @nikolaymihaylov! Pull Request #303


  • Created an example that demonstrates emitting events when markers are found and lost, and registering the respective event listeners.



  • Fix cross domain issue with
  • reduced npm package size from 250mbyte to 3.5mbyte #256 (thanks @paztis)
  • fixed perspective in artoolkit portrait #212 (thanks @pikilipita)
  • fixed barcode in a-frame #260 (thanks @basbase)
  • created portableAR.js - a simple way to port ar.js to a non-three.js framework
    • it is in /three.js/contribs/portableAR.js
    • in examples/ you can find babylon.js using portableAR.js
  • made webvr-polyfill obsolete
    • it was more a toy than something currently useful
    • it was far from complete, not even in a workable state, anyway
  • reorganized examples/ folder
    • created demos/ to contain working demos
    • created experiments/ to contain work in progress


  • Made tests to report failure - yeah i know it is silly but before it reported
  • Added test to measure performance : fps
  • Added test for markers-area learning and usage
  • Added test for artoolkit, aruco and hit-testing



  • aframe-ar.js - added link into
  • aframe-ar.js - change debugUIEnabled default from false to true.
  • FIX: in aframe-ar.js object3d stayed visible when marker goes out of screen


  • AR.js now work with babylon.js source
  • It is early but it is working!


  • drafting a demo for - tweet - source
  • Magic door bridging AR and VR tweet
    • nice reuseable components available
  • made demos to celebrate firefox 55 - post - source
  • made demo for mapbox - tweet - source
  • vr-camera-controls - or how to walk in VR with AR.js - tweet


  • support for markers-area
    • Efficient user friendly area scanning
    • More Versatile than single marker tracking 0 larger areas than single markers
    • More Robust than single marker tracking - even if only one sub marker is visible it is still tracking
    • More Stable than single marker tracking - position is averaged based on visible markers
  • Support for multiple tracking
  • single api for all tracking
  • tango support
  • support for aruco WIP - all included but need to fix pose estimation


Totally incomplete

  • added smoothedControls - everything tunable via parameters
    • it applies LERP for position/quaternion/scale on sub-controls
    • if display controls object3d when sub-controls has been visible for minVisibleDelay
    • if display controls object3d when sub-controls has been unvisible for minUnvisibleDelay
  • did THREEx.ArMarkerHelper to help visualize marker
  • AR-Code generator - see AR-Code Generator
  • liquid markers are in! water tweet - boing tweet
  • marker invisible cloak are in! with tweening and all :) first tweet - video tweet
  • minimal.html just got a little bit cleaner
    • aka the simplest way to do AR on the web
    • or webar in less than 10 lines of html! on codepen
  • finished hole-in-the-wall demo - duck on my desk tweet
  • support preset in a-frame a-marker - preset = ["hiro" | "kanji"]
  • experiementation in dead-reckoning ... not conclusive
  • early work about videoInWebgl - a important componant of phone-in-hmd usecase first tweet
  • better handling of .baseUrl in aframe default parameters
  • fixed artoolkit projection matrix to be more webgl - projection matrix
    • it was looking to positive-z and y was upside down compared to the usual webgl one
  • Change marker axis - now positive-y is normal to the marker
  • Added logo by @tentone - AR.js logo Nice and slick! thanks @tentone
  • Added a-frame logo in AR - aframe-logo.html
  • added a profile discovery. It helps choose the performance tradeoff which fit your case - profile

1.0.0 - AR.js has landed

  • Fixed the resize issue in a-frame!
  • Performance improvement of image copy time by 40%!!!
    • massive improvement in the pose detection time
    • so maxDetectionRate can go way up
  • Improved documentations

0.9.0 - Initial Release

I worked a lot on WebAR. But i recently reached 60fps on mobile phones. so i think WebAR is now ready to be released :)

I will keep the usual branch model

  • stable release on master branch
  • current release on dev branch
  • features in progress on their own branch