• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<h1>Manifest Version</h1>
2
3<style type="text/css">
4#schedule h3 {
5  margin-bottom:0;
6}
7
8#schedule p {
9  margin-top:0;
10  margin-bottom:1em;
11}
12</style>
13
14<p>
15  Extensions, themes, and applications are simply bundles of resources, wrapped
16  up with a <a href="manifest"><code>manifest.json</code></a> file that
17  describes the package's contents. The format of this file is generally stable,
18  but occasionally breaking changes must be made to address important issues.
19  Developers should specify which version of the manifest specification their
20  package targets by setting a <code>manifest_version</code> key in their
21  manifests.
22</p>
23
24<h2 id="current-version">Current Version</h2>
25
26<p>
27  Developers should currently specify
28  <strong><code>'manifest_version': 2</code></strong>:
29</p>
30
31<pre>{
32  ...,
33  "manifest_version": 2,
34  ...
35}</pre>
36
37<p>
38  Manifest version 1 was <em>deprecated</em> in Chrome 18, and support will
39  be phased out according to the following schedule.
40</p>
41
42<h2 id="manifest-v1-support-schedule">Manifest version 1 support schedule</h2>
43
44<div id="schedule">
45<h3 id="manifest-v1-august2012">August 2012</h3>
46<ul>
47  <li>The Web Store will block creation of new manifest version 1 extensions.
48  <li>The Web Store will allow updates to existing manifest version 1 extensions.
49</ul>
50
51<h3 id="manifest-v1-march2013">March 2013</h3>
52<ul>
53  <li>The Web Store will block updates to manifest version 1 extensions on March
54  4th, 2013.
55</ul>
56
57<h3 id="manifest-v1-april2013">April 2013</h3>
58<ul>
59  <li>Chrome 27 Beta will stop packaging manifest version 1 extensions (or loading
60    them for development).
61</ul>
62
63<h3 id="manifest-v1-june2013">June 2013</h3>
64<ul>
65  <li>The Web Store will remove manifest version 1 extensions from the wall,
66    search results, and category pages.
67  <li>Notice emails will be sent to all developers with manifest
68    version 1 extensions still in the store reminding them that these
69    extensions will be unpublished and providing update instructions.
70</ul>
71
72<h3 id="manifest-v1-september2013">September 2013</h3>
73<ul>
74  <li>The Web Store will unpublish all manifest version 1 extensions.
75  <li>Final notice emails will be sent to developers with manifest
76    version 1 extensions still in the Web Store.
77  <li>Chrome will continue to load and run installed manifest
78    version 1 extensions.
79</ul>
80
81<h3 id="manifest-v1-january2014">January 2014</h3>
82<ul>
83  <li>Chrome will stop loading or running manifest
84    version 1 extensions.
85</ul>
86</div>
87
88<h2 id="manifest-v1-changes">Changes between version 1 and 2</h2>
89
90<ul>
91  <li>
92    <p>
93      A content security policy is set to <code>`script-src 'self'
94      chrome-extension-resource:; object-src 'self'</code> by default. This has
95      a variety of impacts on developers, described at length in the
96      <a href="../extensions/contentSecurityPolicy">
97      <code>content_security_policy</code></a> documentation.
98    </p>
99  </li>
100  <li>
101    <p>
102      A package's resources are no longer available by default to external
103      websites (as the <code>src</code> of an image, or a <code>script</code>
104      tag). If you want a website to be able to load a resource contained in
105      your package, you'll need to explicitly whitelist it via the
106      <a href="manifest/web_accessible_resources">
107        <code>web_accessible_resources</code>
108      </a> manifest attribute. This is particularly relevant for extensions that
109      build up an interface on a website via injected content scripts.
110    </p>
111  </li>
112  <li>
113    <p>
114      The <code>background_page</code> property has been replaced with a
115      <code>background</code> property that contains <em>either</em> a
116      <code>scripts</code> or <code>page</code> property. Details are available
117      in the <a href="event_pages">Event Pages</a> documentation.
118    </p>
119  </li>
120  <li>
121    <p>Browser action changes:</p>
122    <ul>
123      <li>
124        <p>
125          The <code>browser_actions</code> key in the manifest, and the
126          <code>chrome.browserActions</code> API are gone. Use the singular
127          <a href="browserAction">
128            <code>browser_action</code> and <code>chrome.browserAction</code>
129          </a> instead.
130        </p>
131      </li>
132      <li>
133        <p>
134          The <code>icons</code> property of <code>browser_action</code> has
135          been removed. Use <a href="browserAction#manifest">
136            the <code>default_icon</code> property
137          </a> or $(ref:browserAction.setIcon) instead.
138        </p>
139      </li>
140      <li>
141        <p>
142          The <code>name</code> property of <code>browser_action</code> has been
143          removed. Use <a href="browserAction#manifest">
144            the <code>default_title</code> property
145          </a> or $(ref:browserAction.setTitle) instead.
146        </p>
147      </li>
148      <li>
149        <p>
150          The <code>popup</code> property of <code>browser_action</code> has
151          been removed. Use <a href="browserAction#manifest">
152            the <code>default_popup</code> property
153          </a> or $(ref:browserAction.setPopup) instead.
154        </p>
155      </li>
156      <li>
157        <p>
158          The <code>default_popup</code> property of <code>browser_action</code>
159          can no longer be specified as an object. It must be a string.
160        </p>
161      </li>
162    </ul>
163  </li>
164  <li>
165    <p>Page action changes:</p>
166    <ul>
167      <li>
168        <p>
169          The <code>page_actions</code> key in the manifest, and the
170          <code>chrome.pageActions</code> API are gone. Use the singular
171          <a href="pageAction">
172            <code>page_action</code> and <code>chrome.pageAction</code>
173          </a> instead.
174        </p>
175      </li>
176      <li>
177        <p>
178          The <code>icons</code> property of <code>page_action</code> has been
179          removed. Use <a href="pageAction#manifest">
180            the <code>default_icon</code> property
181          </a> or $(ref:pageAction.setIcon) instead.
182        </p>
183      </li>
184      <li>
185        <p>
186          The <code>name</code> property of <code>page_action</code> has been
187          removed. Use <a href="pageAction#manifest">
188            the <code>default_title</code> property
189          </a> or $(ref:pageAction.setTitle) instead.
190        </p>
191      </li>
192      <li>
193        <p>
194          The <code>popup</code> property of <code>page_action</code> has been
195          removed. Use <a href="pageAction#manifest">
196            the <code>default_popup</code> property
197          </a> or $(ref:pageAction.setPopup) instead.
198        </p>
199      </li>
200      <li>
201        <p>
202          The <code>default_popup</code> property of <code>page_action</code>
203          can no longer be specified as an object. It must be a string.
204        </p>
205      </li>
206    </ul>
207  </li>
208  <li>
209    <p>
210      The <code>chrome.self</code> API has been removed. Use
211      <a href="extension"><code>chrome.extension</code></a> instead.
212    </p>
213  </li>
214  <li>
215    <p>
216      <code>chrome.extension.getTabContentses</code> (!!!) and
217      <code>chrome.extension.getExtensionTabs</code> are gone. Use
218      $(ref:extension.getViews) instead.
219    </p>
220  </li>
221  <li>
222    <p>
223      <code>Port.tab</code> is gone. Use
224      $(ref:runtime.Port)
225      instead.
226    </p>
227  </li>
228</ul>
229