Keep multiple browsers & devices in sync when building websites. http://browsersync.io
Clone or download
Permalink
Failed to load latest commit information.
certs chore: move certs to top-level Dec 22, 2017
cli-options fix: Don’t always add "defaultIgnorePatterns" - fixes #1543 May 3, 2018
client fix: scroll - add missing init method for window.name method of scrol… Aug 26, 2018
cypress Update broken external link Aug 23, 2018
examples compiled assets Jan 24, 2018
lib docs: added additional note about httpModule option - fixes #1485 Sep 17, 2018
templates feat: (client) make initial options available in initial payload Apr 29, 2018
test fix: proxy Port gets unnecesarily rewritten in Proxy - fixes #1577 Aug 26, 2018
.editorconfig docs: Add middleware option comment Dec 30, 2015
.gitattributes Add .gitattributes Nov 14, 2014
.gitignore Merge pull request #1555 from BrowserSync/bugs/1553 May 3, 2018
.travis.yml ci: don't run coverage Jun 24, 2018
CHANGELOG.md changelog generator Jan 1, 2018
CONTRIBUTING.md docs: emphasize a coupld of points - fixes #1461 Sep 17, 2018
ISSUE_TEMPLATE.md Create ISSUE_TEMPLATE.md Feb 18, 2016
LICENSE branding: rename BrowserSync to Browsersync May 26, 2015
README.md https links Apr 13, 2018
appveyor.yml ci: build on node 8 Dec 21, 2017
changelog.js add misc field to generator Jan 1, 2018
crossbow.yaml fix: Remote Debug tools do not work - fixes #1556 May 3, 2018
cypress.json fix: scroll - add missing init method for window.name method of scrol… Aug 26, 2018
package-lock.json deps: npm audit for localtunnel - fixes #1587 Sep 11, 2018
package.json deps: npm audit for localtunnel - fixes #1587 Sep 11, 2018
tsconfig.json Resolved warning in tsconfig. Apr 29, 2018

README.md

Keep multiple browsers & devices in sync when building websites.

Browsersync is developed and maintained internally at JH

Follow @Browsersync on twitter for news & updates.

Community

Features

Please visit browsersync.io for a full run-down of features

Requirements

Browsersync works by injecting an asynchronous script tag (<script async>...</script>) right after the <body> tag during initial request. In order for this to work properly the <body> tag must be present. Alternatively you can provide a custom rule for the snippet using snippetOptions

Upgrading from 1.x to 2.x ?

Providing you haven't accessed any internal properties, everything will just work as there are no breaking changes to the public API. Internally however, we now use an immutable data structure for storing/retrieving options. So whereas before you could access urls like this...

browserSync({server: true}, function(err, bs) {
    console.log(bs.options.urls.local);
});

... you now access them in the following way:

browserSync({server: true}, function(err, bs) {
    console.log(bs.options.getIn(["urls", "local"]));
});

Install and trouble shooting

browsersync.io docs

Integrations / recipes

Browsersync recipes

Support

If you've found Browser-sync useful and would like to contribute to its continued development & support, please feel free to send a donation of any size - it would be greatly appreciated!

Support via Gittip Support via PayPal

Apache 2 Copyright (c) 2016 Shane Osbourne