---
title: "Introducing AngularFire 1.0"
description: "Introducing AngularFire 1.0"
published: "2015-03-05"
last_updated: "2015-03-05"
authors:
  - "David East (Developer Advocate)"
categories:
  - "Angular"
  - "AngularFire"
  - "Launch"
canonical_url: "https://firebase.blog/posts/2015/03/introducing-angularfire-10_99"
---

# Introducing AngularFire 1.0

*Published March 5, 2015 by David East (Developer Advocate)*

---
Today we’re excited to introduce version 1.0 of AngularFire. This new release focuses on enhancing two characteristics of AngularFire: stability and simplicity.

### Stable API
With a 1.0 release we will guarantee backwards-compatibility with all future 1.x.x releases. We would like to thank those who built amazing apps during the beta. Without your support and feedback AngularFire wouldn't be what it is today.

### Simpler API
The goal of AngularFire is to remove the complexity of synchronizing collections. The 1.0 release removes the overlap between the Firebase SDK and the AngularFire library. AngularFire is now focused on on what it’s good at: synchronized bindings. We've removed the `$firebase` service in favor of two new services: `$firebaseArray` and `$firebaseObject`. Authentication through the `$firebaseAuth` service is already stable and remains unchanged.

### `$firebaseArray` and `$firebaseObject`
The `$firebase` service added an unnecessary step to the synchronization process. The 1.0 release cuts right to the chase. If you need a synchronized array, inject the `$firebaseArray` service and pass it a reference:

```js
app.controller("Ctrl", function($scope, $firebaseArray) {
  var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com");
  $scope.items = $firebaseArray(ref);
});
```

It's a similar process to use `$firebaseObject` to create a synchronized object:

```js
app.controller("Ctrl", function($scope, $firebaseObject) {
  var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com");
  $scope.obj = $firebaseObject(ref);
});
```

These new services are functionally equivalent to the `$asArray()` and `$asObject()` methods present in AngularFire 0.9. For example, the 0.9 `$firebase(ref).$asArray()` method returns the same array as the 1.0 `$firebaseArray(ref)`.

### `$extend()`
The 0.8 release introduced the `$extendFactory()` method on arrays and objects. This powerful method provided transformations on AngularFire to fit your own model's behavior. In the 1.0 release we've renamed it to `$extend()`.

```js
script
app.factory("ArrayWithSum", function($firebaseArray) {
  return $firebaseArray.$extend({
    sum: function() {
      var total = 0;
      angular.forEach(this.$list, function(rec) {
        total += rec.x;
      });
      return total;
    }
  });
});
```

You may notice that the `new` operator is now optional for `$firebaseArray` and `$firebaseObject`. However, when using `$extend()`, we must always use the `new` operator.

```js
app.controller("ArrayCtrl", function($scope, ArrayWithSum) {
  var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com");
  $scope.data = new ArrayWithSum(ref);
});
```

### Improved Documentation
We take pride in our documentation at Firebase. Now that AngularFire has hit 1.0, it deserves a guide with an expanded structure that mirrors our other SDKs. We’ve paved the way for continued updates to add relevant samples and sections.

[Visit the new docs](https://github.com/firebaseextended/angularfire) for a step-by-step development guide on mastering AngularFire.

### CommonJS Support
For those of you who love `require()`, AngularFire 1.0 is the release for you. Angular 1.4 and AngularFire 1.0 now support CommonJS:

```js
var angular = require("angular");
var angularfire = require("../angularfire");
```

### Migration Path from 0.9 to 1.0
We are providing a migration guide to upgrade from previous versions. The migration guide can be [found here](/docs/web/libraries/angular/migration-guides.html).

### Feedback is welcome
We want to know what you think of the new features. Drop a comment below or send us any feedback on our [Angular Google Group](https://groups.google.com/forum/#!forum/firebase-angular).

For more information check out the new [in-depth guide](/docs/web/libraries/angular/guide). Or for a crash course, visit the [AngularFire quickstart](/docs/web/libraries/angular/quickstart.html) or try the [five minute tutorial](/tutorial/#tutorial/angular/0).
