forked from withastro/astro.build
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.json
546 lines (546 loc) · 339 KB
/
test.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
[
{
"headers": [
{
"depth": 3,
"slug": "general-information",
"text": "General Information"
},
{
"depth": 3,
"slug": "information-gathering-and-usage",
"text": "Information Gathering and Usage"
},
{ "depth": 3, "slug": "cookies", "text": "Cookies" },
{ "depth": 3, "slug": "data-storage", "text": "Data Storage" },
{
"depth": 3,
"slug": "data-retention-and-deletion",
"text": "Data Retention and Deletion"
},
{
"depth": 3,
"slug": "rights-of-data-subjects",
"text": "Rights of Data Subjects"
},
{
"depth": 3,
"slug": "we-may-share-your-information-with",
"text": "We may share your information with"
},
{
"depth": 4,
"slug": "google-analytics-google-inc",
"text": "Google Analytics (Google, Inc.)"
},
{
"depth": 3,
"slug": "eueea---us-data-transfers",
"text": "EU/EEA - US Data Transfers"
},
{ "depth": 3, "slug": "security", "text": "Security" },
{ "depth": 3, "slug": "links", "text": "Links" },
{ "depth": 3, "slug": "changes", "text": "Changes" },
{ "depth": 3, "slug": "questions", "text": "Questions" }
],
"source": "\nThe Astro Privacy Policy describes the privacy practices of Astro website and services. The laws of California and the laws of the United States apply. If you are a resident of EU/EEA, the European Commission-approved Standard Contractual Clauses (also referred to as Model Contracts) apply to Trans-Atlantic data transfers.\n\n### General Information\n\nWe collect very limited personally identifiable information described below (the “data”) from [GitHub](https://help.github.com/articles/github-privacy-policy/) and of those who communicate with us directly via e-mail, aggregate information on what pages consumers access or visit, and information volunteered by the consumer (such as survey information and/or site registrations). The information we collect is used to provide our services, and to improve the quality of our services, and is not shared with or sold to other organizations for commercial purposes, except to provide products or services you've requested when we have your permission, or under the following circumstances:\n\n- It is necessary to share information in order to investigate, prevent, or take action regarding illegal activities, suspected fraud, situations involving potential threats to the physical safety of any person, violations of [Terms of Service](/terms), or as otherwise required by law.\n- We transfer information about you if Astro is acquired by or merged with another company. In this event, Astro will notify you before information about you is transferred and becomes subject to a different privacy policy.\n\n\n### Information Gathering and Usage\n\nAstro uses collected information for the following general purposes: products and services provision, billing, identification and authentication through GitHub, Bitbucket, services improvement, contact, and research. Astro uses personally identifiable information on billing address and/or payment information only for the sole purpose of payment processing for Astro services.\n\nPayment processing services enable us to process payments by credit card, bank transfer or other means. To ensure greater security, we share only the information necessary to execute the transaction with the financial intermediaries handling the transaction. Some of these services may also enable the sending of timed messages to our customer, such as emails containing invoices or notifications concerning the payment.\n\n### Cookies\n\nA cookie is a small amount of data, which often includes an anonymous unique identifier, which is sent to your browser from a web site's computers and stored on your computer's hard drive.\n\nYou can control how websites use cookies by configuring the privacy settings within your browser. Note that if you disable cookies entirely, Astro websites and applications may not function properly.\n\n### Data Storage\n\nAstro uses third-party vendors and hosting partners to provide the necessary hardware, software, networking, storage, and related technology required to run Astro. Astro’s third-party vendors and hosting partners adhere to the European Commission-approved Standard Contractual Clauses (also referred to as Model Contracts).\n\n### Data Retention and Deletion\n\nData is kept for the time necessary to provide the products or services requested by the customer. We keep some of your personal data for as long as you are a user of the Astro Service. When you delete your account, we will delete your personal data and it will expire from backups; unless we are legally allowed or required to maintain certain personal data, including situations under the applicable laws to reveal personal data upon reasonable request of public authorities.\n\n### Rights of Data Subjects\n\nData subject (customer) can always request Astro to allow access and correction, supplement or update of data. Subject to a reasonable request of a data subject, Astro will remove data pertaining to a data subject unless applicable laws impose a duty to retain data for certain time or identification, location and deletion of data imposes a disproportionate financial burden upon Astro. Any requests for access, correction or deletion of data should be directed to Astro by sending an email to [[email protected]](mailto:[email protected]).\n\nYou may be aware that a European Union law, called the General Data Protection Regulation or \"GDPR\" gives certain rights to individuals in relation to their personal data. In order to enable you to exercise these rights with ease in relation to how Astro uses your personal data, we provide you with access to the following settings via your Account Settings page:\n\n\n- Remove Account - allows you to delete your account and associated personal data; and,\n- Notifications - allows you to manage communications you receive from Astro.\n\nAs a user you may also request a copy of your data and that your data be updated, deleted, restricted or moved to another organization.\n\n### We may share your information with\n\n<PanelBlock>\n \n#### Google Analytics (Google, Inc.)\n \nGoogle Inc. utilizes the Data collected to track and examine the use of this Application, to prepare reports on its activities and share them with other Google services.\n\nUS – [Privacy Policy](https://www.google.com/intl/en/policies/privacy/)\n\n</PanelBlock>\n\n### EU/EEA - US Data Transfers\n\nIf you choose to provide Astro with your information, you consent to the transfer and storage of that information on our servers located in the United States. Astro uses Google Cloud data hosting services.\n\nOn October 6, 2015, the European Court of Justice (ECJ) issued its decision in the case of Maximillian Schrems v. Data Protection Commissioner, finding that the U.S.-EU Safe Harbor Framework is invalid with immediate effect. The suspension of Safe Harbor affects many companies that need to transfer personal data from the European Union (EU) and the European Economic Area (EEA) to the United States and to other non-EU/EEA countries. The European Union (EU) is an economic and political partnership between [28 European countries](http://europa.eu/about-eu/countries/member-countries/index_en.htm) that together cover much of the European continent. The European Economic Area (EEA) unites the EU Member States and the three EEA [European Free Trade Association](http://www.efta.int/about-efta/european-free-trade-association) (EFTA) States (Iceland, Liechtenstein, and Norway) into an internal market governed by the same basic rules. These rules aim to enable goods, services, capital, and persons to move freely about the EEA in an open and competitive environment, a concept referred to as the four freedoms.\n\nAstro has evaluated various options that will allow for the transfer of personal data from the EU/EEA to non-EU/EEA countries. Like many companies, Astro has decided to authorize these personal data transfers using European Commission-approved Standard Contractual Clauses (also referred to as Model Contracts).\n\nAstro uses a new Data Processing Agreement (DPA), which includes Standard Contractual Clauses (SCCs), also referred to as Model Contracts. These SCCs provide a mechanism approved by the European Commission as offering adequate protection for data subjects when transferring personal data from the EU/EEA under the EU Data Protection Directive. For EU/EEA residents, any questions or concerns regarding the use or disclosure of your information should be directed to Astro by sending an email to [[email protected]](mailto:[email protected]). We will investigate and attempt to resolve complaints and disputes regarding use and disclosure of your information in accordance with this Privacy Policy.\n\n### Security\n\nWe understand that the security of your data is important. We provide reasonable administrative, technical, and physical security controls to protect your personal information from unauthorized access, disclosure, modification, or unauthorized destruction. However, despite our efforts, no security controls are 100% effective and Astro cannot ensure or warrant the security of your data.\n\n### Links\n\nWe may display content that links to third-party websites. We cannot control or be held responsible for third parties’ privacy practices and content. If you click on a third-party advertisement or link, please understand that you are leaving the Astro website and any personal data you provide will not be covered by this Policy. Please read their privacy policies to find out how they collect and process your personal data.\n\n### Changes\n\nAstro may periodically update this policy. We encourage you to periodically review our website for the latest information on our privacy practices.\n\n\n### Questions\n\nThank you for reading our Privacy Policy. If you have any questions about this Policy, please contact our Data Protection Officer by emailing [[email protected]](mailto:[email protected]).\n",
"html": "<p>The Astro Privacy Policy describes the privacy practices of Astro website and services. The laws of California and the laws of the United States apply. If you are a resident of EU/EEA, the European Commission-approved Standard Contractual Clauses (also referred to as Model Contracts) apply to Trans-Atlantic data transfers.</p>\n<h3 id=\"general-information\"><a href=\"#general-information\">General Information</a></h3>\n<p>We collect very limited personally identifiable information described below (the “data”) from <a href=\"https://help.github.com/articles/github-privacy-policy/\">GitHub</a> and of those who communicate with us directly via e-mail, aggregate information on what pages consumers access or visit, and information volunteered by the consumer (such as survey information and/or site registrations). The information we collect is used to provide our services, and to improve the quality of our services, and is not shared with or sold to other organizations for commercial purposes, except to provide products or services you’ve requested when we have your permission, or under the following circumstances:</p>\n<ul>\n<li>It is necessary to share information in order to investigate, prevent, or take action regarding illegal activities, suspected fraud, situations involving potential threats to the physical safety of any person, violations of <a href=\"/terms\">Terms of Service</a>, or as otherwise required by law.</li>\n<li>We transfer information about you if Astro is acquired by or merged with another company. In this event, Astro will notify you before information about you is transferred and becomes subject to a different privacy policy.</li>\n</ul>\n<h3 id=\"information-gathering-and-usage\"><a href=\"#information-gathering-and-usage\">Information Gathering and Usage</a></h3>\n<p>Astro uses collected information for the following general purposes: products and services provision, billing, identification and authentication through GitHub, Bitbucket, services improvement, contact, and research. Astro uses personally identifiable information on billing address and/or payment information only for the sole purpose of payment processing for Astro services.</p>\n<p>Payment processing services enable us to process payments by credit card, bank transfer or other means. To ensure greater security, we share only the information necessary to execute the transaction with the financial intermediaries handling the transaction. Some of these services may also enable the sending of timed messages to our customer, such as emails containing invoices or notifications concerning the payment.</p>\n<h3 id=\"cookies\"><a href=\"#cookies\">Cookies</a></h3>\n<p>A cookie is a small amount of data, which often includes an anonymous unique identifier, which is sent to your browser from a web site’s computers and stored on your computer’s hard drive.</p>\n<p>You can control how websites use cookies by configuring the privacy settings within your browser. Note that if you disable cookies entirely, Astro websites and applications may not function properly.</p>\n<h3 id=\"data-storage\"><a href=\"#data-storage\">Data Storage</a></h3>\n<p>Astro uses third-party vendors and hosting partners to provide the necessary hardware, software, networking, storage, and related technology required to run Astro. Astro’s third-party vendors and hosting partners adhere to the European Commission-approved Standard Contractual Clauses (also referred to as Model Contracts).</p>\n<h3 id=\"data-retention-and-deletion\"><a href=\"#data-retention-and-deletion\">Data Retention and Deletion</a></h3>\n<p>Data is kept for the time necessary to provide the products or services requested by the customer. We keep some of your personal data for as long as you are a user of the Astro Service. When you delete your account, we will delete your personal data and it will expire from backups; unless we are legally allowed or required to maintain certain personal data, including situations under the applicable laws to reveal personal data upon reasonable request of public authorities.</p>\n<h3 id=\"rights-of-data-subjects\"><a href=\"#rights-of-data-subjects\">Rights of Data Subjects</a></h3>\n<p>Data subject (customer) can always request Astro to allow access and correction, supplement or update of data. Subject to a reasonable request of a data subject, Astro will remove data pertaining to a data subject unless applicable laws impose a duty to retain data for certain time or identification, location and deletion of data imposes a disproportionate financial burden upon Astro. Any requests for access, correction or deletion of data should be directed to Astro by sending an email to <a href=\"mailto:[email protected]\">[email protected]</a>.</p>\n<p>You may be aware that a European Union law, called the General Data Protection Regulation or “GDPR” gives certain rights to individuals in relation to their personal data. In order to enable you to exercise these rights with ease in relation to how Astro uses your personal data, we provide you with access to the following settings via your Account Settings page:</p>\n<ul>\n<li>Remove Account - allows you to delete your account and associated personal data; and,</li>\n<li>Notifications - allows you to manage communications you receive from Astro.</li>\n</ul>\n<p>As a user you may also request a copy of your data and that your data be updated, deleted, restricted or moved to another organization.</p>\n<h3 id=\"we-may-share-your-information-with\"><a href=\"#we-may-share-your-information-with\">We may share your information with</a></h3>\n<PanelBlock>\n<h4 id=\"google-analytics-google-inc\"><a href=\"#google-analytics-google-inc\">Google Analytics (Google, Inc.)</a></h4>\n<p>Google Inc. utilizes the Data collected to track and examine the use of this Application, to prepare reports on its activities and share them with other Google services.</p>\n<p>US – <a href=\"https://www.google.com/intl/en/policies/privacy/\">Privacy Policy</a></p>\n</PanelBlock>\n<h3 id=\"eueea---us-data-transfers\"><a href=\"#eueea---us-data-transfers\">EU/EEA - US Data Transfers</a></h3>\n<p>If you choose to provide Astro with your information, you consent to the transfer and storage of that information on our servers located in the United States. Astro uses Google Cloud data hosting services.</p>\n<p>On October 6, 2015, the European Court of Justice (ECJ) issued its decision in the case of Maximillian Schrems v. Data Protection Commissioner, finding that the U.S.-EU Safe Harbor Framework is invalid with immediate effect. The suspension of Safe Harbor affects many companies that need to transfer personal data from the European Union (EU) and the European Economic Area (EEA) to the United States and to other non-EU/EEA countries. The European Union (EU) is an economic and political partnership between <a href=\"http://europa.eu/about-eu/countries/member-countries/index_en.htm\">28 European countries</a> that together cover much of the European continent. The European Economic Area (EEA) unites the EU Member States and the three EEA <a href=\"http://www.efta.int/about-efta/european-free-trade-association\">European Free Trade Association</a> (EFTA) States (Iceland, Liechtenstein, and Norway) into an internal market governed by the same basic rules. These rules aim to enable goods, services, capital, and persons to move freely about the EEA in an open and competitive environment, a concept referred to as the four freedoms.</p>\n<p>Astro has evaluated various options that will allow for the transfer of personal data from the EU/EEA to non-EU/EEA countries. Like many companies, Astro has decided to authorize these personal data transfers using European Commission-approved Standard Contractual Clauses (also referred to as Model Contracts).</p>\n<p>Astro uses a new Data Processing Agreement (DPA), which includes Standard Contractual Clauses (SCCs), also referred to as Model Contracts. These SCCs provide a mechanism approved by the European Commission as offering adequate protection for data subjects when transferring personal data from the EU/EEA under the EU Data Protection Directive. For EU/EEA residents, any questions or concerns regarding the use or disclosure of your information should be directed to Astro by sending an email to <a href=\"mailto:[email protected]\">[email protected]</a>. We will investigate and attempt to resolve complaints and disputes regarding use and disclosure of your information in accordance with this Privacy Policy.</p>\n<h3 id=\"security\"><a href=\"#security\">Security</a></h3>\n<p>We understand that the security of your data is important. We provide reasonable administrative, technical, and physical security controls to protect your personal information from unauthorized access, disclosure, modification, or unauthorized destruction. However, despite our efforts, no security controls are 100% effective and Astro cannot ensure or warrant the security of your data.</p>\n<h3 id=\"links\"><a href=\"#links\">Links</a></h3>\n<p>We may display content that links to third-party websites. We cannot control or be held responsible for third parties’ privacy practices and content. If you click on a third-party advertisement or link, please understand that you are leaving the Astro website and any personal data you provide will not be covered by this Policy. Please read their privacy policies to find out how they collect and process your personal data.</p>\n<h3 id=\"changes\"><a href=\"#changes\">Changes</a></h3>\n<p>Astro may periodically update this policy. We encourage you to periodically review our website for the latest information on our privacy practices.</p>\n<h3 id=\"questions\"><a href=\"#questions\">Questions</a></h3>\n<p>Thank you for reading our Privacy Policy. If you have any questions about this Policy, please contact our Data Protection Officer by emailing <a href=\"mailto:[email protected]\">[email protected]</a>.</p>"
},
{
"headers": [
{
"depth": 3,
"slug": "accepting-these-terms",
"text": "Accepting these terms"
},
{
"depth": 3,
"slug": "changes-to-these-terms",
"text": "Changes to these Terms"
},
{ "depth": 3, "slug": "privacy-policy", "text": "Privacy Policy" },
{
"depth": 3,
"slug": "third-party-services",
"text": "Third-Party Services"
},
{ "depth": 3, "slug": "creating-accounts", "text": "Creating Accounts" },
{
"depth": 3,
"slug": "your-content--conduct",
"text": "Your Content & Conduct"
},
{ "depth": 3, "slug": "astro-materials", "text": "Astro Materials" },
{
"depth": 3,
"slug": "hyperlinks-and-third-party-content",
"text": "Hyperlinks and Third Party Content"
},
{
"depth": 3,
"slug": "unavoidable-legal-stuff",
"text": "Unavoidable Legal Stuff"
},
{
"depth": 3,
"slug": "copyright-complaints",
"text": "Copyright Complaints"
},
{ "depth": 3, "slug": "governing-law", "text": "Governing Law" },
{ "depth": 3, "slug": "jurisdiction", "text": "Jurisdiction" },
{ "depth": 3, "slug": "termination", "text": "Termination" },
{ "depth": 3, "slug": "assignment", "text": "Assignment" },
{ "depth": 3, "slug": "entire-agreement", "text": "Entire Agreement" },
{ "depth": 3, "slug": "feedback", "text": "Feedback" },
{
"depth": 3,
"slug": "questions--contact-information",
"text": "Questions & Contact Information"
}
],
"source": "\n### Accepting these terms\n\nIf you access or use the Service, it means you agree to be bound by all of the terms below. So, before you use the Service, please read all of the terms. If you don’t agree to all of the terms below, please do not use the Service. Also, if a term does not make sense to you, please let us know by e-mailing [[email protected]](mailto:[email protected]).\n\n### Changes to these Terms\n\nWe reserve the right to modify these Terms at any time. Whenever we make changes to these Terms, the changes are effective 2 days after we post such revised Terms (indicated by revising the date at the top of these Terms) or upon your acceptance if we provide a mechanism for your immediate acceptance of the revised Terms (such as a click-through confirmation or acceptance button). It is your responsibility to check Astro for changes to these Terms.\n\nIf you continue to use the Service after the revised Terms go into effect, then you have accepted the changes to these Terms.\n\n### Privacy Policy\n\nFor information about how we collect and use information about users of the Service, please view our [privacy policy](/privacy).\n\n### Third-Party Services\n\nFrom time to time, we may provide you with links to third party websites or services that we do not own or control. Your use of the Service may also include the use of applications that are developed or owned by a third party. Your use of such third party applications, websites, and services is governed by that party’s own terms of service or privacy policies. We encourage you to read the terms and conditions and privacy policy of any third party application, website or service that you visit or use.\n\n### Creating Accounts\nWhen you create an account or use another service to log in to the Service, you agree to maintain the security of your password and accept all risks of unauthorized access to any data or other information you provide to the Service.\n\nIf you discover or suspect any Service security breaches, please let us know as soon as possible.\n\n### Your Content & Conduct\n\nOur Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness.\n\nWhen you post, link or otherwise make available content to the Service, you grant us the right and license to use, reproduce, modify, publicly perform, publicly display and distribute your content on or through the Service. We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself.\n\nAside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service.\n\nYou can remove the content that you posted by deleting it. Once you delete your content, it will not appear on the Service, but copies of your deleted content may remain in our system or backups for some period of time.\n\nYou may not post, link and otherwise make available on or through the Service any of the following:\n\n- Content that is libelous, defamatory, bigoted, fraudulent or deceptive;\n- Content that is illegal or unlawful, that would otherwise create liability;\n- Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;\n- Mass or repeated promotions, political campaigning or commercial messages directed at users who do not follow you (SPAM);\n- Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and\n- Viruses, corrupted data or other harmful, disruptive or destructive files or code.\n\nAlso, you agree that you will not do any of the following in connection with the Service or other users:\n\n- Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;\n- Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;\n- Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;\n- Create an account or post any content if you are not over 13 years of age years of age; and\n- Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties.\n\n### Astro Materials\n\nWe put a lot of effort into creating the Service including, the logo and all designs, text, graphics, pictures, information and other content (excluding your content). This property is owned by us or our licensors and it is protected by U.S. and international copyright laws. We grant you the right to use it.\n\nHowever, unless we expressly state otherwise, your rights do not include: (i) publicly performing or publicly displaying the Service; (ii) modifying or otherwise making any derivative uses of the Service or any portion thereof; (iii) using any data mining, robots or similar data gathering or extraction methods; (iv) downloading (other than page caching) of any portion of the Service or any information contained therein; (v) reverse engineering or accessing the Service in order to build a competitive product or service; or (vi) using the Service other than for its intended purposes. If you do any of this, we may terminate your use of the Service.\n\n### Hyperlinks and Third Party Content\n\nYou may create a hyperlink to the Service. But, you may not use, frame or utilize framing techniques to enclose any of our trademarks, logos or other proprietary information without our express written consent.\n\nAstro makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern.\n\nIf there is any content on the Service from you and others, we don’t review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content.\n\n### Unavoidable Legal Stuff\n\nTHE SERVICE AND ANY OTHER SERVICE AND CONTENT INCLUDED ON OR OTHERWISE MADE AVAILABLE TO YOU THROUGH THE SERVICE ARE PROVIDED TO YOU ON AN AS IS OR AS AVAILABLE BASIS WITHOUT ANY REPRESENTATIONS OR WARRANTIES OF ANY KIND. WE DISCLAIM ANY AND ALL WARRANTIES AND REPRESENTATIONS (EXPRESS OR IMPLIED, ORAL OR WRITTEN) WITH RESPECT TO THE SERVICE AND CONTENT INCLUDED ON OR OTHERWISE MADE AVAILABLE TO YOU THROUGH THE SERVICE WHETHER ALLEGED TO ARISE BY OPERATION OF LAW, BY REASON OF CUSTOM OR USAGE IN THE TRADE, BY COURSE OF DEALING OR OTHERWISE.\n\nIN NO EVENT WILL ASTRO BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY SPECIAL, INDIRECT, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY KIND ARISING OUT OF OR IN CONNECTION WITH THE SERVICE OR ANY OTHER SERVICE AND/OR CONTENT INCLUDED ON OR OTHERWISE MADE AVAILABLE TO YOU THROUGH THE SERVICE, REGARDLESS OF THE FORM OF ACTION, WHETHER IN CONTRACT, TORT, STRICT LIABILITY OR OTHERWISE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES OR ARE AWARE OF THE POSSIBILITY OF SUCH DAMAGES. OUR TOTAL LIABILITY FOR ALL CAUSES OF ACTION AND UNDER ALL THEORIES OF LIABILITY WILL BE LIMITED TO THE AMOUNT YOU PAID TO ASTRO THIS SECTION WILL BE GIVEN FULL EFFECT EVEN IF ANY REMEDY SPECIFIED IN THIS AGREEMENT IS DEEMED TO HAVE FAILED OF ITS ESSENTIAL PURPOSE.\n\nYou agree to defend, indemnify and hold us harmless from and against any and all costs, damages, liabilities, and expenses (including attorneys’ fees, costs, penalties, interest and disbursements) we incur in relation to, arising from, or for the purpose of avoiding, any claim or demand from a third party relating to your use of the Service or the use of the Service by any person using your account, including any claim that your use of the Service violates any applicable law or regulation, or the rights of any third party, and/or your violation of these Terms.\n\n### Copyright Complaints\n\nWe take intellectual property rights seriously. In accordance with the Digital Millennium Copyright Act (\"DMCA\") and other applicable law, we have adopted a policy of terminating, in appropriate circumstances and, at our sole discretion, access to the service for users who are deemed to be repeat infringers.\n\n### Governing Law\n\nThe validity of these Terms and the rights, obligations, and relations of the parties under these Terms will be construed and determined under and in accordance with the laws of the Delaware state, without regard to conflicts of law principles.\n\n### Jurisdiction\n\nYou expressly agree that exclusive jurisdiction for any dispute with the Service or relating to your use of it, resides in the courts of the Delaware state and you further agree and expressly consent to the exercise of personal jurisdiction in the courts of the Delaware state in connection with any such dispute including any claim involving Service. You further agree that you and Service will not commence against the other a class action, class arbitration or other representative action or proceeding.\n\n### Termination\n\nIf you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service.\n\n### Assignment\n\nWe may assign or delegate these Terms of Service and/or the Privacy Policy, in whole or in part, to any person or entity at any time with or without your consent, including the license grant in the \"Your Content & Conduct\" section. You may not assign or delegate any rights or obligations under the Terms of Service or Privacy Policy without our prior written consent, and any unauthorized assignment and delegation by you is void.\n\n### Entire Agreement\n\nThese Terms constitute the entire agreement between you and Astro. regarding the use of the Service, superseding any prior agreements between you and Astro relating to your use of the Service.\n\n### Feedback\n\nPlease let us know what you think of the Service, these Terms and, in general, Astro. When you provide us with any feedback, comments or suggestions about the Service, these Terms and, in general, Astro, you irrevocably assign to us all of your right, title and interest in and to your feedback, comments and suggestions.\n\n### Questions & Contact Information\n\nQuestions or comments about the Service may be directed to us at the email address [[email protected]](mailto:[email protected])\n",
"html": "<h3 id=\"accepting-these-terms\"><a href=\"#accepting-these-terms\">Accepting these terms</a></h3>\n<p>If you access or use the Service, it means you agree to be bound by all of the terms below. So, before you use the Service, please read all of the terms. If you don’t agree to all of the terms below, please do not use the Service. Also, if a term does not make sense to you, please let us know by e-mailing <a href=\"mailto:[email protected]\">[email protected]</a>.</p>\n<h3 id=\"changes-to-these-terms\"><a href=\"#changes-to-these-terms\">Changes to these Terms</a></h3>\n<p>We reserve the right to modify these Terms at any time. Whenever we make changes to these Terms, the changes are effective 2 days after we post such revised Terms (indicated by revising the date at the top of these Terms) or upon your acceptance if we provide a mechanism for your immediate acceptance of the revised Terms (such as a click-through confirmation or acceptance button). It is your responsibility to check Astro for changes to these Terms.</p>\n<p>If you continue to use the Service after the revised Terms go into effect, then you have accepted the changes to these Terms.</p>\n<h3 id=\"privacy-policy\"><a href=\"#privacy-policy\">Privacy Policy</a></h3>\n<p>For information about how we collect and use information about users of the Service, please view our <a href=\"/privacy\">privacy policy</a>.</p>\n<h3 id=\"third-party-services\"><a href=\"#third-party-services\">Third-Party Services</a></h3>\n<p>From time to time, we may provide you with links to third party websites or services that we do not own or control. Your use of the Service may also include the use of applications that are developed or owned by a third party. Your use of such third party applications, websites, and services is governed by that party’s own terms of service or privacy policies. We encourage you to read the terms and conditions and privacy policy of any third party application, website or service that you visit or use.</p>\n<h3 id=\"creating-accounts\"><a href=\"#creating-accounts\">Creating Accounts</a></h3>\n<p>When you create an account or use another service to log in to the Service, you agree to maintain the security of your password and accept all risks of unauthorized access to any data or other information you provide to the Service.</p>\n<p>If you discover or suspect any Service security breaches, please let us know as soon as possible.</p>\n<h3 id=\"your-content--conduct\"><a href=\"#your-content--conduct\">Your Content & Conduct</a></h3>\n<p>Our Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness.</p>\n<p>When you post, link or otherwise make available content to the Service, you grant us the right and license to use, reproduce, modify, publicly perform, publicly display and distribute your content on or through the Service. We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself.</p>\n<p>Aside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service.</p>\n<p>You can remove the content that you posted by deleting it. Once you delete your content, it will not appear on the Service, but copies of your deleted content may remain in our system or backups for some period of time.</p>\n<p>You may not post, link and otherwise make available on or through the Service any of the following:</p>\n<ul>\n<li>Content that is libelous, defamatory, bigoted, fraudulent or deceptive;</li>\n<li>Content that is illegal or unlawful, that would otherwise create liability;</li>\n<li>Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;</li>\n<li>Mass or repeated promotions, political campaigning or commercial messages directed at users who do not follow you (SPAM);</li>\n<li>Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and</li>\n<li>Viruses, corrupted data or other harmful, disruptive or destructive files or code.</li>\n</ul>\n<p>Also, you agree that you will not do any of the following in connection with the Service or other users:</p>\n<ul>\n<li>Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;</li>\n<li>Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;</li>\n<li>Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;</li>\n<li>Create an account or post any content if you are not over 13 years of age years of age; and</li>\n<li>Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties.</li>\n</ul>\n<h3 id=\"astro-materials\"><a href=\"#astro-materials\">Astro Materials</a></h3>\n<p>We put a lot of effort into creating the Service including, the logo and all designs, text, graphics, pictures, information and other content (excluding your content). This property is owned by us or our licensors and it is protected by U.S. and international copyright laws. We grant you the right to use it.</p>\n<p>However, unless we expressly state otherwise, your rights do not include: (i) publicly performing or publicly displaying the Service; (ii) modifying or otherwise making any derivative uses of the Service or any portion thereof; (iii) using any data mining, robots or similar data gathering or extraction methods; (iv) downloading (other than page caching) of any portion of the Service or any information contained therein; (v) reverse engineering or accessing the Service in order to build a competitive product or service; or (vi) using the Service other than for its intended purposes. If you do any of this, we may terminate your use of the Service.</p>\n<h3 id=\"hyperlinks-and-third-party-content\"><a href=\"#hyperlinks-and-third-party-content\">Hyperlinks and Third Party Content</a></h3>\n<p>You may create a hyperlink to the Service. But, you may not use, frame or utilize framing techniques to enclose any of our trademarks, logos or other proprietary information without our express written consent.</p>\n<p>Astro makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern.</p>\n<p>If there is any content on the Service from you and others, we don’t review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content.</p>\n<h3 id=\"unavoidable-legal-stuff\"><a href=\"#unavoidable-legal-stuff\">Unavoidable Legal Stuff</a></h3>\n<p>THE SERVICE AND ANY OTHER SERVICE AND CONTENT INCLUDED ON OR OTHERWISE MADE AVAILABLE TO YOU THROUGH THE SERVICE ARE PROVIDED TO YOU ON AN AS IS OR AS AVAILABLE BASIS WITHOUT ANY REPRESENTATIONS OR WARRANTIES OF ANY KIND. WE DISCLAIM ANY AND ALL WARRANTIES AND REPRESENTATIONS (EXPRESS OR IMPLIED, ORAL OR WRITTEN) WITH RESPECT TO THE SERVICE AND CONTENT INCLUDED ON OR OTHERWISE MADE AVAILABLE TO YOU THROUGH THE SERVICE WHETHER ALLEGED TO ARISE BY OPERATION OF LAW, BY REASON OF CUSTOM OR USAGE IN THE TRADE, BY COURSE OF DEALING OR OTHERWISE.</p>\n<p>IN NO EVENT WILL ASTRO BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY SPECIAL, INDIRECT, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY KIND ARISING OUT OF OR IN CONNECTION WITH THE SERVICE OR ANY OTHER SERVICE AND/OR CONTENT INCLUDED ON OR OTHERWISE MADE AVAILABLE TO YOU THROUGH THE SERVICE, REGARDLESS OF THE FORM OF ACTION, WHETHER IN CONTRACT, TORT, STRICT LIABILITY OR OTHERWISE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES OR ARE AWARE OF THE POSSIBILITY OF SUCH DAMAGES. OUR TOTAL LIABILITY FOR ALL CAUSES OF ACTION AND UNDER ALL THEORIES OF LIABILITY WILL BE LIMITED TO THE AMOUNT YOU PAID TO ASTRO THIS SECTION WILL BE GIVEN FULL EFFECT EVEN IF ANY REMEDY SPECIFIED IN THIS AGREEMENT IS DEEMED TO HAVE FAILED OF ITS ESSENTIAL PURPOSE.</p>\n<p>You agree to defend, indemnify and hold us harmless from and against any and all costs, damages, liabilities, and expenses (including attorneys’ fees, costs, penalties, interest and disbursements) we incur in relation to, arising from, or for the purpose of avoiding, any claim or demand from a third party relating to your use of the Service or the use of the Service by any person using your account, including any claim that your use of the Service violates any applicable law or regulation, or the rights of any third party, and/or your violation of these Terms.</p>\n<h3 id=\"copyright-complaints\"><a href=\"#copyright-complaints\">Copyright Complaints</a></h3>\n<p>We take intellectual property rights seriously. In accordance with the Digital Millennium Copyright Act (“DMCA”) and other applicable law, we have adopted a policy of terminating, in appropriate circumstances and, at our sole discretion, access to the service for users who are deemed to be repeat infringers.</p>\n<h3 id=\"governing-law\"><a href=\"#governing-law\">Governing Law</a></h3>\n<p>The validity of these Terms and the rights, obligations, and relations of the parties under these Terms will be construed and determined under and in accordance with the laws of the Delaware state, without regard to conflicts of law principles.</p>\n<h3 id=\"jurisdiction\"><a href=\"#jurisdiction\">Jurisdiction</a></h3>\n<p>You expressly agree that exclusive jurisdiction for any dispute with the Service or relating to your use of it, resides in the courts of the Delaware state and you further agree and expressly consent to the exercise of personal jurisdiction in the courts of the Delaware state in connection with any such dispute including any claim involving Service. You further agree that you and Service will not commence against the other a class action, class arbitration or other representative action or proceeding.</p>\n<h3 id=\"termination\"><a href=\"#termination\">Termination</a></h3>\n<p>If you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service.</p>\n<h3 id=\"assignment\"><a href=\"#assignment\">Assignment</a></h3>\n<p>We may assign or delegate these Terms of Service and/or the Privacy Policy, in whole or in part, to any person or entity at any time with or without your consent, including the license grant in the “Your Content & Conduct” section. You may not assign or delegate any rights or obligations under the Terms of Service or Privacy Policy without our prior written consent, and any unauthorized assignment and delegation by you is void.</p>\n<h3 id=\"entire-agreement\"><a href=\"#entire-agreement\">Entire Agreement</a></h3>\n<p>These Terms constitute the entire agreement between you and Astro. regarding the use of the Service, superseding any prior agreements between you and Astro relating to your use of the Service.</p>\n<h3 id=\"feedback\"><a href=\"#feedback\">Feedback</a></h3>\n<p>Please let us know what you think of the Service, these Terms and, in general, Astro. When you provide us with any feedback, comments or suggestions about the Service, these Terms and, in general, Astro, you irrevocably assign to us all of your right, title and interest in and to your feedback, comments and suggestions.</p>\n<h3 id=\"questions--contact-information\"><a href=\"#questions--contact-information\">Questions & Contact Information</a></h3>\n<p>Questions or comments about the Service may be directed to us at the email address <a href=\"mailto:[email protected]\">[email protected]</a></p>"
},
{
"headers": [
{
"depth": 2,
"slug": "responsive-partial-hydration",
"text": "Responsive partial hydration"
},
{
"depth": 2,
"slug": "named-slots-in-astro-components",
"text": "Named slots in Astro components"
},
{ "depth": 2, "slug": "solid-support", "text": "Solid support" },
{ "depth": 2, "slug": "lit-ssr-support", "text": "Lit SSR support" },
{ "depth": 2, "slug": "community", "text": "Community" }
],
"source": "\nA little over a month ago, the first public beta for Astro was released to the world. Since then, we have been fixing bugs and gathering your feedback on what to tackle next. Today, we are excited to announce the release of some of our most requested features.\n\nWe are excited to introduce Astro v0.18, featuring:\n\n* __[Responsive partial hydration:](#responsive-partial-hydration)__ Hydrate components with CSS media queries.\n* __[Named slots:](#named-slots-in-astro-components)__ Support multiple content entrypoints inside of Astro components.\n* __[Solid.js support:](#solid-support)__ Use [Solid.js](https://www.solidjs.com/) components in Astro.\n* __[Lit support:](#solid-support)__ Use [Lit SSR](https://lit.dev/) to get server-side rendering for web components.\n* [`<style global>` support](https://docs.astro.build/guides/styling#overview), [GitHub syntax highlighting](https://twitter.com/n_moore/status/1417881860051509250) and a [shiny new docs site.](https://docs.astro.build/)\n\n## Responsive partial hydration\n\n\n<img src=\"/assets/blog/astro-018/responsive-hydration.jpg\" alt=\"Code example that shows off using the new client:media hydrator.\" />\n<!-- Saved from https://carbon.now.sh/16xchqPVdt5IEAY3Czg3 -->\n\nResponsive websites often load components that are only visible on certain device sizes, like a mobile sidebar menu. As a developer, it can be difficult (impossible?) to avoid loading mobile-only code on non-mobile devices. The result is wasted time spent on code that will never even be seen by the end user.\n\nAstro solves the problem of unnecessary JavaScript with [partial hydration](https://docs.astro.build/core-concepts/component-hydration), a technique that involves only hydrating the components that need interactivity and leaving the rest as static HTML. **Astro v0.18 adds a new way to customize partial hydration using [CSS media queries](https://docs.astro.build/core-concepts/component-hydration#mycomponent-clientmediaquery-) that avoid sending code to devices that don't need it.**\n\nAdd the `client:media` directive to a component and it will only hydrate once the media condition is met. On a mobile phone? Skip any expensive and unneccesary JavaScript for the desktop header that you'll never see. On a desktop or laptop? Don't load that mobile hamburger menu. This is all part of Astro's commitment to minimizing the unnecesary JavaScript that you send to your users.\n\n## Named slots in Astro components\n\n![Using multiple slots to provide the head and body parts of a Layout component.](/assets/blog/astro-018/named-slots.png)\n<!-- https://carbon.now.sh/9UwJkMCezRIOhzac5VVp -->\n\n[Named slots](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_templates_and_slots) are a standard web feature used in [browser APIs](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_templates_and_slots) and web frameworks like [Vue](https://vuejs.org/v2/guide/components-slots.html#Named-Slots). In this release, [Astro adds support for named slots](https://docs.astro.build/core-concepts/astro-components#slots) to Astro components, pages, and layouts.\n\nNamed slots are particularly useful for page layouts. A layout can now specify slots for different sections of the page. You can put metadata tags in \"head\" slot, and page content in the \"body\" or \"content\" slot. Your layout is now completely customizable, with as many or as few slots as you need.\n\n\n## Solid support\n\n<img src=\"/assets/blog/astro-018/solid-logo-dark.svg\" alt=\"Solid.js logo\" style=\"background-color: rgb(65, 64, 66); padding: 2rem 4rem;\" />\n\n[Solid](https://www.solidjs.com/) is a JSX-based UI framework that bills itself as the familiar, modern, more reactive alternative to React. We're really excited about Solid, and with the new [Solid renderer](https://github.com/withastro/astro/tree/main/packages/renderers/renderer-solid) for Astro you can use Solid as a first-class framework in your project.\n\nAdding support for Solid (our third officially-supported JSX framework) wasn't easy, and required a major refactoring of how Astro handles JSX. The final result was worth it: Astro is now much better at supporting different types of JSX and can even support the new React v17 JSX transform. This new foundation for Astro should support us well into the future.\n\nThe release of Solid v1.0 is the perfect showcase for Astro's multi-framework promise: try out your first Solid component in an existing project side-by-side with the rest of your components. Where other build tools force you to choose a single framework and stick with it, Astro makes multi-framework projects easy for short-term code migrations or long-term site architectures.\n\n\n## Lit SSR support\n\n![Lit logo](/assets/blog/astro-018/lit-logo.svg)\n\nServer-side rendering (SSR) for web components is finally here, thanks to Lit and the new [Lit renderer for Astro](https://github.com/withastro/astro/tree/main/packages/renderers/renderer-lit).\n\nThanks to the [Declarative Shadow DOM](https://web.dev/declarative-shadow-dom/) -- a new HTML feature that's now available in Chrome -- the Lit project was able to release experimental SSR support for Lit. Define a custom element in JavaScript and server render it with Astro as you would any other component from React or Vue. Unlike other JS components, you still use the custom element tag name in your HTML.\n\nThe Lit SSR renderer is experimental, and some existing web components may not work with the new API. As other web component libraries adopt declarative shadow DOM and common APIs emerge for rendering, we hope to bring support to those libraries as well. We will keep refining and improving this support as we move towards Astro v1.0.\n\n## Community\n\nWe've been absolutely blown away by the love Astro has recieved in such a short amount of time:\n\n- Featured articles and guides from [Netlify](https://www.netlify.com/blog/2021/07/23/build-a-modern-shopping-site-with-astro-and-serverless-functions/), [Cloudflare](https://developers.cloudflare.com/pages/framework-guides/astro), [CSS Tricks](https://css-tricks.com/a-look-at-building-with-astro/), and more.\n- Over 2,000 developers have downloaded the [Astro VSCode extension](https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode)\n- Over 500 weekly visitors to our [amazing Discord](https://astro.build/chat)\n- Over 300 public projects using Astro [on Github](https://github.com/withastro/astro)\n- 2 (TWO!) Astro jobs already posted on Discord!\n- [GitHub adds support for Astro component syntax highlighting](https://twitter.com/n_moore/status/1417881860051509250)\n\nTo learn more about Astro and start building your first site, check out [the Getting Started guide.](https://docs.astro.build)\n",
"html": "<p>A little over a month ago, the first public beta for Astro was released to the world. Since then, we have been fixing bugs and gathering your feedback on what to tackle next. Today, we are excited to announce the release of some of our most requested features.</p>\n<p>We are excited to introduce Astro v0.18, featuring:</p>\n<ul>\n<li><strong><a href=\"#responsive-partial-hydration\">Responsive partial hydration:</a></strong> Hydrate components with CSS media queries.</li>\n<li><strong><a href=\"#named-slots-in-astro-components\">Named slots:</a></strong> Support multiple content entrypoints inside of Astro components.</li>\n<li><strong><a href=\"#solid-support\">Solid.js support:</a></strong> Use <a href=\"https://www.solidjs.com/\">Solid.js</a> components in Astro.</li>\n<li><strong><a href=\"#solid-support\">Lit support:</a></strong> Use <a href=\"https://lit.dev/\">Lit SSR</a> to get server-side rendering for web components.</li>\n<li><a href=\"https://docs.astro.build/guides/styling#overview\"><code is:raw><style global></code> support</a>, <a href=\"https://twitter.com/n_moore/status/1417881860051509250\">GitHub syntax highlighting</a> and a <a href=\"https://docs.astro.build/\">shiny new docs site.</a></li>\n</ul>\n<h2 id=\"responsive-partial-hydration\"><a href=\"#responsive-partial-hydration\">Responsive partial hydration</a></h2>\n<img src=\"/assets/blog/astro-018/responsive-hydration.jpg\" alt=\"Code example that shows off using the new client:media hydrator.\" />\n<!-- Saved from https://carbon.now.sh/16xchqPVdt5IEAY3Czg3 -->\n<p>Responsive websites often load components that are only visible on certain device sizes, like a mobile sidebar menu. As a developer, it can be difficult (impossible?) to avoid loading mobile-only code on non-mobile devices. The result is wasted time spent on code that will never even be seen by the end user.</p>\n<p>Astro solves the problem of unnecessary JavaScript with <a href=\"https://docs.astro.build/core-concepts/component-hydration\">partial hydration</a>, a technique that involves only hydrating the components that need interactivity and leaving the rest as static HTML. <strong>Astro v0.18 adds a new way to customize partial hydration using <a href=\"https://docs.astro.build/core-concepts/component-hydration#mycomponent-clientmediaquery-\">CSS media queries</a> that avoid sending code to devices that don’t need it.</strong></p>\n<p>Add the <code is:raw>client:media</code> directive to a component and it will only hydrate once the media condition is met. On a mobile phone? Skip any expensive and unneccesary JavaScript for the desktop header that you’ll never see. On a desktop or laptop? Don’t load that mobile hamburger menu. This is all part of Astro’s commitment to minimizing the unnecesary JavaScript that you send to your users.</p>\n<h2 id=\"named-slots-in-astro-components\"><a href=\"#named-slots-in-astro-components\">Named slots in Astro components</a></h2>\n<p><img src=\"/assets/blog/astro-018/named-slots.png\" alt=\"Using multiple slots to provide the head and body parts of a Layout component.\"></p>\n<!-- https://carbon.now.sh/9UwJkMCezRIOhzac5VVp -->\n<p><a href=\"https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_templates_and_slots\">Named slots</a> are a standard web feature used in <a href=\"https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_templates_and_slots\">browser APIs</a> and web frameworks like <a href=\"https://vuejs.org/v2/guide/components-slots.html#Named-Slots\">Vue</a>. In this release, <a href=\"https://docs.astro.build/core-concepts/astro-components#slots\">Astro adds support for named slots</a> to Astro components, pages, and layouts.</p>\n<p>Named slots are particularly useful for page layouts. A layout can now specify slots for different sections of the page. You can put metadata tags in “head” slot, and page content in the “body” or “content” slot. Your layout is now completely customizable, with as many or as few slots as you need.</p>\n<h2 id=\"solid-support\"><a href=\"#solid-support\">Solid support</a></h2>\n<img src=\"/assets/blog/astro-018/solid-logo-dark.svg\" alt=\"Solid.js logo\" style=\"background-color: rgb(65, 64, 66); padding: 2rem 4rem;\" />\n<p><a href=\"https://www.solidjs.com/\">Solid</a> is a JSX-based UI framework that bills itself as the familiar, modern, more reactive alternative to React. We’re really excited about Solid, and with the new <a href=\"https://github.com/withastro/astro/tree/main/packages/renderers/renderer-solid\">Solid renderer</a> for Astro you can use Solid as a first-class framework in your project.</p>\n<p>Adding support for Solid (our third officially-supported JSX framework) wasn’t easy, and required a major refactoring of how Astro handles JSX. The final result was worth it: Astro is now much better at supporting different types of JSX and can even support the new React v17 JSX transform. This new foundation for Astro should support us well into the future.</p>\n<p>The release of Solid v1.0 is the perfect showcase for Astro’s multi-framework promise: try out your first Solid component in an existing project side-by-side with the rest of your components. Where other build tools force you to choose a single framework and stick with it, Astro makes multi-framework projects easy for short-term code migrations or long-term site architectures.</p>\n<h2 id=\"lit-ssr-support\"><a href=\"#lit-ssr-support\">Lit SSR support</a></h2>\n<p><img src=\"/assets/blog/astro-018/lit-logo.svg\" alt=\"Lit logo\"></p>\n<p>Server-side rendering (SSR) for web components is finally here, thanks to Lit and the new <a href=\"https://github.com/withastro/astro/tree/main/packages/renderers/renderer-lit\">Lit renderer for Astro</a>.</p>\n<p>Thanks to the <a href=\"https://web.dev/declarative-shadow-dom/\">Declarative Shadow DOM</a> — a new HTML feature that’s now available in Chrome — the Lit project was able to release experimental SSR support for Lit. Define a custom element in JavaScript and server render it with Astro as you would any other component from React or Vue. Unlike other JS components, you still use the custom element tag name in your HTML.</p>\n<p>The Lit SSR renderer is experimental, and some existing web components may not work with the new API. As other web component libraries adopt declarative shadow DOM and common APIs emerge for rendering, we hope to bring support to those libraries as well. We will keep refining and improving this support as we move towards Astro v1.0.</p>\n<h2 id=\"community\"><a href=\"#community\">Community</a></h2>\n<p>We’ve been absolutely blown away by the love Astro has recieved in such a short amount of time:</p>\n<ul>\n<li>Featured articles and guides from <a href=\"https://www.netlify.com/blog/2021/07/23/build-a-modern-shopping-site-with-astro-and-serverless-functions/\">Netlify</a>, <a href=\"https://developers.cloudflare.com/pages/framework-guides/astro\">Cloudflare</a>, <a href=\"https://css-tricks.com/a-look-at-building-with-astro/\">CSS Tricks</a>, and more.</li>\n<li>Over 2,000 developers have downloaded the <a href=\"https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode\">Astro VSCode extension</a></li>\n<li>Over 500 weekly visitors to our <a href=\"https://astro.build/chat\">amazing Discord</a></li>\n<li>Over 300 public projects using Astro <a href=\"https://github.com/withastro/astro\">on Github</a></li>\n<li>2 (TWO!) Astro jobs already posted on Discord!</li>\n<li><a href=\"https://twitter.com/n_moore/status/1417881860051509250\">GitHub adds support for Astro component syntax highlighting</a></li>\n</ul>\n<p>To learn more about Astro and start building your first site, check out <a href=\"https://docs.astro.build\">the Getting Started guide.</a></p>"
},
{
"headers": [
{
"depth": 2,
"slug": "file-based-routing-inspired-by-nextjs",
"text": "File-based routing, inspired by Next.js"
},
{
"depth": 2,
"slug": "clientonly-loading-directive",
"text": "client:only loading directive"
},
{ "depth": 2, "slug": "astroresolve", "text": "Astro.resolve()" },
{ "depth": 2, "slug": "docs-translations", "text": "Docs Translations" },
{ "depth": 2, "slug": "open-collective", "text": "Open Collective" },
{
"depth": 2,
"slug": "icymi-in-case-you-missed-it",
"text": "ICYMI (In case you missed it)"
},
{ "depth": 2, "slug": "", "text": "👋" }
],
"source": "We are excited to introduce Astro 0.19, featuring:\n\n* __[Next.js-inspired routing:](#file-based-routing-inspired-by-nextjs)__ Define new dynamic URL params.\n* __[`client:only` directive:](#clientonly-loading-directive)__ Opt-out of SSR for individual components.\n* __[`Astro.resolve()`:](#astroresolve)__ Resolve relative URLs to assets in `src/`.\n* __[Community translations:](#docs-translations)__ Read our docs in 10 different languages.\n* __[Astro Open Collective:](#open-collective)__ Now accepting donations & sponsorship!\n\n## File-based routing, inspired by Next.js\n\nAstro has always supported basic file-based routing, where every file in your `pages/` directory becomes a new page at that same URL. Astro 0.19 takes this one step further with support for dynamic URL params in your filename.\n\nInspired by [Next.js](https://nextjs.org/docs/routing/dynamic-routes) and [SvelteKit](https://kit.svelte.dev/docs#routing-pages), you can now add brackets to your page filename (ex: `src/pages/[slug].astro`) to create a dynamic page that matches many different URLs. `[...slug].astro` catch-all syntax is also supported.\n\nWith this new feature you can add support for URL params, slugs, pretty URLs, pagination and more to your website.\n\nTo create a dynamic route, create a file in your pages directory like `pages/posts/[slug].astro`. Create a [`getStaticPaths()`](https://docs.astro.build/reference/api-reference#getstaticpaths) function in your page frontmatter script and tell Astro exactly what paths to build for that route:\n\n```astro\n---\n// src/pages/posts/[slug].astro\n// Tell Astro what pages to build for your route \"/pages/:slug\"\nexport async function getStaticPaths() {\n return [\n // Generates: /pages/hello-world\n { params: { slug: 'hello-world' } },\n // Generates: /pages/my-first-blog-post\n { params: { slug: 'my-first-blog-post' } },\n // Generates: /pages/astro-ftw\n { params: { slug: 'astro-ftw' } },\n // ...\n ];\n}\n---\n<html>\n <head><title>My Page</title></head>\n <body>URL Param is {Astro.params.slug}</body>\n</html>\n```\n\nAstro is a static site builder, so you need to tell Astro what pages to build for every dynamic route. Defining your paths manually might feel like boilerplate, but ahead-of-time page building is exactly what makes static websites so fast for your users.\n\n`getStaticPaths()` is an async function, so you can -- and should! -- use it to load external data into your website. We normally love to use the [Pokemon API](https://pokeapi.co/) in our examples, but you'll probably want to use your favorite headless CMS:\n\n```js\n// src/pages/posts/[id].astro\n// Tell Astro what pages to build for your route \"/pages/:id\"\nexport async function getStaticPaths() {\n // Lets fetch posts from CSS Tricks' Headless CMS:\n const CSS_TRICKS_CMS = 'https://css-tricks.com/wp-json/wp/v2/posts';\n const allPosts = await fetch(CSS_TRICKS_CMS).then(r => r.json());\n // Then, create a new page from every post:\n return allPosts.map((post) => ({\n // Set the URL param \":id\" in the page URL\n params: {id: post.id},\n // Pass the post object as a prop to the page\n props: {post},\n }));\n}\n```\n\nTo learn more, check out our new documentation on [Routing](https://docs.astro.build/core-concepts/routing) and the new [`getStaticPaths()` API.](https://docs.astro.build/reference/api-reference#getstaticpaths) Or, if you prefer to learn by example, check out this great [Wordpress Headless CMS project](https://github.com/chriscoyier/astro-css-trickzz) from Chris Coyier and this [Shopify Ecommerce example](https://github.com/cassidoo/shopify-react-astro) by Cassidy Williams of Netlify. \n\nIf you were a previous user of our original Collections API, this new file-based routing system completely replaces Collections with plenty of friendly warning messages to help you upgrade. We hope that this new API removes all common frustrations that users had reported with the Collections API. \n\n## `client:only` loading directive\n\nSometimes, a UI component can't render on the server. Maybe it's because you've hit a bug in one of your dependencies, or maybe you're just using a library like D3 that can't run without the browser's `window` object. \n\nYou can attempt to wrap browser-only code with your own static server-side fallback UI. However, most users wanted a way to render a browser-only component without the extra boilerplate. Enter, `client:only`.\n\nAstro 0.19 ships with the new `client:only` loading directive to hydrate your component in the browser without server-side rendering. This provides a simple, straightforward fallback for any browser-only components.\n\n```html\n<!-- only renders in the browser, no placeholder HTML -->\n<MyReactComponent client:only />\n```\n\n`client:only` is now our fifth directive to let you completely control you component loading behavior. Visit our docs site to [check out the entire set](https://docs.astro.build/core-concepts/component-hydration#hydrate-interactive-components) and learn more about [Partial Hydration](https://docs.astro.build/core-concepts/component-hydration).\n\n🎉 This awesome feature was contributed by [Tony Sull](https://github.com/tony-sull) of [Navillus](https://navillus.dev/). Thanks, Tony!\n\n## `Astro.resolve()`\n\nAstro 0.19 includes a new [`Astro.resolve()`](https://docs.astro.build/reference/api-reference#astroresolve) helper function to resolve relative file references in your templates. With this new feature, you can reference relative assets (like images) inside of your components and Astro will return the correct URL for the browser.\n\nPreviously, you always had to place files in the `public/` directory and reference them by absolute URL path. Relative paths within the `src/` directory didn't work because they'd be shipped directly to the browser, as-is. Different pages would end up creating different URLs:\n\n```html\n<!-- This works the same on every page: -->\n<img src=\"/logo.png\" />\n<!-- But this means different things on different pages: -->\n<img src=\"../logo.png\" />\n```\n\nStarting in Astro 0.19, you can now use the new `Astro.resolve()` helper function to create an absolute URL reference from any relative path:\n\n```html\n<!-- Astro component input: -->\n<img src={Astro.resolve('../images/logo.png')} />\n<!-- HTML output: -->\n<img src=\"/_astro/src/images/logo.png\" />\n```\n\nIf it helps, you can think of `Astro.resolve()` as a simplified alternative to doing `new URL(yourRelativePath, import.meta.url).pathname` in the browser.\n\n[`Astro.resolve()`](https://docs.astro.build/reference/api-reference#astroresolve) gives you more options and more control over how you structure your project. In the future, this will also unlock our ability to serve optimized images right out of your `src/` directory.\n\n🎉 This awesome feature was contributed by [Jonathan Neal](https://github.com/jonathantneal) & [Matthew Phillips!](https://github.com/matthewp)\n\n## Docs Translations\n\nNot all developers speak English. In fact, most don't. Luckily, some amazing contributors in our community came together to translate the Astro docs site for a global audience. We are currently working on translations in 10 different languages, including: \n\n- [简体中文](https://docs.astro.build/zh-CN/getting-started)\n- [正體中文](https://docs.astro.build/zh-TW/getting-started)\n- [Български](https://docs.astro.build/bg/getting-started)\n- [Deutsch](https://docs.astro.build/de/getting-started)\n- [English](https://docs.astro.build/getting-started)\n- [Español](https://docs.astro.build/es/getting-started)\n- [Français](https://docs.astro.build/fr/getting-started)\n- [Nederlands](https://docs.astro.build/nl/getting-started)\n- [Português](https://docs.astro.build/pt-br/getting-started)\n- [Suomi](https://docs.astro.build/fi/getting-started)\n- [Русский](https://docs.astro.build/ru/getting-started)\n\nThese are still a work in progress, and we'll keep working towards 100% translation as we creep closer to a v1.0 release. If you know a few languages and are able to contribute, [we could really use your help!](https://github.com/withastro/astro/blob/main/CONTRIBUTING.md#translations)\n\n## Open Collective\n\nIt's been a little over two months since [the first release](https://astro.build/blog/introducing-astro) of Astro. In that release, we outlined our commitment to both **a free, open source Astro** and **long-term financial sustainability** for the project. Today, we're announcing our first experiment towards long-term sustainability:\n\n**Companies and individuals can now sponsor Astro's development with Open Collective. [Visit our Open Collective →](https://opencollective.com/astrodotbuild)**\n\nWe created an Open Collective because corporate sponsorship is one of the few proven paths towards financial sustainability in open source. However, [it's far from a perfect model.](https://stackoverflow.blog/2021/01/07/open-source-has-a-funding-problem/) Most contributions only go to a handful of popular projects, and the rest never see any meaningful support. The odds are against us but we believe in Astro, our community, and the excitement that keep growing around this project.\n\nChances are, your company benefits from open source software. Invest in the technologies that power your business by sponsoring Astro and any other open source projects that you use. **Bonus:** thousands of developers will see your logo on our README and the [astro.build homepage](https://astro.build), every day. \n\n100% of funds raised are invested directly back into the project and our community. You can read more about how funds are distributed by reading our [FUNDING.md](https://github.com/withastro/astro/blob/main/FUNDING.md) doc on GitHub.\n\nWe'll be tweeting out personal \"thank you\" messages to every person and company who hits the [\"Sponsor\"](https://opencollective.com/astrodotbuild) button in the next 48 hours. Our first, very special THANK YOU goes out to [Chris Jennings](https://twitter.com/ckj), CCO and co-founder of [Sentry](https://sentry.io/), for being our first official sponsor! 🎉\n\n## ICYMI (In case you missed it)\n\n[Github added official support](https://twitter.com/astrodotbuild/status/1423001137905651714?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1423001137905651714%7Ctwgr%5E%7Ctwcon%5Es1_c10&ref_url=https%3A%2F%2Fastro.build%2Fblog%2Fastro-019%2F) for `.astro` files and `astro` syntax highlighting across their entire platform. Not to be outdone, CodeSandbox [quickly followed up](https://twitter.com/codesandbox/status/1425438635357257728) with support of their own! \n\nThis is such a huge milestone for Astro, especially considering how young the project is! Thank you to everyone who used Astro, created projects, and showed these platforms how valuable Astro really is.\n\n<Tweet src=\"https://twitter.com/astrodotbuild/status/1423001137905651714\">\n It’s official! 🎉 <a href=\"https://twitter.com/github\">@github</a> now supports syntax highlighting for <code>.astro</code> files!<br><br>You can also use code blocks starting with <code>astro</code> to get proper highlighting in Markdown files, issues, and PR comments!\n <br><br><a href=\"https://t.co/CDiGw66Qw6\">pic.twitter.com/CDiGw66Qw6</a></p>— Astro (@astrodotbuild) <a href=\"https://twitter.com/astrodotbuild/status/1423001137905651714?ref_src=twsrc%5Etfw\">August 4, 2021</a></blockquote>\n</Tweet>\n\n## 👋\n\nThank you for reading! [Follow us on Twitter](https://twitter.com/astrodotbuild) to stay up to date as we move closer to a v1.0 release. Also, you can check out [our previous release post](https://astro.build/blog/astro-018) for even more updates on Astro. \n\nAnd, if you've read this far, you should definitely [join us on Discord.](https://astro.build/chat) ;)\n",
"html": "<p>We are excited to introduce Astro 0.19, featuring:</p>\n<ul>\n<li><strong><a href=\"#file-based-routing-inspired-by-nextjs\">Next.js-inspired routing:</a></strong> Define new dynamic URL params.</li>\n<li><strong><a href=\"#clientonly-loading-directive\"><code is:raw>client:only</code> directive:</a></strong> Opt-out of SSR for individual components.</li>\n<li><strong><a href=\"#astroresolve\"><code is:raw>Astro.resolve()</code>:</a></strong> Resolve relative URLs to assets in <code is:raw>src/</code>.</li>\n<li><strong><a href=\"#docs-translations\">Community translations:</a></strong> Read our docs in 10 different languages.</li>\n<li><strong><a href=\"#open-collective\">Astro Open Collective:</a></strong> Now accepting donations & sponsorship!</li>\n</ul>\n<h2 id=\"file-based-routing-inspired-by-nextjs\"><a href=\"#file-based-routing-inspired-by-nextjs\">File-based routing, inspired by Next.js</a></h2>\n<p>Astro has always supported basic file-based routing, where every file in your <code is:raw>pages/</code> directory becomes a new page at that same URL. Astro 0.19 takes this one step further with support for dynamic URL params in your filename.</p>\n<p>Inspired by <a href=\"https://nextjs.org/docs/routing/dynamic-routes\">Next.js</a> and <a href=\"https://kit.svelte.dev/docs#routing-pages\">SvelteKit</a>, you can now add brackets to your page filename (ex: <code is:raw>src/pages/[slug].astro</code>) to create a dynamic page that matches many different URLs. <code is:raw>[...slug].astro</code> catch-all syntax is also supported.</p>\n<p>With this new feature you can add support for URL params, slugs, pretty URLs, pagination and more to your website.</p>\n<p>To create a dynamic route, create a file in your pages directory like <code is:raw>pages/posts/[slug].astro</code>. Create a <a href=\"https://docs.astro.build/reference/api-reference#getstaticpaths\"><code is:raw>getStaticPaths()</code></a> function in your page frontmatter script and tell Astro exactly what paths to build for that route:</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #8B949E\">---</span></span>\n<span class=\"line\"><span style=\"color: #8B949E\">// src/pages/posts/[slug].astro</span></span>\n<span class=\"line\"><span style=\"color: #8B949E\">// Tell Astro what pages to build for your route "/pages/:slug"</span></span>\n<span class=\"line\"><span style=\"color: #FF7B72\">export</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">async</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">function</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #D2A8FF\">getStaticPaths</span><span style=\"color: #C9D1D9\">() {</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">return</span><span style=\"color: #C9D1D9\"> [</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #8B949E\">// Generates: /pages/hello-world</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> { params: { slug: </span><span style=\"color: #A5D6FF\">'hello-world'</span><span style=\"color: #C9D1D9\"> } },</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #8B949E\">// Generates: /pages/my-first-blog-post</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> { params: { slug: </span><span style=\"color: #A5D6FF\">'my-first-blog-post'</span><span style=\"color: #C9D1D9\"> } },</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #8B949E\">// Generates: /pages/astro-ftw</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> { params: { slug: </span><span style=\"color: #A5D6FF\">'astro-ftw'</span><span style=\"color: #C9D1D9\"> } },</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #8B949E\">// ...</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> ];</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\">}</span></span>\n<span class=\"line\"><span style=\"color: #8B949E\">---</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #7EE787\">html</span><span style=\"color: #C9D1D9\">></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> <</span><span style=\"color: #7EE787\">head</span><span style=\"color: #C9D1D9\">><</span><span style=\"color: #7EE787\">title</span><span style=\"color: #C9D1D9\">>My Page</</span><span style=\"color: #7EE787\">title</span><span style=\"color: #C9D1D9\">></</span><span style=\"color: #7EE787\">head</span><span style=\"color: #C9D1D9\">></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> <</span><span style=\"color: #7EE787\">body</span><span style=\"color: #C9D1D9\">>URL Param is {Astro.params.slug}</</span><span style=\"color: #7EE787\">body</span><span style=\"color: #C9D1D9\">></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"></</span><span style=\"color: #7EE787\">html</span><span style=\"color: #C9D1D9\">></span></span></code></pre>\n<p>Astro is a static site builder, so you need to tell Astro what pages to build for every dynamic route. Defining your paths manually might feel like boilerplate, but ahead-of-time page building is exactly what makes static websites so fast for your users.</p>\n<p><code is:raw>getStaticPaths()</code> is an async function, so you can — and should! — use it to load external data into your website. We normally love to use the <a href=\"https://pokeapi.co/\">Pokemon API</a> in our examples, but you’ll probably want to use your favorite headless CMS:</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #8B949E\">// src/pages/posts/[id].astro</span></span>\n<span class=\"line\"><span style=\"color: #8B949E\">// Tell Astro what pages to build for your route "/pages/:id"</span></span>\n<span class=\"line\"><span style=\"color: #FF7B72\">export</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">async</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">function</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #D2A8FF\">getStaticPaths</span><span style=\"color: #C9D1D9\">() {</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #8B949E\">// Lets fetch posts from CSS Tricks' Headless CMS:</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">const</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">CSS_TRICKS_CMS</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">=</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #A5D6FF\">'https://css-tricks.com/wp-json/wp/v2/posts'</span><span style=\"color: #C9D1D9\">;</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">const</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">allPosts</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">=</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">await</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #D2A8FF\">fetch</span><span style=\"color: #C9D1D9\">(</span><span style=\"color: #79C0FF\">CSS_TRICKS_CMS</span><span style=\"color: #C9D1D9\">).</span><span style=\"color: #D2A8FF\">then</span><span style=\"color: #C9D1D9\">(</span><span style=\"color: #FFA657\">r</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">=></span><span style=\"color: #C9D1D9\"> r.</span><span style=\"color: #D2A8FF\">json</span><span style=\"color: #C9D1D9\">());</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #8B949E\">// Then, create a new page from every post:</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">return</span><span style=\"color: #C9D1D9\"> allPosts.</span><span style=\"color: #D2A8FF\">map</span><span style=\"color: #C9D1D9\">((</span><span style=\"color: #FFA657\">post</span><span style=\"color: #C9D1D9\">) </span><span style=\"color: #FF7B72\">=></span><span style=\"color: #C9D1D9\"> ({</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #8B949E\">// Set the URL param ":id" in the page URL</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> params: {id: post.id},</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #8B949E\">// Pass the post object as a prop to the page</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> props: {post},</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> }));</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\">}</span></span></code></pre>\n<p>To learn more, check out our new documentation on <a href=\"https://docs.astro.build/core-concepts/routing\">Routing</a> and the new <a href=\"https://docs.astro.build/reference/api-reference#getstaticpaths\"><code is:raw>getStaticPaths()</code> API.</a> Or, if you prefer to learn by example, check out this great <a href=\"https://github.com/chriscoyier/astro-css-trickzz\">Wordpress Headless CMS project</a> from Chris Coyier and this <a href=\"https://github.com/cassidoo/shopify-react-astro\">Shopify Ecommerce example</a> by Cassidy Williams of Netlify.</p>\n<p>If you were a previous user of our original Collections API, this new file-based routing system completely replaces Collections with plenty of friendly warning messages to help you upgrade. We hope that this new API removes all common frustrations that users had reported with the Collections API.</p>\n<h2 id=\"clientonly-loading-directive\"><a href=\"#clientonly-loading-directive\"><code is:raw>client:only</code> loading directive</a></h2>\n<p>Sometimes, a UI component can’t render on the server. Maybe it’s because you’ve hit a bug in one of your dependencies, or maybe you’re just using a library like D3 that can’t run without the browser’s <code is:raw>window</code> object.</p>\n<p>You can attempt to wrap browser-only code with your own static server-side fallback UI. However, most users wanted a way to render a browser-only component without the extra boilerplate. Enter, <code is:raw>client:only</code>.</p>\n<p>Astro 0.19 ships with the new <code is:raw>client:only</code> loading directive to hydrate your component in the browser without server-side rendering. This provides a simple, straightforward fallback for any browser-only components.</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #8B949E\"><!-- only renders in the browser, no placeholder HTML --></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #FFA198; font-style: italic\">MyReactComponent</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">client:only</span><span style=\"color: #C9D1D9\"> /></span></span></code></pre>\n<p><code is:raw>client:only</code> is now our fifth directive to let you completely control you component loading behavior. Visit our docs site to <a href=\"https://docs.astro.build/core-concepts/component-hydration#hydrate-interactive-components\">check out the entire set</a> and learn more about <a href=\"https://docs.astro.build/core-concepts/component-hydration\">Partial Hydration</a>.</p>\n<p>🎉 This awesome feature was contributed by <a href=\"https://github.com/tony-sull\">Tony Sull</a> of <a href=\"https://navillus.dev/\">Navillus</a>. Thanks, Tony!</p>\n<h2 id=\"astroresolve\"><a href=\"#astroresolve\"><code is:raw>Astro.resolve()</code></a></h2>\n<p>Astro 0.19 includes a new <a href=\"https://docs.astro.build/reference/api-reference#astroresolve\"><code is:raw>Astro.resolve()</code></a> helper function to resolve relative file references in your templates. With this new feature, you can reference relative assets (like images) inside of your components and Astro will return the correct URL for the browser.</p>\n<p>Previously, you always had to place files in the <code is:raw>public/</code> directory and reference them by absolute URL path. Relative paths within the <code is:raw>src/</code> directory didn’t work because they’d be shipped directly to the browser, as-is. Different pages would end up creating different URLs:</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #8B949E\"><!-- This works the same on every page: --></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #7EE787\">img</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">src</span><span style=\"color: #C9D1D9\">=</span><span style=\"color: #A5D6FF\">"/logo.png"</span><span style=\"color: #C9D1D9\"> /></span></span>\n<span class=\"line\"><span style=\"color: #8B949E\"><!-- But this means different things on different pages: --></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #7EE787\">img</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">src</span><span style=\"color: #C9D1D9\">=</span><span style=\"color: #A5D6FF\">"../logo.png"</span><span style=\"color: #C9D1D9\"> /></span></span></code></pre>\n<p>Starting in Astro 0.19, you can now use the new <code is:raw>Astro.resolve()</code> helper function to create an absolute URL reference from any relative path:</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #8B949E\"><!-- Astro component input: --></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #7EE787\">img</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">src</span><span style=\"color: #C9D1D9\">=</span><span style=\"color: #A5D6FF\">{Astro.resolve(</span><span style=\"color: #FFA198; font-style: italic\">'../images/logo.png')}</span><span style=\"color: #C9D1D9\"> /></span></span>\n<span class=\"line\"><span style=\"color: #8B949E\"><!-- HTML output: --></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #7EE787\">img</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">src</span><span style=\"color: #C9D1D9\">=</span><span style=\"color: #A5D6FF\">"/_astro/src/images/logo.png"</span><span style=\"color: #C9D1D9\"> /></span></span></code></pre>\n<p>If it helps, you can think of <code is:raw>Astro.resolve()</code> as a simplified alternative to doing <code is:raw>new URL(yourRelativePath, import.meta.url).pathname</code> in the browser.</p>\n<p><a href=\"https://docs.astro.build/reference/api-reference#astroresolve\"><code is:raw>Astro.resolve()</code></a> gives you more options and more control over how you structure your project. In the future, this will also unlock our ability to serve optimized images right out of your <code is:raw>src/</code> directory.</p>\n<p>🎉 This awesome feature was contributed by <a href=\"https://github.com/jonathantneal\">Jonathan Neal</a> & <a href=\"https://github.com/matthewp\">Matthew Phillips!</a></p>\n<h2 id=\"docs-translations\"><a href=\"#docs-translations\">Docs Translations</a></h2>\n<p>Not all developers speak English. In fact, most don’t. Luckily, some amazing contributors in our community came together to translate the Astro docs site for a global audience. We are currently working on translations in 10 different languages, including:</p>\n<ul>\n<li><a href=\"https://docs.astro.build/zh-CN/getting-started\">简体中文</a></li>\n<li><a href=\"https://docs.astro.build/zh-TW/getting-started\">正體中文</a></li>\n<li><a href=\"https://docs.astro.build/bg/getting-started\">Български</a></li>\n<li><a href=\"https://docs.astro.build/de/getting-started\">Deutsch</a></li>\n<li><a href=\"https://docs.astro.build/getting-started\">English</a></li>\n<li><a href=\"https://docs.astro.build/es/getting-started\">Español</a></li>\n<li><a href=\"https://docs.astro.build/fr/getting-started\">Français</a></li>\n<li><a href=\"https://docs.astro.build/nl/getting-started\">Nederlands</a></li>\n<li><a href=\"https://docs.astro.build/pt-br/getting-started\">Português</a></li>\n<li><a href=\"https://docs.astro.build/fi/getting-started\">Suomi</a></li>\n<li><a href=\"https://docs.astro.build/ru/getting-started\">Русский</a></li>\n</ul>\n<p>These are still a work in progress, and we’ll keep working towards 100% translation as we creep closer to a v1.0 release. If you know a few languages and are able to contribute, <a href=\"https://github.com/withastro/astro/blob/main/CONTRIBUTING.md#translations\">we could really use your help!</a></p>\n<h2 id=\"open-collective\"><a href=\"#open-collective\">Open Collective</a></h2>\n<p>It’s been a little over two months since <a href=\"https://astro.build/blog/introducing-astro\">the first release</a> of Astro. In that release, we outlined our commitment to both <strong>a free, open source Astro</strong> and <strong>long-term financial sustainability</strong> for the project. Today, we’re announcing our first experiment towards long-term sustainability:</p>\n<p><strong>Companies and individuals can now sponsor Astro’s development with Open Collective. <a href=\"https://opencollective.com/astrodotbuild\">Visit our Open Collective →</a></strong></p>\n<p>We created an Open Collective because corporate sponsorship is one of the few proven paths towards financial sustainability in open source. However, <a href=\"https://stackoverflow.blog/2021/01/07/open-source-has-a-funding-problem/\">it’s far from a perfect model.</a> Most contributions only go to a handful of popular projects, and the rest never see any meaningful support. The odds are against us but we believe in Astro, our community, and the excitement that keep growing around this project.</p>\n<p>Chances are, your company benefits from open source software. Invest in the technologies that power your business by sponsoring Astro and any other open source projects that you use. <strong>Bonus:</strong> thousands of developers will see your logo on our README and the <a href=\"https://astro.build\">astro.build homepage</a>, every day.</p>\n<p>100% of funds raised are invested directly back into the project and our community. You can read more about how funds are distributed by reading our <a href=\"https://github.com/withastro/astro/blob/main/FUNDING.md\">FUNDING.md</a> doc on GitHub.</p>\n<p>We’ll be tweeting out personal “thank you” messages to every person and company who hits the <a href=\"https://opencollective.com/astrodotbuild\">“Sponsor”</a> button in the next 48 hours. Our first, very special THANK YOU goes out to <a href=\"https://twitter.com/ckj\">Chris Jennings</a>, CCO and co-founder of <a href=\"https://sentry.io/\">Sentry</a>, for being our first official sponsor! 🎉</p>\n<h2 id=\"icymi-in-case-you-missed-it\"><a href=\"#icymi-in-case-you-missed-it\">ICYMI (In case you missed it)</a></h2>\n<p><a href=\"https://twitter.com/astrodotbuild/status/1423001137905651714?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1423001137905651714%7Ctwgr%5E%7Ctwcon%5Es1_c10&ref_url=https%3A%2F%2Fastro.build%2Fblog%2Fastro-019%2F\">Github added official support</a> for <code is:raw>.astro</code> files and <code is:raw>astro</code> syntax highlighting across their entire platform. Not to be outdone, CodeSandbox <a href=\"https://twitter.com/codesandbox/status/1425438635357257728\">quickly followed up</a> with support of their own!</p>\n<p>This is such a huge milestone for Astro, especially considering how young the project is! Thank you to everyone who used Astro, created projects, and showed these platforms how valuable Astro really is.</p>\n<Tweet src=\"https://twitter.com/astrodotbuild/status/1423001137905651714\">\n It’s official! 🎉 <a href=\"https://twitter.com/github\">@github</a> now supports syntax highlighting for <code>.astro</code> files!<br><br>You can also use code blocks starting with <code>astro</code> to get proper highlighting in Markdown files, issues, and PR comments!\n <br><br><a href=\"https://t.co/CDiGw66Qw6\">pic.twitter.com/CDiGw66Qw6</a></p>— Astro (@astrodotbuild) <a href=\"https://twitter.com/astrodotbuild/status/1423001137905651714?ref_src=twsrc%5Etfw\">August 4, 2021</a></blockquote>\n</Tweet>\n<h2 id=\"\"><a href=\"#\">👋</a></h2>\n<p>Thank you for reading! <a href=\"https://twitter.com/astrodotbuild\">Follow us on Twitter</a> to stay up to date as we move closer to a v1.0 release. Also, you can check out <a href=\"https://astro.build/blog/astro-018\">our previous release post</a> for even more updates on Astro.</p>\n<p>And, if you’ve read this far, you should definitely <a href=\"https://astro.build/chat\">join us on Discord.</a> ;)</p>"
},
{
"headers": [
{
"depth": 2,
"slug": "dynamic-file-routes",
"text": "Dynamic File Routes"
},
{
"depth": 2,
"slug": "automatic-xss-protection",
"text": "Automatic XSS Protection"
},
{
"depth": 2,
"slug": "new-sethtml-and-settext-directives",
"text": "New set:html and set:text directives"
},
{
"depth": 2,
"slug": "safe-access-to-sensitive-environment-variables",
"text": "Safe access to sensitive environment variables"
},
{
"depth": 2,
"slug": "better-builds-with-vite-v28",
"text": "Better builds with Vite v2.8"
},
{
"depth": 2,
"slug": "better-stability-with-astrocompiler-v011",
"text": "Better stability with @astro/compiler v0.11"
},
{
"depth": 2,
"slug": "better-build-performance",
"text": "Better build performance"
},
{ "depth": 2, "slug": "", "text": "👋" }
],
"source": "\n**Astro v0.23.0** has just been released with some new features and highlights:\n\n- [Dynamic File Routes](#dynamic-file-routes)\n- [Automatic XSS Protection](#automatic-xss-protection)\n- [New `set:html` and `set:text` directives](#new-sethtml-and-settext-directives)\n- [Safe access to sensitive environment variables](#safe-access-to-sensitive-environment-variables)\n- [Better builds with Vite v2.8](#better-builds-with-vite-v28)\n- [Better stability with @astro/compiler v0.11](#better-stability-with-astrocompiler-v011)\n- [Better build performance with `--experimental-static-builds`](#better-build-performance)\n\n## Dynamic File Routes\n\nYou can now build dynamic, non-HTML files in your project by using Astro's new **file routes**. Use file routes to dynamically generate files during your build for things like JSON, XML, or even non-text assets like images. This feature has been one of our most requested since the early days of Astro!\n\nTo create a file route inside of your Astro project, create a new JavaScript or TypeScript file inside of your `src/pages` directory. File routes leverage Astro's existing file-based router, so be sure to include the final built file extension in the filename.\n\n\n```js\n// Example: src/pages/builtwith.json.ts\n// Outputs: /builtwith.json\n\n// File routes export a get() function, which gets called to generate the file.\n// Return an object with `body` to save the file contents in your final build.\nexport async function get() {\n return {\n body: JSON.stringify({\n name: 'Astro',\n url: 'https://astro.build/',\n }),\n };\n}\n```\n\nThis feature is only available with the `--experimental-static-build` flag. [To learn more, check out the docs.](https://docs.astro.build/en/core-concepts/astro-pages/#non-html-pages)\n\n## Automatic XSS Protection\n\nAstro v0.23 begins our migration towards automatic HTML escaping inside of Astro template expressions. This new feature will protect you from accidentally injecting untrusted HTML onto your page. Without it, you open yourself up to Cross Site Scripting (XSS) attacks where malicious users can hijack your site to run untrusted or unexpected code on the page.\n\n```astro\n<!-- Examples of untrusted HTML injection -->\n<div>{`<span>Hello, dangerous HTML</span>`}</div>\n<div>{`<script>alert('oh no');</script>`}</div>\n<div>{untrustedHtml}</div>\n```\n\nThanks to React and other component-based UI libraries, XSS vulnerabilities are becoming a thing of the past. Astro is excited to meet this same bar of zero-effort, built-in, automatic XSS protection.\n\nTo help our users migrate, Astro v0.23 will log a warning to the console when unescaped HTML is encountered inside of a template expression. In the next version, template expressions will always escape their contents.\n\n## New `set:html` and `set:text` directives\n\nTwo new directives are introduced to support better HTML injection when you need it. As we covered in the previous section, setting HTML directly is risky. However, in some special cases it may be required. Astro created the new `set:html` directive for those cases. You can think of it like React's `dangerouslySetInnerHTML`.\n\n```astro\n<!-- Examples of explicit HTML setting -->\n<div set:html={`<span>Hello, trusted or already escaped HTML</span>`}></div>\n<div set:html={`<script>alert('oh yes');</script>`}></div>\n<div set:html={trustedOrAlreadyEscapedHtml}></div>\n```\n\nIf you don't want a `<div>` wrapper, you can also use `set:html` on the Fragment component for zero wrapping HTML:\n\n```\n- {`<span>Hello, dangerous HTML</span>`}\n+ <Fragment set:html={`<span>Hello, trusted or already escaped HTML</span>`} />\n```\n\n`set:text` is also available to set the element text directly, similar to setting the `.text` property on an element in the browser. Together, these two directives give you a bit more control over the Astro output when you need it.\n\n## Safe access to sensitive environment variables\n\nFor security, Vite only loads environment variables that are explicitly opted-in to be exposed with a `PUBLIC_` prefix. This restriction makes sense in the browser, and protects you from accidentally leaking secret tokens and values. However, it also meant that private environment variables weren't available to you at all, even locally inside of server-rendered Astro components.\n\n<p>In Astro v0.23, <code>import.meta.env</code> now lets you access your private environment variables inside of Astro and anytime code renders locally or on the server. Astro will continue to protect you on the client, and only expose <code>PUBLIC_</code> variables to the frontend that ships to your users.</p>\n\n```js\n// DB_PASSWORD is only available when building your site.\n// If any code tried to run this in the browser, it will be empty.\nconst data = await db(import.meta.env.DB_PASSWORD);\n\n// PUBLIC_POKEAPI is available anywhere, thanks to the PUBLIC_ prefix!\nconst data = fetch(`${import.meta.env.PUBLIC_POKEAPI}/pokemon/squirtle`);\n```\n\nSee our [Environment Variables documentation](https://docs.astro.build/en/guides/environment-variables/) to learn more.\n\n## Better builds with Vite v2.8\n\nAstro v0.23 comes with an internal Vite upgrade that brings new features and huge stability improvements. Vite's npm package handling got a boost as well, so that more packages should work in more projects. [Check out their changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) to learn more.\n\n## Better stability with @astro/compiler v0.11\n\nAstro v0.23 also got a compiler upgrade which should result in noticeable performance and stability improvements across all projects. [Check out the changelog](https://github.com/withastro/compiler/releases) to learn more.\n\n## Better build performance\nYou may have noticed the reference to `--experimental-static-build` above, and the fact that some new features are only available behind this flag. This flag is not new in v0.23, but it continues to improve as we get closer to an official release of the feature. This new \"static build\" strategy will soon become the default build behavior in Astro.\n\nIf you haven't tried the `--experimental-static-build` flag out yet in your build, please give it a try and leave us feedback in Discord. Check out our blog post [Scaling Astro to 10,000+ Pages](/blog/experimental-static-build) to learn more about this future build strategy for Astro.\n\n\n## 👋\n\nThank you for reading! [Follow us on Twitter](https://twitter.com/astrodotbuild) to stay up to date on Astro releases and news. \n\nIf you've read this far, you should definitely [join us on Discord.](https://astro.build/chat) ;)\n",
"html": "<p><strong>Astro v0.23.0</strong> has just been released with some new features and highlights:</p>\n<ul>\n<li><a href=\"#dynamic-file-routes\">Dynamic File Routes</a></li>\n<li><a href=\"#automatic-xss-protection\">Automatic XSS Protection</a></li>\n<li><a href=\"#new-sethtml-and-settext-directives\">New <code is:raw>set:html</code> and <code is:raw>set:text</code> directives</a></li>\n<li><a href=\"#safe-access-to-sensitive-environment-variables\">Safe access to sensitive environment variables</a></li>\n<li><a href=\"#better-builds-with-vite-v28\">Better builds with Vite v2.8</a></li>\n<li><a href=\"#better-stability-with-astrocompiler-v011\">Better stability with @astro/compiler v0.11</a></li>\n<li><a href=\"#better-build-performance\">Better build performance with <code is:raw>--experimental-static-builds</code></a></li>\n</ul>\n<h2 id=\"dynamic-file-routes\"><a href=\"#dynamic-file-routes\">Dynamic File Routes</a></h2>\n<p>You can now build dynamic, non-HTML files in your project by using Astro’s new <strong>file routes</strong>. Use file routes to dynamically generate files during your build for things like JSON, XML, or even non-text assets like images. This feature has been one of our most requested since the early days of Astro!</p>\n<p>To create a file route inside of your Astro project, create a new JavaScript or TypeScript file inside of your <code is:raw>src/pages</code> directory. File routes leverage Astro’s existing file-based router, so be sure to include the final built file extension in the filename.</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #8B949E\">// Example: src/pages/builtwith.json.ts</span></span>\n<span class=\"line\"><span style=\"color: #8B949E\">// Outputs: /builtwith.json</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color: #8B949E\">// File routes export a get() function, which gets called to generate the file.</span></span>\n<span class=\"line\"><span style=\"color: #8B949E\">// Return an object with `body` to save the file contents in your final build.</span></span>\n<span class=\"line\"><span style=\"color: #FF7B72\">export</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">async</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">function</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #D2A8FF\">get</span><span style=\"color: #C9D1D9\">() {</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">return</span><span style=\"color: #C9D1D9\"> {</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> body: </span><span style=\"color: #79C0FF\">JSON</span><span style=\"color: #C9D1D9\">.</span><span style=\"color: #79C0FF\">stringify</span><span style=\"color: #C9D1D9\">({</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> name: </span><span style=\"color: #A5D6FF\">'Astro'</span><span style=\"color: #C9D1D9\">,</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> url: </span><span style=\"color: #A5D6FF\">'https://astro.build/'</span><span style=\"color: #C9D1D9\">,</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> }),</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> };</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\">}</span></span></code></pre>\n<p>This feature is only available with the <code is:raw>--experimental-static-build</code> flag. <a href=\"https://docs.astro.build/en/core-concepts/astro-pages/#non-html-pages\">To learn more, check out the docs.</a></p>\n<h2 id=\"automatic-xss-protection\"><a href=\"#automatic-xss-protection\">Automatic XSS Protection</a></h2>\n<p>Astro v0.23 begins our migration towards automatic HTML escaping inside of Astro template expressions. This new feature will protect you from accidentally injecting untrusted HTML onto your page. Without it, you open yourself up to Cross Site Scripting (XSS) attacks where malicious users can hijack your site to run untrusted or unexpected code on the page.</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #8B949E\"><!-- Examples of untrusted HTML injection --></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\">>{</span><span style=\"color: #A5D6FF\">`<span>Hello, dangerous HTML</span>`</span><span style=\"color: #C9D1D9\">}</</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\">></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\">>{</span><span style=\"color: #A5D6FF\">`<script>alert('oh no');</script>`</span><span style=\"color: #C9D1D9\">}</</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\">></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\">>{untrustedHtml}</</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\">></span></span></code></pre>\n<p>Thanks to React and other component-based UI libraries, XSS vulnerabilities are becoming a thing of the past. Astro is excited to meet this same bar of zero-effort, built-in, automatic XSS protection.</p>\n<p>To help our users migrate, Astro v0.23 will log a warning to the console when unescaped HTML is encountered inside of a template expression. In the next version, template expressions will always escape their contents.</p>\n<h2 id=\"new-sethtml-and-settext-directives\"><a href=\"#new-sethtml-and-settext-directives\">New <code is:raw>set:html</code> and <code is:raw>set:text</code> directives</a></h2>\n<p>Two new directives are introduced to support better HTML injection when you need it. As we covered in the previous section, setting HTML directly is risky. However, in some special cases it may be required. Astro created the new <code is:raw>set:html</code> directive for those cases. You can think of it like React’s <code is:raw>dangerouslySetInnerHTML</code>.</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #8B949E\"><!-- Examples of explicit HTML setting --></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">set:html</span><span style=\"color: #C9D1D9\">={</span><span style=\"color: #A5D6FF\">`<span>Hello, trusted or already escaped HTML</span>`</span><span style=\"color: #C9D1D9\">}></</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\">></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">set:html</span><span style=\"color: #C9D1D9\">={</span><span style=\"color: #A5D6FF\">`<script>alert('oh yes');</script>`</span><span style=\"color: #C9D1D9\">}></</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\">></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">set:html</span><span style=\"color: #C9D1D9\">={trustedOrAlreadyEscapedHtml}></</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\">></span></span></code></pre>\n<p>If you don’t want a <code is:raw><div></code> wrapper, you can also use <code is:raw>set:html</code> on the Fragment component for zero wrapping HTML:</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #c9d1d9\">- {`<span>Hello, dangerous HTML</span>`}</span></span>\n<span class=\"line\"><span style=\"color: #c9d1d9\">+ <Fragment set:html={`<span>Hello, trusted or already escaped HTML</span>`} /></span></span></code></pre>\n<p><code is:raw>set:text</code> is also available to set the element text directly, similar to setting the <code is:raw>.text</code> property on an element in the browser. Together, these two directives give you a bit more control over the Astro output when you need it.</p>\n<h2 id=\"safe-access-to-sensitive-environment-variables\"><a href=\"#safe-access-to-sensitive-environment-variables\">Safe access to sensitive environment variables</a></h2>\n<p>For security, Vite only loads environment variables that are explicitly opted-in to be exposed with a <code is:raw>PUBLIC_</code> prefix. This restriction makes sense in the browser, and protects you from accidentally leaking secret tokens and values. However, it also meant that private environment variables weren’t available to you at all, even locally inside of server-rendered Astro components.</p>\n<p>In Astro v0.23, <code>import.meta.env</code> now lets you access your private environment variables inside of Astro and anytime code renders locally or on the server. Astro will continue to protect you on the client, and only expose <code>PUBLIC_</code> variables to the frontend that ships to your users.</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #8B949E\">// DB_PASSWORD is only available when building your site.</span></span>\n<span class=\"line\"><span style=\"color: #8B949E\">// If any code tried to run this in the browser, it will be empty.</span></span>\n<span class=\"line\"><span style=\"color: #FF7B72\">const</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">data</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">=</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">await</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #D2A8FF\">db</span><span style=\"color: #C9D1D9\">(</span><span style=\"color: #FF7B72\">import</span><span style=\"color: #C9D1D9\">.</span><span style=\"color: #79C0FF\">meta</span><span style=\"color: #C9D1D9\">.env.</span><span style=\"color: #79C0FF\">DB_PASSWORD</span><span style=\"color: #C9D1D9\">);</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color: #8B949E\">// PUBLIC_POKEAPI is available anywhere, thanks to the PUBLIC_ prefix!</span></span>\n<span class=\"line\"><span style=\"color: #FF7B72\">const</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">data</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">=</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #D2A8FF\">fetch</span><span style=\"color: #C9D1D9\">(</span><span style=\"color: #A5D6FF\">`${</span><span style=\"color: #FF7B72\">import</span><span style=\"color: #A5D6FF\">.</span><span style=\"color: #79C0FF\">meta</span><span style=\"color: #A5D6FF\">.</span><span style=\"color: #C9D1D9\">env</span><span style=\"color: #A5D6FF\">.</span><span style=\"color: #79C0FF\">PUBLIC_POKEAPI</span><span style=\"color: #A5D6FF\">}/pokemon/squirtle`</span><span style=\"color: #C9D1D9\">);</span></span></code></pre>\n<p>See our <a href=\"https://docs.astro.build/en/guides/environment-variables/\">Environment Variables documentation</a> to learn more.</p>\n<h2 id=\"better-builds-with-vite-v28\"><a href=\"#better-builds-with-vite-v28\">Better builds with Vite v2.8</a></h2>\n<p>Astro v0.23 comes with an internal Vite upgrade that brings new features and huge stability improvements. Vite’s npm package handling got a boost as well, so that more packages should work in more projects. <a href=\"https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md\">Check out their changelog</a> to learn more.</p>\n<h2 id=\"better-stability-with-astrocompiler-v011\"><a href=\"#better-stability-with-astrocompiler-v011\">Better stability with @astro/compiler v0.11</a></h2>\n<p>Astro v0.23 also got a compiler upgrade which should result in noticeable performance and stability improvements across all projects. <a href=\"https://github.com/withastro/compiler/releases\">Check out the changelog</a> to learn more.</p>\n<h2 id=\"better-build-performance\"><a href=\"#better-build-performance\">Better build performance</a></h2>\n<p>You may have noticed the reference to <code is:raw>--experimental-static-build</code> above, and the fact that some new features are only available behind this flag. This flag is not new in v0.23, but it continues to improve as we get closer to an official release of the feature. This new “static build” strategy will soon become the default build behavior in Astro.</p>\n<p>If you haven’t tried the <code is:raw>--experimental-static-build</code> flag out yet in your build, please give it a try and leave us feedback in Discord. Check out our blog post <a href=\"/blog/experimental-static-build\">Scaling Astro to 10,000+ Pages</a> to learn more about this future build strategy for Astro.</p>\n<h2 id=\"\"><a href=\"#\">👋</a></h2>\n<p>Thank you for reading! <a href=\"https://twitter.com/astrodotbuild\">Follow us on Twitter</a> to stay up to date on Astro releases and news.</p>\n<p>If you’ve read this far, you should definitely <a href=\"https://astro.build/chat\">join us on Discord.</a> ;)</p>"
},
{
"headers": [],
"source": "The Astro team proudly presents the new [Astro REPL:](https://astro.build/play) compile Astro right in your browser. Use it to explore Astro's HTML-based component language, debug issues, or even prototype an entire webpage. It's powered by Astro’s **new WASM compiler** (written in Go) that runs anywhere and can rebuild files in an instant.\n\n![astro](/assets/blog/astro-repl/astro-repl-screenshot.jpg)\n\n<div style=\"display: flex; justify-content: center;\">\n <PixelLink href=\"https://astro.build/play\">Try the REPL now!</PixelLink>\n</div>\n\n<Note>\n\nTo learn more about our new compiler, [join us on Discord](https://astro.build/chat) and tune in to [Astro Demo Days](https://www.youtube.com/watch?v=-ExcBJrXOd8) next Monday, September 20, 2021 at 11am PST.\n\n</Note>\n",
"html": "<p>The Astro team proudly presents the new <a href=\"https://astro.build/play\">Astro REPL:</a> compile Astro right in your browser. Use it to explore Astro’s HTML-based component language, debug issues, or even prototype an entire webpage. It’s powered by Astro’s <strong>new WASM compiler</strong> (written in Go) that runs anywhere and can rebuild files in an instant.</p>\n<p><img src=\"/assets/blog/astro-repl/astro-repl-screenshot.jpg\" alt=\"astro\"></p>\n<div style=\"display: flex; justify-content: center;\">\n <PixelLink href=\"https://astro.build/play\">Try the REPL now!</PixelLink>\n</div>\n<Note>\n<p>To learn more about our new compiler, <a href=\"https://astro.build/chat\">join us on Discord</a> and tune in to <a href=\"https://www.youtube.com/watch?v=-ExcBJrXOd8\">Astro Demo Days</a> next Monday, September 20, 2021 at 11am PST.</p>\n</Note>"
},
{
"headers": [],
"source": "\nAstro is about to get a lot faster! Our new build optimization process is ready to try out in Astro today:\n\n```shell\nastro build --experimental-static-build\n```\n\nOur new build system can scale to tens, or even hundreds, of thousands of pages. If you hang out in our [Discord](https://astro.build/chat) or pay attention to recent releases you might have seen a lot of discussion about a \"static build\". Our new implementation of `astro build` does 2 things:\n\n- Improves build times by up to 75%.\n- Lowers memory usage when building very large sites (10,000+ pages).\n\nThis new build works by first building an SSR version of your app and then rendering each page to HTML. Because the site is pre-optimized it can render each page in parallel and will never run out of memory.\n\nIf you are a current Astro user please try out this new build by passing the flag in your `build` script.\n\nThis build approach will remain flagged for the next few releases until we iron out any issues, at which point we plan to promote it to be the default `astro build` command. Please help us by reporting issues you encounter, either in the [Discord](https://astro.build/chat) or by filing an [issue](https://github.com/withastro/astro/issues/new/choose).",
"html": "<p>Astro is about to get a lot faster! Our new build optimization process is ready to try out in Astro today:</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #C9D1D9\">astro build --experimental-static-build</span></span></code></pre>\n<p>Our new build system can scale to tens, or even hundreds, of thousands of pages. If you hang out in our <a href=\"https://astro.build/chat\">Discord</a> or pay attention to recent releases you might have seen a lot of discussion about a “static build”. Our new implementation of <code is:raw>astro build</code> does 2 things:</p>\n<ul>\n<li>Improves build times by up to 75%.</li>\n<li>Lowers memory usage when building very large sites (10,000+ pages).</li>\n</ul>\n<p>This new build works by first building an SSR version of your app and then rendering each page to HTML. Because the site is pre-optimized it can render each page in parallel and will never run out of memory.</p>\n<p>If you are a current Astro user please try out this new build by passing the flag in your <code is:raw>build</code> script.</p>\n<p>This build approach will remain flagged for the next few releases until we iron out any issues, at which point we plan to promote it to be the default <code is:raw>astro build</code> command. Please help us by reporting issues you encounter, either in the <a href=\"https://astro.build/chat\">Discord</a> or by filing an <a href=\"https://github.com/withastro/astro/issues/new/choose\">issue</a>.</p>"
},
{
"headers": [
{ "depth": 2, "slug": "hello-vite", "text": "Hello, Vite!" },
{ "depth": 2, "slug": "hello-wasm", "text": "Hello, WASM!" },
{
"depth": 2,
"slug": "components-in-markdown",
"text": "Components in Markdown"
},
{ "depth": 2, "slug": "hmr-meet-html", "text": "HMR, meet HTML" },
{ "depth": 2, "slug": "try-it-today", "text": "Try it today" }
],
"source": "\nAstro v0.21.0 will be our biggest release yet. At a high-level, it includes:\n\n- [A new build engine, powered by Vite](#hello-vite)\n- [A new WASM compiler, written in Go](#hello-wasm)\n- [Brand new features, like Components-in-Markdown](#components-in-markdown)\n- [A new system for HTML live-updating via HMR](#hmr-meet-html)\n\nYou can try out our latest release today [in the browser](https://gitpod.io#snapshot/5e7cf2f1-8108-4fa5-99d3-ed8de70d8c23) or by running `npm install astro@next--compiler` in a new project directory on your machine.\n\nAstro is quickly becoming the production-ready framework for building faster, content-focused websites. To celebrate this milestone, here are some highlights and details on what you can expect in Astro v0.21.0 and beyond.\n\n## Hello, Vite!\n\nAstro 0.21 is getting an internal build engine upgrade, replacing Snowpack with [Vite](https://vitejs.dev) going forward.\n\nWe ran some early experiments with Vite and came away extremely impressed. Vite is well-maintained, well-documented, a bit faster, has great error messages, and has been building clear community buy-in across multiple frameworks. SSR handling can be a bit flakey, but the Vite team is aware of this and actively working on it.\n\nSo now, when Evan You tweets about [some great performance optimization](https://twitter.com/youyuxi/status/1440718351802646550) that they're making in Vite you can be certain that the same speed is coming to Astro as well. \n\nThe reverse is also true: we can now contribute fixes and improvements back to the larger Vite community. Now, when we fix an SSR bug in Astro (like [adding support for ESM-only npm packages](https://github.com/vitejs/vite/pull/5197)) we're also fixing it for every other Vite user, including [SvelteKit](https://kit.svelte.dev/docs#routing-endpoints).\n\nThere's one other huge benefit to choosing Vite: Rollup plugins. Starting in v0.21.0, you'll be able to connect the entire ecosystem of Rollup plugins to Astro. Enable new features like [image optimizations](https://github.com/JonasKruckenberg/imagetools/tree/main/packages/vite) and [icon loading](https://github.com/antfu/unplugin-icons) with just a few simple plugins. Magic!\n\nThis switch from Snowpack to Vite might come as a surprise to some: Both Drew and myself are maintainers on both projects. This was [a hard decision](https://dev.to/fredkschott/5-more-things-i-learned-building-snowpack-to-20-000-stars-5dc9) for us to make. But ultimately, after working with both tools I can confidently say that Vite will be a great choice for Astro's future.\n\n\n## Hello, WASM!\n\nAstro 0.21 features another huge low-level improvement: the brand new [@astrojs/compiler](https://github.com/withastro/astro-compiler-next). Astro's new compiler is written in Go and distributed as WASM. You can run it right in your browser, or on the server in Node.js and Deno. \n\nThe new [@astrojs/compiler](https://github.com/withastro/astro-compiler-next) unlocks:\n\n- **Flexibility:** Run the compiler anywhere with WASM.\n- **Speed:** Build sites faster with Go's compiled-language performance.\n- **Stability:** Writing our own compiler allowed us to fix some long-standing bugs.\n\nYou can play with the new compiler today right in your browser at https://astro.build/play. This REPL is just one example of what is now possible when you have a fast, runs-anywhere compiler. \n\n<p>Shout out to <Mention name=\"nate\" /> who did an incredible job with this project.</p>\n\n\n## Components in Markdown\n\nOur most requested feature ***by far*** has been the ability to use components directly in Markdown. After months of work, we're excited to announce that this feature is finally coming to Astro.\n\nStarting in v0.21.0, you can import components inside of your Markdown frontmatter via an optional `setup` script. Once imported, your components can be used anywhere on the page:\n\n```markdown\n---\ntitle: 'Astro 0.21 Early Preview'\nsetup: |\n import Logo from '../components/Logo.astro';\n import ReactCounter from '../components/Counter.jsx';\n---\n\n# Astro now supports components in Markdown!\n\n<Logo />\n\n- Back to markdown here. \n- Supports static Astro components.\n- Supports dynamic React/Vue/Svelte components!\n\n<ReactCounter start={0} client:load /> \n```\n\nThis new `setup` script was designed for maximum flexibility. We'll keep improving this API going forward with planned support for default components, default layouts, and markdown component overrides.\n\n\n## HMR, meet HTML\n\nStarting in v0.21.0, Astro will support full HMR for Astro components and pages. Change any `.astro` file in your codebase, and watch the dev server update the page without a full refresh and without losing any client state.\n\nAstro has always supported powerful HMR updates for client-side JavaScript components like React, Preact, Svelte, Vue, and Solid.js. But adding this for Astro was a fun challenge because Astro components are just static HTML. Our \"Zero JavaScript\" approach meant that there was no \"Astro runtime\" to hook into for updates. We had to get creative.\n\nNow, Astro's dev server sends HTML updates to the browser and then runs a small script to diff those updates against the current page. This creates a more granular, component-level HMR update that won't impact the rest of the page.\n\n\n## Try it today\n\nIf you've read this far, we'd love your help trying out the latest release before launch. You can try out our latest release today [in the browser](https://gitpod.io#snapshot/5e7cf2f1-8108-4fa5-99d3-ed8de70d8c23) or by running `npm install astro@next--compiler` in a new project directory. You can follow our progress and leave feedback in the `next` PR on GitHub: https://github.com/withastro/astro/pull/1406\n\nLeave feedback, report bugs, and get involved with Astro's development in our [Discord server](https://astro.build/chat). You can also [follow along](https://twitter.com/astrodotbuild) on Twitter.\n\n<Note type=\"tip\">\n\nKeep your eyes to the sky Astronaut! 🧑🚀🚀\n\nThere will be more news on v0.21 soon.\n\n</Note>\n",
"html": "<p>Astro v0.21.0 will be our biggest release yet. At a high-level, it includes:</p>\n<ul>\n<li><a href=\"#hello-vite\">A new build engine, powered by Vite</a></li>\n<li><a href=\"#hello-wasm\">A new WASM compiler, written in Go</a></li>\n<li><a href=\"#components-in-markdown\">Brand new features, like Components-in-Markdown</a></li>\n<li><a href=\"#hmr-meet-html\">A new system for HTML live-updating via HMR</a></li>\n</ul>\n<p>You can try out our latest release today <a href=\"https://gitpod.io#snapshot/5e7cf2f1-8108-4fa5-99d3-ed8de70d8c23\">in the browser</a> or by running <code is:raw>npm install astro@next--compiler</code> in a new project directory on your machine.</p>\n<p>Astro is quickly becoming the production-ready framework for building faster, content-focused websites. To celebrate this milestone, here are some highlights and details on what you can expect in Astro v0.21.0 and beyond.</p>\n<h2 id=\"hello-vite\"><a href=\"#hello-vite\">Hello, Vite!</a></h2>\n<p>Astro 0.21 is getting an internal build engine upgrade, replacing Snowpack with <a href=\"https://vitejs.dev\">Vite</a> going forward.</p>\n<p>We ran some early experiments with Vite and came away extremely impressed. Vite is well-maintained, well-documented, a bit faster, has great error messages, and has been building clear community buy-in across multiple frameworks. SSR handling can be a bit flakey, but the Vite team is aware of this and actively working on it.</p>\n<p>So now, when Evan You tweets about <a href=\"https://twitter.com/youyuxi/status/1440718351802646550\">some great performance optimization</a> that they’re making in Vite you can be certain that the same speed is coming to Astro as well.</p>\n<p>The reverse is also true: we can now contribute fixes and improvements back to the larger Vite community. Now, when we fix an SSR bug in Astro (like <a href=\"https://github.com/vitejs/vite/pull/5197\">adding support for ESM-only npm packages</a>) we’re also fixing it for every other Vite user, including <a href=\"https://kit.svelte.dev/docs#routing-endpoints\">SvelteKit</a>.</p>\n<p>There’s one other huge benefit to choosing Vite: Rollup plugins. Starting in v0.21.0, you’ll be able to connect the entire ecosystem of Rollup plugins to Astro. Enable new features like <a href=\"https://github.com/JonasKruckenberg/imagetools/tree/main/packages/vite\">image optimizations</a> and <a href=\"https://github.com/antfu/unplugin-icons\">icon loading</a> with just a few simple plugins. Magic!</p>\n<p>This switch from Snowpack to Vite might come as a surprise to some: Both Drew and myself are maintainers on both projects. This was <a href=\"https://dev.to/fredkschott/5-more-things-i-learned-building-snowpack-to-20-000-stars-5dc9\">a hard decision</a> for us to make. But ultimately, after working with both tools I can confidently say that Vite will be a great choice for Astro’s future.</p>\n<h2 id=\"hello-wasm\"><a href=\"#hello-wasm\">Hello, WASM!</a></h2>\n<p>Astro 0.21 features another huge low-level improvement: the brand new <a href=\"https://github.com/withastro/astro-compiler-next\">@astrojs/compiler</a>. Astro’s new compiler is written in Go and distributed as WASM. You can run it right in your browser, or on the server in Node.js and Deno.</p>\n<p>The new <a href=\"https://github.com/withastro/astro-compiler-next\">@astrojs/compiler</a> unlocks:</p>\n<ul>\n<li><strong>Flexibility:</strong> Run the compiler anywhere with WASM.</li>\n<li><strong>Speed:</strong> Build sites faster with Go’s compiled-language performance.</li>\n<li><strong>Stability:</strong> Writing our own compiler allowed us to fix some long-standing bugs.</li>\n</ul>\n<p>You can play with the new compiler today right in your browser at https://astro.build/play. This REPL is just one example of what is now possible when you have a fast, runs-anywhere compiler.</p>\n<p>Shout out to <Mention name=\"nate\" /> who did an incredible job with this project.</p>\n<h2 id=\"components-in-markdown\"><a href=\"#components-in-markdown\">Components in Markdown</a></h2>\n<p>Our most requested feature <em><strong>by far</strong></em> has been the ability to use components directly in Markdown. After months of work, we’re excited to announce that this feature is finally coming to Astro.</p>\n<p>Starting in v0.21.0, you can import components inside of your Markdown frontmatter via an optional <code is:raw>setup</code> script. Once imported, your components can be used anywhere on the page:</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #C9D1D9\">---</span></span>\n<span class=\"line\"><span style=\"color: #7EE787\">title</span><span style=\"color: #C9D1D9\">: </span><span style=\"color: #A5D6FF\">'Astro 0.21 Early Preview'</span></span>\n<span class=\"line\"><span style=\"color: #7EE787\">setup</span><span style=\"color: #C9D1D9\">: </span><span style=\"color: #FF7B72\">|</span></span>\n<span class=\"line\"><span style=\"color: #A5D6FF\"> import Logo from '../components/Logo.astro';</span></span>\n<span class=\"line\"><span style=\"color: #A5D6FF\"> import ReactCounter from '../components/Counter.jsx';</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\">---</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color: #79C0FF; font-weight: bold\"># Astro now supports components in Markdown!</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><Logo /></span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color: #FFA657\">-</span><span style=\"color: #C9D1D9\"> Back to markdown here. </span></span>\n<span class=\"line\"><span style=\"color: #FFA657\">-</span><span style=\"color: #C9D1D9\"> Supports static Astro components.</span></span>\n<span class=\"line\"><span style=\"color: #FFA657\">-</span><span style=\"color: #C9D1D9\"> Supports dynamic React/Vue/Svelte components!</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><ReactCounter start={0} client:load /> </span></span></code></pre>\n<p>This new <code is:raw>setup</code> script was designed for maximum flexibility. We’ll keep improving this API going forward with planned support for default components, default layouts, and markdown component overrides.</p>\n<h2 id=\"hmr-meet-html\"><a href=\"#hmr-meet-html\">HMR, meet HTML</a></h2>\n<p>Starting in v0.21.0, Astro will support full HMR for Astro components and pages. Change any <code is:raw>.astro</code> file in your codebase, and watch the dev server update the page without a full refresh and without losing any client state.</p>\n<p>Astro has always supported powerful HMR updates for client-side JavaScript components like React, Preact, Svelte, Vue, and Solid.js. But adding this for Astro was a fun challenge because Astro components are just static HTML. Our “Zero JavaScript” approach meant that there was no “Astro runtime” to hook into for updates. We had to get creative.</p>\n<p>Now, Astro’s dev server sends HTML updates to the browser and then runs a small script to diff those updates against the current page. This creates a more granular, component-level HMR update that won’t impact the rest of the page.</p>\n<h2 id=\"try-it-today\"><a href=\"#try-it-today\">Try it today</a></h2>\n<p>If you’ve read this far, we’d love your help trying out the latest release before launch. You can try out our latest release today <a href=\"https://gitpod.io#snapshot/5e7cf2f1-8108-4fa5-99d3-ed8de70d8c23\">in the browser</a> or by running <code is:raw>npm install astro@next--compiler</code> in a new project directory. You can follow our progress and leave feedback in the <code is:raw>next</code> PR on GitHub: https://github.com/withastro/astro/pull/1406</p>\n<p>Leave feedback, report bugs, and get involved with Astro’s development in our <a href=\"https://astro.build/chat\">Discord server</a>. You can also <a href=\"https://twitter.com/astrodotbuild\">follow along</a> on Twitter.</p>\n<Note type=\"tip\">\n<p>Keep your eyes to the sky Astronaut! 🧑🚀🚀</p>\n<p>There will be more news on v0.21 soon.</p>\n</Note>"
},
{
"headers": [],
"source": "\nWe are thrilled to announce that [Netlify](https://www.netlify.com/?utm_campaign=devex-jl&utm_source=astro&utm_medium=blog) has become Astro's first corporate sponsor and official hosting partner, donating [$2,500 each month](https://opencollective.com/astrodotbuild) towards the ongoing open source maintenance and development of Astro.\n\nNetlify is the company responsible for kicking off the modern [Jamstack](https://jamstack.org/) movement. Today, their hosting + serverless platform is loved by developers around the world. [Astro](http://astro.build/) can build you a blazing-fast website, but you'll always need a great host like Netlify to deliver that snappy experience to your users.\n\nHere's what Jason told us about Astro:\n\n<Blockquote>\n\n <Sprite slot=\"logo\" name=\"logos/netlify\" height=\"48\" />\n\n <Fragment slot=\"quote\">\n\nAstro is tackling an extremely hard problem: **how do we keep the advantages of powerful frameworks but stop making end users pay the cost of developer experience?** Shipping only HTML and CSS for the vast majority of web content that doesn't need to be dynamic and only including JavaScript when it's actually necessary is a huge win for developers and users alike.\n </Fragment>\n\n <Fragment slot=\"cite\">\n \n [Jason Lengstorf](https://twitter.com/jlengstorf), VP of Developer Experience\n \n </Fragment>\n\n</Blockquote>\n\nAstro is honored and excited to have Netlify as our first official corporate sponsor. We are grateful for the support of Jason Lengstorf, Cassidy Williams, and the entire Netlify team for their help and evangelism. It's because of support from companies like Netlify that we are able to receive ongoing maintenance and keep developing Astro in an open, financially-sustainable way.\n\nOur first integration with Netlify will be to add the [\"Deploy with Netlify\"](https://www.netlify.com/blog/2016/11/29/introducing-the-deploy-to-netlify-button/) button to our official Astro starter templates. This will make it even easier to create new, hosted Astro websites in just a few clicks. Check out all of our batteries-included starter templates in the brand new [Astro Theme Showcase.](https://docs.astro.build/themes)\n\nThanks, Netlify!\n\n<Note title=\"Oh hey, PS...\">\n\nIf your company relies on free, open source software (hint: it almost definitely does!) please [donate to support Astro](https://opencollective.com/astrodotbuild) and other projects like it. \n\nYou can browse projects accepting funding on [Open Collective](https://opencollective.com/discover), [GitHub Sponsors](https://github.com/sponsors), or by running the `npm fund` command inside of any existing npm project.\n\n</Note>\n",
"html": "<p>We are thrilled to announce that <a href=\"https://www.netlify.com/?utm_campaign=devex-jl&utm_source=astro&utm_medium=blog\">Netlify</a> has become Astro’s first corporate sponsor and official hosting partner, donating <a href=\"https://opencollective.com/astrodotbuild\">$2,500 each month</a> towards the ongoing open source maintenance and development of Astro.</p>\n<p>Netlify is the company responsible for kicking off the modern <a href=\"https://jamstack.org/\">Jamstack</a> movement. Today, their hosting + serverless platform is loved by developers around the world. <a href=\"http://astro.build/\">Astro</a> can build you a blazing-fast website, but you’ll always need a great host like Netlify to deliver that snappy experience to your users.</p>\n<p>Here’s what Jason told us about Astro:</p>\n<Blockquote>\n <Sprite slot=\"logo\" name=\"logos/netlify\" height=\"48\" />\n <Fragment slot=\"quote\">\nAstro is tackling an extremely hard problem: \n<strong>how do we keep the advantages of powerful frameworks but stop making end users pay the cost of developer experience?</strong>\n Shipping only HTML and CSS for the vast majority of web content that doesn’t need to be dynamic and only including JavaScript when it’s actually necessary is a huge win for developers and users alike.\n\n</Fragment>\n <Fragment slot=\"cite\">\n<p><a href=\"https://twitter.com/jlengstorf\">Jason Lengstorf</a>, VP of Developer Experience</p>\n </Fragment>\n</Blockquote>\n<p>Astro is honored and excited to have Netlify as our first official corporate sponsor. We are grateful for the support of Jason Lengstorf, Cassidy Williams, and the entire Netlify team for their help and evangelism. It’s because of support from companies like Netlify that we are able to receive ongoing maintenance and keep developing Astro in an open, financially-sustainable way.</p>\n<p>Our first integration with Netlify will be to add the <a href=\"https://www.netlify.com/blog/2016/11/29/introducing-the-deploy-to-netlify-button/\">“Deploy with Netlify”</a> button to our official Astro starter templates. This will make it even easier to create new, hosted Astro websites in just a few clicks. Check out all of our batteries-included starter templates in the brand new <a href=\"https://docs.astro.build/themes\">Astro Theme Showcase.</a></p>\n<p>Thanks, Netlify!</p>\n<Note title=\"Oh hey, PS...\">\n<p>If your company relies on free, open source software (hint: it almost definitely does!) please <a href=\"https://opencollective.com/astrodotbuild\">donate to support Astro</a> and other projects like it.</p>\n<p>You can browse projects accepting funding on <a href=\"https://opencollective.com/discover\">Open Collective</a>, <a href=\"https://github.com/sponsors\">GitHub Sponsors</a>, or by running the <code is:raw>npm fund</code> command inside of any existing npm project.</p>\n</Note>"
},
{
"headers": [
{ "depth": 2, "slug": "what-is-astro", "text": "What is Astro?" },
{
"depth": 2,
"slug": "what-does-this-funding-mean-for-astro-users",
"text": "What does this funding mean for Astro users?"
},
{ "depth": 2, "slug": "join-us", "text": "Join us!" }
],
"source": "\n\nI am thrilled to announce the creation of **The Astro Technology Company** along with **$7M** in seed funding to help us build a better platform for web development. The round was led by Lightspeed Venture Partners with participation from Haystack, Gradient, and Uncorrelated Ventures. \n\nWith this funding, the core team has moved from [Skypack](https://www.skypack.dev/) (formerly Pika) and joined The Astro Technology Company to continue working on Astro, growing our open source community, and driving towards our upcoming v1.0 release.\n\n## **What is Astro?**\n\nAstro is a modern web build tool that helps you build fast websites, faster. Astro leverages a technique called [partial hydration](https://docs.astro.build/en/core-concepts/component-hydration/) to automatically eliminate unused JavaScript from your site, often reducing your overall payload by 90% or more. This makes Astro the perfect choice for content-focused websites like ecommerce, marketing, and blogs.\n\nAstro offers a modern, HTML-based component syntax that works across frameworks. React, Preact, Svelte, and Vue are all supported. Your existing components will continue to work in Astro. You can even mix frameworks when you need to, preventing that expensive rewrite when The Next Big Thing™️ comes along.\n\nThe Astro open source project launched in June 2021 and captured immediate buzz, taking home the “Ecosystem Innovation Award” at the [2021 Jamstack Awards.](https://jamstackconf.com/jammies/) Today, Astro supports 10,000+ users including developers at Google, Netlify, Firebase, DivRIOTS, and Monogram. The project is still young, but we have accomplished so much in such little time!\n\n## What does this funding mean for Astro users?\n\nThis funding will allow our team to continue to focus full-time on Astro, improving the developer experience and investing more resources towards our amazing ecosystem of 10,000+ users and 3,000+ community members. \n\n**Astro is and will always be MIT-licensed.** Our team has decades of combined open-source experience leading and maintaining projects like Skypack, Snowpack, Polymer, Microsite, Haunted, and PostCSS. I can’t over-state just how important open source software is to this team and we will continue to support a healthy open source ecosystem.\n\nAstro will continue to operate as an open source community project. We will continue to grow our sponsorship on Open Collective and invest in our amazing partners and sponsors. 100% of collected funds will continue to go directly back to our open source community members.\n\nOur goal is to grow Astro into the next great platform for web developers. We see Astro as so much more than just a build tool, and this funding will give us the resources to realize that vision. I can’t wait to share more about what we have planned for Astro over the next year!\n\n## Join us!\n\nLove web development? Love developer tooling? Love the thought of working with talented, thoughtful people full-time? [**We're hiring!**](/company)\n\nYou can also [join us on Discord](https://astro.build/chat) to learn more about Astro and the community behind it.\n",
"html": "<p>I am thrilled to announce the creation of <strong>The Astro Technology Company</strong> along with <strong>$7M</strong> in seed funding to help us build a better platform for web development. The round was led by Lightspeed Venture Partners with participation from Haystack, Gradient, and Uncorrelated Ventures.</p>\n<p>With this funding, the core team has moved from <a href=\"https://www.skypack.dev/\">Skypack</a> (formerly Pika) and joined The Astro Technology Company to continue working on Astro, growing our open source community, and driving towards our upcoming v1.0 release.</p>\n<h2 id=\"what-is-astro\"><a href=\"#what-is-astro\"><strong>What is Astro?</strong></a></h2>\n<p>Astro is a modern web build tool that helps you build fast websites, faster. Astro leverages a technique called <a href=\"https://docs.astro.build/en/core-concepts/component-hydration/\">partial hydration</a> to automatically eliminate unused JavaScript from your site, often reducing your overall payload by 90% or more. This makes Astro the perfect choice for content-focused websites like ecommerce, marketing, and blogs.</p>\n<p>Astro offers a modern, HTML-based component syntax that works across frameworks. React, Preact, Svelte, and Vue are all supported. Your existing components will continue to work in Astro. You can even mix frameworks when you need to, preventing that expensive rewrite when The Next Big Thing™️ comes along.</p>\n<p>The Astro open source project launched in June 2021 and captured immediate buzz, taking home the “Ecosystem Innovation Award” at the <a href=\"https://jamstackconf.com/jammies/\">2021 Jamstack Awards.</a> Today, Astro supports 10,000+ users including developers at Google, Netlify, Firebase, DivRIOTS, and Monogram. The project is still young, but we have accomplished so much in such little time!</p>\n<h2 id=\"what-does-this-funding-mean-for-astro-users\"><a href=\"#what-does-this-funding-mean-for-astro-users\">What does this funding mean for Astro users?</a></h2>\n<p>This funding will allow our team to continue to focus full-time on Astro, improving the developer experience and investing more resources towards our amazing ecosystem of 10,000+ users and 3,000+ community members.</p>\n<p><strong>Astro is and will always be MIT-licensed.</strong> Our team has decades of combined open-source experience leading and maintaining projects like Skypack, Snowpack, Polymer, Microsite, Haunted, and PostCSS. I can’t over-state just how important open source software is to this team and we will continue to support a healthy open source ecosystem.</p>\n<p>Astro will continue to operate as an open source community project. We will continue to grow our sponsorship on Open Collective and invest in our amazing partners and sponsors. 100% of collected funds will continue to go directly back to our open source community members.</p>\n<p>Our goal is to grow Astro into the next great platform for web developers. We see Astro as so much more than just a build tool, and this funding will give us the resources to realize that vision. I can’t wait to share more about what we have planned for Astro over the next year!</p>\n<h2 id=\"join-us\"><a href=\"#join-us\">Join us!</a></h2>\n<p>Love web development? Love developer tooling? Love the thought of working with talented, thoughtful people full-time? <a href=\"/company\"><strong>We’re hiring!</strong></a></p>\n<p>You can also <a href=\"https://astro.build/chat\">join us on Discord</a> to learn more about Astro and the community behind it.</p>"
},
{
"headers": [
{ "depth": 2, "slug": "getting-started", "text": "Getting Started" },
{ "depth": 2, "slug": "how-astro-works", "text": "How Astro Works" },
{
"depth": 2,
"slug": "embracing-the-pit-of-success",
"text": "Embracing the Pit of Success"
},
{
"depth": 2,
"slug": "long-term-sustainability",
"text": "Long-Term Sustainability"
}
],
"source": "There's a simple secret to building a faster website — *just ship less*. \n\nUnfortunately, modern web development has been trending in the opposite direction—towards *more.* More JavaScript, more features, more moving parts, and ultimately more complexity needed to keep it all running smoothly.\n\nToday I'm excited to publicly share Astro: a new kind of static site builder that delivers lightning-fast performance with a modern developer experience. To design Astro, we borrowed the best parts of our favorite tools and then added a few innovations of our own, including:\n\n- **Bring Your Own Framework (BYOF):** Build your site using React, Svelte, Vue, Preact, web components, or just plain ol' HTML + JavaScript.\n- **100% Static HTML, No JS:** Astro renders your entire page to static HTML, removing all JavaScript from your final build by default.\n- **On-Demand Components:** Need some JS? Astro can automatically hydrate interactive components when they become visible on the page. If the user never sees it, they never load it.\n- **Fully-Featured:** Astro supports TypeScript, Scoped CSS, CSS Modules, Sass, Tailwind, Markdown, MDX, and any of your favorite npm packages.\n- **SEO Enabled:** Automatic sitemaps, RSS feeds, pagination and collections take the pain out of SEO and syndication.\n\nThis post marks the first public beta release of Astro. **Missing features and bugs are still to be expected at this early stage.** There are still some months to go before an official 1.0 release, but there are already several fast sites built with Astro in production today. We would love your early feedback as we move towards a v1.0 release later this year.\n\n<Note>\n\n To learn more about Astro and start building your first site, check out [our Getting Started guide.](https://docs.astro.build)\n\n</Note>\n\n## Getting Started\n\nStarting a new project in Astro is easy:\n\n```shell\n# create your project\nmkdir new-project-directory\ncd new-project-directory\nnpm init astro\n\n# install your dependencies\nnpm install\n\n# start the dev server and open your browser\nnpm run dev\n```\n\n## How Astro Works\n\nAstro works a lot like a static site generator. If you have ever used Eleventy, Hugo, or Jekyll (or even a server-side web framework like Rails, Laravel, or Django) then you should feel right at home with Astro. \n\nIn Astro, you compose your website using UI components from your favorite JavaScript web framework (React, Svelte, Vue, etc). Astro renders your entire site to static HTML during the build. The result is a fully static website with all JavaScript removed from the final page. No monolithic JavaScript application required, just static HTML that loads as fast as possible in the browser regardless of how many UI components you used to generate it.\n\nOf course, sometimes client-side JavaScript is inevitable. Image carousels, shopping carts, and auto-complete search bars are just a few examples of things that require some JavaScript to run in the browser. This is where Astro really shines: When a component needs some JavaScript, Astro only loads that one component (and any dependencies). The rest of your site continues to exist as static, lightweight HTML.\n\nIn other full-stack web frameworks this level of per-component optimization would be impossible without loading the entire page in JavaScript, delaying interactivity. In Astro, this kind of [partial hydration](https://addyosmani.com/blog/rehydration/) is built into the tool itself. \n\nYou can even [automatically defer components](https://codepen.io/jonneal/full/ZELvMvw) to only load once they become visible on the page with the `:visible` modifier.\n\nThis new approach to web architecture is called [islands architecture](https://jasonformat.com/islands-architecture/). We didn't coin the term, but Astro may have perfected the technique. We are confident that an HTML-first, JavaScript-only-as-needed approach is the best solution for the majority of content-based websites.\n\n## Embracing the Pit of Success\n\n<Blockquote>\n <Fragment slot=\"quote\">\n A well-designed system makes it easy to do the right things and annoying (but not impossible) to do the wrong things\n </Fragment>\n\n <Fragment slot=\"cite\">Jeff Atwood, <a href=\"https://blog.codinghorror.com/falling-into-the-pit-of-success/\">Falling Into The Pit of Success</a></Fragment>\n</Blockquote>\n\n\nPoor performance is often framed as a failure of the developer, but we respectfully disagree. In many cases, poor performance is a failure of tooling. It should be difficult to build a slow website. \n\nAstro's main design principle is to lead developers into what [Rico Mariani](https://twitter.com/ricomariani) dubbed \"the pit of success\". It is our goal to build every site \"fast by default\" while also delivering a familiar, modern developer experience. \n\nBy building your site to static HTML by default, Astro makes it difficult (but never impossible 😉) to build a slow site.\n\n## Long-Term Sustainability\n\nAstro is built by the team of open source developers behind [Snowpack](https://snowpack.dev) and [Skypack](https://skypack.dev), with additional contributions from the community.\n\n**Astro is and always will be free.** It is an open source project released under the [MIT license](https://github.com/withastro/astro/blob/main/LICENSE). \n\nWe care deeply about building a more sustainable future for open source software. At the same time, we need to support Astro's development long-term. This requires money (donations alone aren't enough.) \n\nWe're inspired by the early success of projects like [Tailwind](https://tailwindcss.com/), [Rome](https://rome.tools/), [Remix](https://remix.run/), [Ionic](https://ionicframework.com/), and others who are experimenting with long-term financial sustainability on top of Open Source. Over the next year we'll be exploring how we can create a sustainable business to support a 100% free, open source Astro for years to come. \n\nIf your company is as excited about Astro as we are, [we'd love to hear from you.](https://astro.build/chat)\n\n<Note type=\"tip\">\n\n Finally, I'd like to give a **HUGE** thanks to the 300+ developers who joined our earliest private beta. Your feedback has been essential in shaping Astro into the tool it is today. If you're interested in getting involved (or just following along with development) please [join us on Discord.](https://astro.build/chat)\n\n</Note>\n",
"html": "<p>There’s a simple secret to building a faster website — <em>just ship less</em>.</p>\n<p>Unfortunately, modern web development has been trending in the opposite direction—towards <em>more.</em> More JavaScript, more features, more moving parts, and ultimately more complexity needed to keep it all running smoothly.</p>\n<p>Today I’m excited to publicly share Astro: a new kind of static site builder that delivers lightning-fast performance with a modern developer experience. To design Astro, we borrowed the best parts of our favorite tools and then added a few innovations of our own, including:</p>\n<ul>\n<li><strong>Bring Your Own Framework (BYOF):</strong> Build your site using React, Svelte, Vue, Preact, web components, or just plain ol’ HTML + JavaScript.</li>\n<li><strong>100% Static HTML, No JS:</strong> Astro renders your entire page to static HTML, removing all JavaScript from your final build by default.</li>\n<li><strong>On-Demand Components:</strong> Need some JS? Astro can automatically hydrate interactive components when they become visible on the page. If the user never sees it, they never load it.</li>\n<li><strong>Fully-Featured:</strong> Astro supports TypeScript, Scoped CSS, CSS Modules, Sass, Tailwind, Markdown, MDX, and any of your favorite npm packages.</li>\n<li><strong>SEO Enabled:</strong> Automatic sitemaps, RSS feeds, pagination and collections take the pain out of SEO and syndication.</li>\n</ul>\n<p>This post marks the first public beta release of Astro. <strong>Missing features and bugs are still to be expected at this early stage.</strong> There are still some months to go before an official 1.0 release, but there are already several fast sites built with Astro in production today. We would love your early feedback as we move towards a v1.0 release later this year.</p>\n<Note>\n<p>To learn more about Astro and start building your first site, check out <a href=\"https://docs.astro.build\">our Getting Started guide.</a></p>\n</Note>\n<h2 id=\"getting-started\"><a href=\"#getting-started\">Getting Started</a></h2>\n<p>Starting a new project in Astro is easy:</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #8B949E\"># create your project</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\">mkdir new-project-directory</span></span>\n<span class=\"line\"><span style=\"color: #79C0FF\">cd</span><span style=\"color: #C9D1D9\"> new-project-directory</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\">npm init astro</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color: #8B949E\"># install your dependencies</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\">npm install</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color: #8B949E\"># start the dev server and open your browser</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\">npm run dev</span></span></code></pre>\n<h2 id=\"how-astro-works\"><a href=\"#how-astro-works\">How Astro Works</a></h2>\n<p>Astro works a lot like a static site generator. If you have ever used Eleventy, Hugo, or Jekyll (or even a server-side web framework like Rails, Laravel, or Django) then you should feel right at home with Astro.</p>\n<p>In Astro, you compose your website using UI components from your favorite JavaScript web framework (React, Svelte, Vue, etc). Astro renders your entire site to static HTML during the build. The result is a fully static website with all JavaScript removed from the final page. No monolithic JavaScript application required, just static HTML that loads as fast as possible in the browser regardless of how many UI components you used to generate it.</p>\n<p>Of course, sometimes client-side JavaScript is inevitable. Image carousels, shopping carts, and auto-complete search bars are just a few examples of things that require some JavaScript to run in the browser. This is where Astro really shines: When a component needs some JavaScript, Astro only loads that one component (and any dependencies). The rest of your site continues to exist as static, lightweight HTML.</p>\n<p>In other full-stack web frameworks this level of per-component optimization would be impossible without loading the entire page in JavaScript, delaying interactivity. In Astro, this kind of <a href=\"https://addyosmani.com/blog/rehydration/\">partial hydration</a> is built into the tool itself.</p>\n<p>You can even <a href=\"https://codepen.io/jonneal/full/ZELvMvw\">automatically defer components</a> to only load once they become visible on the page with the <code is:raw>:visible</code> modifier.</p>\n<p>This new approach to web architecture is called <a href=\"https://jasonformat.com/islands-architecture/\">islands architecture</a>. We didn’t coin the term, but Astro may have perfected the technique. We are confident that an HTML-first, JavaScript-only-as-needed approach is the best solution for the majority of content-based websites.</p>\n<h2 id=\"embracing-the-pit-of-success\"><a href=\"#embracing-the-pit-of-success\">Embracing the Pit of Success</a></h2>\n<Blockquote>\n <Fragment slot=\"quote\">\n A well-designed system makes it easy to do the right things and annoying (but not impossible) to do the wrong things\n </Fragment>\n<Fragment slot=\"cite\">\nJeff Atwood, \n<a href=\"https://blog.codinghorror.com/falling-into-the-pit-of-success/\">\nFalling Into The Pit of Success\n</a>\n</Fragment>\n</Blockquote>\n<p>Poor performance is often framed as a failure of the developer, but we respectfully disagree. In many cases, poor performance is a failure of tooling. It should be difficult to build a slow website.</p>\n<p>Astro’s main design principle is to lead developers into what <a href=\"https://twitter.com/ricomariani\">Rico Mariani</a> dubbed “the pit of success”. It is our goal to build every site “fast by default” while also delivering a familiar, modern developer experience.</p>\n<p>By building your site to static HTML by default, Astro makes it difficult (but never impossible 😉) to build a slow site.</p>\n<h2 id=\"long-term-sustainability\"><a href=\"#long-term-sustainability\">Long-Term Sustainability</a></h2>\n<p>Astro is built by the team of open source developers behind <a href=\"https://snowpack.dev\">Snowpack</a> and <a href=\"https://skypack.dev\">Skypack</a>, with additional contributions from the community.</p>\n<p><strong>Astro is and always will be free.</strong> It is an open source project released under the <a href=\"https://github.com/withastro/astro/blob/main/LICENSE\">MIT license</a>.</p>\n<p>We care deeply about building a more sustainable future for open source software. At the same time, we need to support Astro’s development long-term. This requires money (donations alone aren’t enough.)</p>\n<p>We’re inspired by the early success of projects like <a href=\"https://tailwindcss.com/\">Tailwind</a>, <a href=\"https://rome.tools/\">Rome</a>, <a href=\"https://remix.run/\">Remix</a>, <a href=\"https://ionicframework.com/\">Ionic</a>, and others who are experimenting with long-term financial sustainability on top of Open Source. Over the next year we’ll be exploring how we can create a sustainable business to support a 100% free, open source Astro for years to come.</p>\n<p>If your company is as excited about Astro as we are, <a href=\"https://astro.build/chat\">we’d love to hear from you.</a></p>\n<Note type=\"tip\">\n<p>Finally, I’d like to give a <strong>HUGE</strong> thanks to the 300+ developers who joined our earliest private beta. Your feedback has been essential in shaping Astro into the tool it is today. If you’re interested in getting involved (or just following along with development) please <a href=\"https://astro.build/chat\">join us on Discord.</a></p>\n</Note>"
},
{
"headers": [
{ "depth": 2, "slug": "migrate-to-v021", "text": "Migrate to v0.21" },
{
"depth": 2,
"slug": "why-rewrite-why-now",
"text": "Why Rewrite? Why Now?"
}
],
"source": "\nAstro v0.21.0 is finally here! This is by far our biggest release ever, including a ground-up rewrite of some major Astro internals. After months of development and public testing, we are so excited to get this new version of Astro into your hands, featuring:\n\n- A new Astro compiler, **written in [Go](https://golang.org/)**\n- A new build engine, **powered by [Vite](http://vitejs.dev/)**\n- [Components in Markdown](https://docs.astro.build/migration/0.21.0#components-in-markdown) (like MDX, but without the JSX)\n- Improved npm package support (also powered by Vite!)\n- Improved errors, stack traces, HMR, and overall dev experience\n- A grab-bag of other new features for you to explore\n\n[Try Astro v0.21.0 today](https://astro.new) right in your browser. Or, run `npm install astro@latest` in any new or existing project directory to get started. [Read our v0.21 Early Preview](/blog/astro-021-preview) post for more details on what is included in this release.\n\n<p>\n Thank you to every contributor and early preview tester who made this release possible. Thank you to <Mention name=\"nate\" />, <Mention name=\"matthew\" />, and <Mention name=\"drew\" /> for your tireless work over the last few months getting v0.21 out the door.\n</p>\n\n**With these new long-term investments, Astro isn't going anywhere.** Next stop, v1.0!\n\n## Migrate to v0.21\n\nVery little has changed in the v0.21.0 API to make your migration as easy as possible. Check out the new [v0.21 migration guide](https://docs.astro.build/migration/0.21.0) for a full breakdown of meaningful changes.\n\nLeave feedback, report bugs, and get involved with Astro's development in our [Discord server](https://astro.build/chat). You can also [follow along](https://twitter.com/astrodotbuild) with our community on Twitter.\n\n## Why Rewrite? Why Now?\n\nMost people don't know this, but the first version of the Astro compiler was originally forked from [Svelte](https://svelte.dev/docs#Compile_time). Forking an existing compiler let us get up and running quickly, but cost us some unneccesary complexity that only grew over time.\n\nBig rewrites are rarely easy, and this one was no exception. The timing was right for us to make a big investment in Astro now and deprecate our original forked compiler in favor of something designed with Astro in mind. This new compiler (written in Go) and new Vite-powered build engine will form a stable foundation that will last this project for years to come.\n\n<Note type=\"tip\">\n\nA huge thank you to Rich Harris and the entire Svelte team—you built an incredible open source compiler and it served Astro so well in its early days!\n\n</Note>\n",
"html": "<p>Astro v0.21.0 is finally here! This is by far our biggest release ever, including a ground-up rewrite of some major Astro internals. After months of development and public testing, we are so excited to get this new version of Astro into your hands, featuring:</p>\n<ul>\n<li>A new Astro compiler, <strong>written in <a href=\"https://golang.org/\">Go</a></strong></li>\n<li>A new build engine, <strong>powered by <a href=\"http://vitejs.dev/\">Vite</a></strong></li>\n<li><a href=\"https://docs.astro.build/migration/0.21.0#components-in-markdown\">Components in Markdown</a> (like MDX, but without the JSX)</li>\n<li>Improved npm package support (also powered by Vite!)</li>\n<li>Improved errors, stack traces, HMR, and overall dev experience</li>\n<li>A grab-bag of other new features for you to explore</li>\n</ul>\n<p><a href=\"https://astro.new\">Try Astro v0.21.0 today</a> right in your browser. Or, run <code is:raw>npm install astro@latest</code> in any new or existing project directory to get started. <a href=\"/blog/astro-021-preview\">Read our v0.21 Early Preview</a> post for more details on what is included in this release.</p>\n<p>\n Thank you to every contributor and early preview tester who made this release possible. Thank you to <Mention name=\"nate\" />, <Mention name=\"matthew\" />, and <Mention name=\"drew\" /> for your tireless work over the last few months getting v0.21 out the door.\n</p>\n<p><strong>With these new long-term investments, Astro isn’t going anywhere.</strong> Next stop, v1.0!</p>\n<h2 id=\"migrate-to-v021\"><a href=\"#migrate-to-v021\">Migrate to v0.21</a></h2>\n<p>Very little has changed in the v0.21.0 API to make your migration as easy as possible. Check out the new <a href=\"https://docs.astro.build/migration/0.21.0\">v0.21 migration guide</a> for a full breakdown of meaningful changes.</p>\n<p>Leave feedback, report bugs, and get involved with Astro’s development in our <a href=\"https://astro.build/chat\">Discord server</a>. You can also <a href=\"https://twitter.com/astrodotbuild\">follow along</a> with our community on Twitter.</p>\n<h2 id=\"why-rewrite-why-now\"><a href=\"#why-rewrite-why-now\">Why Rewrite? Why Now?</a></h2>\n<p>Most people don’t know this, but the first version of the Astro compiler was originally forked from <a href=\"https://svelte.dev/docs#Compile_time\">Svelte</a>. Forking an existing compiler let us get up and running quickly, but cost us some unneccesary complexity that only grew over time.</p>\n<p>Big rewrites are rarely easy, and this one was no exception. The timing was right for us to make a big investment in Astro now and deprecate our original forked compiler in favor of something designed with Astro in mind. This new compiler (written in Go) and new Vite-powered build engine will form a stable foundation that will last this project for years to come.</p>\n<Note type=\"tip\">\n<p>A huge thank you to Rich Harris and the entire Svelte team—you built an incredible open source compiler and it served Astro so well in its early days!</p>\n</Note>"
},
{
"headers": [
{
"depth": 2,
"slug": "the-next-astro-release",
"text": "The next Astro release"
}
],
"source": "**Astro Demo Day** was today! We had **4** amazing talks, including one big announcement on the future direction of Astro. If you missed the livestream, fear not! You can see the full event [on YouTube](https://www.youtube.com/watch?v=-ExcBJrXOd8) or watch the talks in any order by visiting the links below. Subscribe to the [Astro YouTube channel](https://www.youtube.com/channel/UCeFjmvZEK-MoefuYXptnX6A) to make sure you don't miss our next demo day. Today's demos were:\n\n* [Developing the Astro VSCode extension](https://youtu.be/-ExcBJrXOd8?t=109) 🧑💻 from [Matthew Phillips](https://twitter.com/matthewcp)\n* [Integrating a CMS - Astro+Forestry+Netlify](https://youtu.be/-ExcBJrXOd8?t=763) 🌳 from [Tony Sullivan](https://twitter.com/navillus_dev)\n* [The Astro SEO component](https://youtu.be/-ExcBJrXOd8?t=1384) 🗃 from [Jonas Schumacher](https://twitter.com/jonasmerlin1)\n* [Astro's v2 Compiler and a Surprise](https://youtu.be/-ExcBJrXOd8?t=2070) 🪄 from [Drew Powers](https://twitter.com/drwpow) and [Nate Moore](https://twitter.com/n_moore)\n\nAs always, our Discord community brought the hype:\n\n<img alt=\"Messages from the Demo Day chat room on Discord\" src=\"/assets/blog/demo-day-2021-09/discord-chat.jpg\" class=\"chat-messages\" />\n\n## The next Astro release\n\nAstro's next release will be our biggest ever, featuring a new WASM-powered compiler plus a new Vite-powered runtime. You can expect a preview release on [npm](https://www.npmjs.com/package/astro) later today or tomorrow. Over the next few weeks, we will continue to polish the new code as we prepare for its official release!\n\nIf you haven't already, follow [@astrodotbuild](https://twitter.com/astrodotbuild) on Twitter for more news and announcements, and [join our Discord](https://astro.build/chat) to learn how you can try out the new previous release.\n",
"html": "<p><strong>Astro Demo Day</strong> was today! We had <strong>4</strong> amazing talks, including one big announcement on the future direction of Astro. If you missed the livestream, fear not! You can see the full event <a href=\"https://www.youtube.com/watch?v=-ExcBJrXOd8\">on YouTube</a> or watch the talks in any order by visiting the links below. Subscribe to the <a href=\"https://www.youtube.com/channel/UCeFjmvZEK-MoefuYXptnX6A\">Astro YouTube channel</a> to make sure you don’t miss our next demo day. Today’s demos were:</p>\n<ul>\n<li><a href=\"https://youtu.be/-ExcBJrXOd8?t=109\">Developing the Astro VSCode extension</a> 🧑💻 from <a href=\"https://twitter.com/matthewcp\">Matthew Phillips</a></li>\n<li><a href=\"https://youtu.be/-ExcBJrXOd8?t=763\">Integrating a CMS - Astro+Forestry+Netlify</a> 🌳 from <a href=\"https://twitter.com/navillus_dev\">Tony Sullivan</a></li>\n<li><a href=\"https://youtu.be/-ExcBJrXOd8?t=1384\">The Astro SEO component</a> 🗃 from <a href=\"https://twitter.com/jonasmerlin1\">Jonas Schumacher</a></li>\n<li><a href=\"https://youtu.be/-ExcBJrXOd8?t=2070\">Astro’s v2 Compiler and a Surprise</a> 🪄 from <a href=\"https://twitter.com/drwpow\">Drew Powers</a> and <a href=\"https://twitter.com/n_moore\">Nate Moore</a></li>\n</ul>\n<p>As always, our Discord community brought the hype:</p>\n<img alt=\"Messages from the Demo Day chat room on Discord\" src=\"/assets/blog/demo-day-2021-09/discord-chat.jpg\" class=\"chat-messages\" />\n<h2 id=\"the-next-astro-release\"><a href=\"#the-next-astro-release\">The next Astro release</a></h2>\n<p>Astro’s next release will be our biggest ever, featuring a new WASM-powered compiler plus a new Vite-powered runtime. You can expect a preview release on <a href=\"https://www.npmjs.com/package/astro\">npm</a> later today or tomorrow. Over the next few weeks, we will continue to polish the new code as we prepare for its official release!</p>\n<p>If you haven’t already, follow <a href=\"https://twitter.com/astrodotbuild\">@astrodotbuild</a> on Twitter for more news and announcements, and <a href=\"https://astro.build/chat\">join our Discord</a> to learn how you can try out the new previous release.</p>"
},
{
"headers": [
{
"depth": 3,
"slug": "general-information",
"text": "General Information"
},
{
"depth": 3,
"slug": "information-gathering-and-usage",
"text": "Information Gathering and Usage"
},
{ "depth": 3, "slug": "cookies", "text": "Cookies" },
{ "depth": 3, "slug": "data-storage", "text": "Data Storage" },
{
"depth": 3,
"slug": "data-retention-and-deletion",
"text": "Data Retention and Deletion"
},
{
"depth": 3,
"slug": "rights-of-data-subjects",
"text": "Rights of Data Subjects"
},
{
"depth": 3,
"slug": "we-may-share-your-information-with",
"text": "We may share your information with"
},
{
"depth": 4,
"slug": "google-analytics-google-inc",
"text": "Google Analytics (Google, Inc.)"
},
{
"depth": 3,
"slug": "eueea---us-data-transfers",
"text": "EU/EEA - US Data Transfers"
},
{ "depth": 3, "slug": "security", "text": "Security" },
{ "depth": 3, "slug": "links", "text": "Links" },
{ "depth": 3, "slug": "changes", "text": "Changes" },
{ "depth": 3, "slug": "questions", "text": "Questions" }
],
"source": "\nThe Astro Privacy Policy describes the privacy practices of Astro website and services. The laws of California and the laws of the United States apply. If you are a resident of EU/EEA, the European Commission-approved Standard Contractual Clauses (also referred to as Model Contracts) apply to Trans-Atlantic data transfers.\n\n### General Information\n\nWe collect very limited personally identifiable information described below (the “data”) from [GitHub](https://help.github.com/articles/github-privacy-policy/) and of those who communicate with us directly via e-mail, aggregate information on what pages consumers access or visit, and information volunteered by the consumer (such as survey information and/or site registrations). The information we collect is used to provide our services, and to improve the quality of our services, and is not shared with or sold to other organizations for commercial purposes, except to provide products or services you've requested when we have your permission, or under the following circumstances:\n\n- It is necessary to share information in order to investigate, prevent, or take action regarding illegal activities, suspected fraud, situations involving potential threats to the physical safety of any person, violations of [Terms of Service](/terms), or as otherwise required by law.\n- We transfer information about you if Astro is acquired by or merged with another company. In this event, Astro will notify you before information about you is transferred and becomes subject to a different privacy policy.\n\n\n### Information Gathering and Usage\n\nAstro uses collected information for the following general purposes: products and services provision, billing, identification and authentication through GitHub, Bitbucket, services improvement, contact, and research. Astro uses personally identifiable information on billing address and/or payment information only for the sole purpose of payment processing for Astro services.\n\nPayment processing services enable us to process payments by credit card, bank transfer or other means. To ensure greater security, we share only the information necessary to execute the transaction with the financial intermediaries handling the transaction. Some of these services may also enable the sending of timed messages to our customer, such as emails containing invoices or notifications concerning the payment.\n\n### Cookies\n\nA cookie is a small amount of data, which often includes an anonymous unique identifier, which is sent to your browser from a web site's computers and stored on your computer's hard drive.\n\nYou can control how websites use cookies by configuring the privacy settings within your browser. Note that if you disable cookies entirely, Astro websites and applications may not function properly.\n\n### Data Storage\n\nAstro uses third-party vendors and hosting partners to provide the necessary hardware, software, networking, storage, and related technology required to run Astro. Astro’s third-party vendors and hosting partners adhere to the European Commission-approved Standard Contractual Clauses (also referred to as Model Contracts).\n\n### Data Retention and Deletion\n\nData is kept for the time necessary to provide the products or services requested by the customer. We keep some of your personal data for as long as you are a user of the Astro Service. When you delete your account, we will delete your personal data and it will expire from backups; unless we are legally allowed or required to maintain certain personal data, including situations under the applicable laws to reveal personal data upon reasonable request of public authorities.\n\n### Rights of Data Subjects\n\nData subject (customer) can always request Astro to allow access and correction, supplement or update of data. Subject to a reasonable request of a data subject, Astro will remove data pertaining to a data subject unless applicable laws impose a duty to retain data for certain time or identification, location and deletion of data imposes a disproportionate financial burden upon Astro. Any requests for access, correction or deletion of data should be directed to Astro by sending an email to [[email protected]](mailto:[email protected]).\n\nYou may be aware that a European Union law, called the General Data Protection Regulation or \"GDPR\" gives certain rights to individuals in relation to their personal data. In order to enable you to exercise these rights with ease in relation to how Astro uses your personal data, we provide you with access to the following settings via your Account Settings page:\n\n\n- Remove Account - allows you to delete your account and associated personal data; and,\n- Notifications - allows you to manage communications you receive from Astro.\n\nAs a user you may also request a copy of your data and that your data be updated, deleted, restricted or moved to another organization.\n\n### We may share your information with\n\n<PanelBlock>\n \n#### Google Analytics (Google, Inc.)\n \nGoogle Inc. utilizes the Data collected to track and examine the use of this Application, to prepare reports on its activities and share them with other Google services.\n\nUS – [Privacy Policy](https://www.google.com/intl/en/policies/privacy/)\n\n</PanelBlock>\n\n### EU/EEA - US Data Transfers\n\nIf you choose to provide Astro with your information, you consent to the transfer and storage of that information on our servers located in the United States. Astro uses Google Cloud data hosting services.\n\nOn October 6, 2015, the European Court of Justice (ECJ) issued its decision in the case of Maximillian Schrems v. Data Protection Commissioner, finding that the U.S.-EU Safe Harbor Framework is invalid with immediate effect. The suspension of Safe Harbor affects many companies that need to transfer personal data from the European Union (EU) and the European Economic Area (EEA) to the United States and to other non-EU/EEA countries. The European Union (EU) is an economic and political partnership between [28 European countries](http://europa.eu/about-eu/countries/member-countries/index_en.htm) that together cover much of the European continent. The European Economic Area (EEA) unites the EU Member States and the three EEA [European Free Trade Association](http://www.efta.int/about-efta/european-free-trade-association) (EFTA) States (Iceland, Liechtenstein, and Norway) into an internal market governed by the same basic rules. These rules aim to enable goods, services, capital, and persons to move freely about the EEA in an open and competitive environment, a concept referred to as the four freedoms.\n\nAstro has evaluated various options that will allow for the transfer of personal data from the EU/EEA to non-EU/EEA countries. Like many companies, Astro has decided to authorize these personal data transfers using European Commission-approved Standard Contractual Clauses (also referred to as Model Contracts).\n\nAstro uses a new Data Processing Agreement (DPA), which includes Standard Contractual Clauses (SCCs), also referred to as Model Contracts. These SCCs provide a mechanism approved by the European Commission as offering adequate protection for data subjects when transferring personal data from the EU/EEA under the EU Data Protection Directive. For EU/EEA residents, any questions or concerns regarding the use or disclosure of your information should be directed to Astro by sending an email to [[email protected]](mailto:[email protected]). We will investigate and attempt to resolve complaints and disputes regarding use and disclosure of your information in accordance with this Privacy Policy.\n\n### Security\n\nWe understand that the security of your data is important. We provide reasonable administrative, technical, and physical security controls to protect your personal information from unauthorized access, disclosure, modification, or unauthorized destruction. However, despite our efforts, no security controls are 100% effective and Astro cannot ensure or warrant the security of your data.\n\n### Links\n\nWe may display content that links to third-party websites. We cannot control or be held responsible for third parties’ privacy practices and content. If you click on a third-party advertisement or link, please understand that you are leaving the Astro website and any personal data you provide will not be covered by this Policy. Please read their privacy policies to find out how they collect and process your personal data.\n\n### Changes\n\nAstro may periodically update this policy. We encourage you to periodically review our website for the latest information on our privacy practices.\n\n\n### Questions\n\nThank you for reading our Privacy Policy. If you have any questions about this Policy, please contact our Data Protection Officer by emailing [[email protected]](mailto:[email protected]).\n",
"html": "<p>The Astro Privacy Policy describes the privacy practices of Astro website and services. The laws of California and the laws of the United States apply. If you are a resident of EU/EEA, the European Commission-approved Standard Contractual Clauses (also referred to as Model Contracts) apply to Trans-Atlantic data transfers.</p>\n<h3 id=\"general-information\"><a href=\"#general-information\">General Information</a></h3>\n<p>We collect very limited personally identifiable information described below (the “data”) from <a href=\"https://help.github.com/articles/github-privacy-policy/\">GitHub</a> and of those who communicate with us directly via e-mail, aggregate information on what pages consumers access or visit, and information volunteered by the consumer (such as survey information and/or site registrations). The information we collect is used to provide our services, and to improve the quality of our services, and is not shared with or sold to other organizations for commercial purposes, except to provide products or services you’ve requested when we have your permission, or under the following circumstances:</p>\n<ul>\n<li>It is necessary to share information in order to investigate, prevent, or take action regarding illegal activities, suspected fraud, situations involving potential threats to the physical safety of any person, violations of <a href=\"/terms\">Terms of Service</a>, or as otherwise required by law.</li>\n<li>We transfer information about you if Astro is acquired by or merged with another company. In this event, Astro will notify you before information about you is transferred and becomes subject to a different privacy policy.</li>\n</ul>\n<h3 id=\"information-gathering-and-usage\"><a href=\"#information-gathering-and-usage\">Information Gathering and Usage</a></h3>\n<p>Astro uses collected information for the following general purposes: products and services provision, billing, identification and authentication through GitHub, Bitbucket, services improvement, contact, and research. Astro uses personally identifiable information on billing address and/or payment information only for the sole purpose of payment processing for Astro services.</p>\n<p>Payment processing services enable us to process payments by credit card, bank transfer or other means. To ensure greater security, we share only the information necessary to execute the transaction with the financial intermediaries handling the transaction. Some of these services may also enable the sending of timed messages to our customer, such as emails containing invoices or notifications concerning the payment.</p>\n<h3 id=\"cookies\"><a href=\"#cookies\">Cookies</a></h3>\n<p>A cookie is a small amount of data, which often includes an anonymous unique identifier, which is sent to your browser from a web site’s computers and stored on your computer’s hard drive.</p>\n<p>You can control how websites use cookies by configuring the privacy settings within your browser. Note that if you disable cookies entirely, Astro websites and applications may not function properly.</p>\n<h3 id=\"data-storage\"><a href=\"#data-storage\">Data Storage</a></h3>\n<p>Astro uses third-party vendors and hosting partners to provide the necessary hardware, software, networking, storage, and related technology required to run Astro. Astro’s third-party vendors and hosting partners adhere to the European Commission-approved Standard Contractual Clauses (also referred to as Model Contracts).</p>\n<h3 id=\"data-retention-and-deletion\"><a href=\"#data-retention-and-deletion\">Data Retention and Deletion</a></h3>\n<p>Data is kept for the time necessary to provide the products or services requested by the customer. We keep some of your personal data for as long as you are a user of the Astro Service. When you delete your account, we will delete your personal data and it will expire from backups; unless we are legally allowed or required to maintain certain personal data, including situations under the applicable laws to reveal personal data upon reasonable request of public authorities.</p>\n<h3 id=\"rights-of-data-subjects\"><a href=\"#rights-of-data-subjects\">Rights of Data Subjects</a></h3>\n<p>Data subject (customer) can always request Astro to allow access and correction, supplement or update of data. Subject to a reasonable request of a data subject, Astro will remove data pertaining to a data subject unless applicable laws impose a duty to retain data for certain time or identification, location and deletion of data imposes a disproportionate financial burden upon Astro. Any requests for access, correction or deletion of data should be directed to Astro by sending an email to <a href=\"mailto:[email protected]\">[email protected]</a>.</p>\n<p>You may be aware that a European Union law, called the General Data Protection Regulation or “GDPR” gives certain rights to individuals in relation to their personal data. In order to enable you to exercise these rights with ease in relation to how Astro uses your personal data, we provide you with access to the following settings via your Account Settings page:</p>\n<ul>\n<li>Remove Account - allows you to delete your account and associated personal data; and,</li>\n<li>Notifications - allows you to manage communications you receive from Astro.</li>\n</ul>\n<p>As a user you may also request a copy of your data and that your data be updated, deleted, restricted or moved to another organization.</p>\n<h3 id=\"we-may-share-your-information-with\"><a href=\"#we-may-share-your-information-with\">We may share your information with</a></h3>\n<PanelBlock>\n<h4 id=\"google-analytics-google-inc\"><a href=\"#google-analytics-google-inc\">Google Analytics (Google, Inc.)</a></h4>\n<p>Google Inc. utilizes the Data collected to track and examine the use of this Application, to prepare reports on its activities and share them with other Google services.</p>\n<p>US – <a href=\"https://www.google.com/intl/en/policies/privacy/\">Privacy Policy</a></p>\n</PanelBlock>\n<h3 id=\"eueea---us-data-transfers\"><a href=\"#eueea---us-data-transfers\">EU/EEA - US Data Transfers</a></h3>\n<p>If you choose to provide Astro with your information, you consent to the transfer and storage of that information on our servers located in the United States. Astro uses Google Cloud data hosting services.</p>\n<p>On October 6, 2015, the European Court of Justice (ECJ) issued its decision in the case of Maximillian Schrems v. Data Protection Commissioner, finding that the U.S.-EU Safe Harbor Framework is invalid with immediate effect. The suspension of Safe Harbor affects many companies that need to transfer personal data from the European Union (EU) and the European Economic Area (EEA) to the United States and to other non-EU/EEA countries. The European Union (EU) is an economic and political partnership between <a href=\"http://europa.eu/about-eu/countries/member-countries/index_en.htm\">28 European countries</a> that together cover much of the European continent. The European Economic Area (EEA) unites the EU Member States and the three EEA <a href=\"http://www.efta.int/about-efta/european-free-trade-association\">European Free Trade Association</a> (EFTA) States (Iceland, Liechtenstein, and Norway) into an internal market governed by the same basic rules. These rules aim to enable goods, services, capital, and persons to move freely about the EEA in an open and competitive environment, a concept referred to as the four freedoms.</p>\n<p>Astro has evaluated various options that will allow for the transfer of personal data from the EU/EEA to non-EU/EEA countries. Like many companies, Astro has decided to authorize these personal data transfers using European Commission-approved Standard Contractual Clauses (also referred to as Model Contracts).</p>\n<p>Astro uses a new Data Processing Agreement (DPA), which includes Standard Contractual Clauses (SCCs), also referred to as Model Contracts. These SCCs provide a mechanism approved by the European Commission as offering adequate protection for data subjects when transferring personal data from the EU/EEA under the EU Data Protection Directive. For EU/EEA residents, any questions or concerns regarding the use or disclosure of your information should be directed to Astro by sending an email to <a href=\"mailto:[email protected]\">[email protected]</a>. We will investigate and attempt to resolve complaints and disputes regarding use and disclosure of your information in accordance with this Privacy Policy.</p>\n<h3 id=\"security\"><a href=\"#security\">Security</a></h3>\n<p>We understand that the security of your data is important. We provide reasonable administrative, technical, and physical security controls to protect your personal information from unauthorized access, disclosure, modification, or unauthorized destruction. However, despite our efforts, no security controls are 100% effective and Astro cannot ensure or warrant the security of your data.</p>\n<h3 id=\"links\"><a href=\"#links\">Links</a></h3>\n<p>We may display content that links to third-party websites. We cannot control or be held responsible for third parties’ privacy practices and content. If you click on a third-party advertisement or link, please understand that you are leaving the Astro website and any personal data you provide will not be covered by this Policy. Please read their privacy policies to find out how they collect and process your personal data.</p>\n<h3 id=\"changes\"><a href=\"#changes\">Changes</a></h3>\n<p>Astro may periodically update this policy. We encourage you to periodically review our website for the latest information on our privacy practices.</p>\n<h3 id=\"questions\"><a href=\"#questions\">Questions</a></h3>\n<p>Thank you for reading our Privacy Policy. If you have any questions about this Policy, please contact our Data Protection Officer by emailing <a href=\"mailto:[email protected]\">[email protected]</a>.</p>"
},
{
"headers": [
{
"depth": 3,
"slug": "accepting-these-terms",
"text": "Accepting these terms"
},
{
"depth": 3,
"slug": "changes-to-these-terms",
"text": "Changes to these Terms"
},
{ "depth": 3, "slug": "privacy-policy", "text": "Privacy Policy" },
{
"depth": 3,
"slug": "third-party-services",
"text": "Third-Party Services"
},
{ "depth": 3, "slug": "creating-accounts", "text": "Creating Accounts" },
{
"depth": 3,
"slug": "your-content--conduct",
"text": "Your Content & Conduct"
},
{ "depth": 3, "slug": "astro-materials", "text": "Astro Materials" },
{
"depth": 3,
"slug": "hyperlinks-and-third-party-content",
"text": "Hyperlinks and Third Party Content"
},
{
"depth": 3,
"slug": "unavoidable-legal-stuff",
"text": "Unavoidable Legal Stuff"
},
{
"depth": 3,
"slug": "copyright-complaints",
"text": "Copyright Complaints"
},
{ "depth": 3, "slug": "governing-law", "text": "Governing Law" },
{ "depth": 3, "slug": "jurisdiction", "text": "Jurisdiction" },
{ "depth": 3, "slug": "termination", "text": "Termination" },
{ "depth": 3, "slug": "assignment", "text": "Assignment" },
{ "depth": 3, "slug": "entire-agreement", "text": "Entire Agreement" },
{ "depth": 3, "slug": "feedback", "text": "Feedback" },
{
"depth": 3,
"slug": "questions--contact-information",
"text": "Questions & Contact Information"
}
],
"source": "\n### Accepting these terms\n\nIf you access or use the Service, it means you agree to be bound by all of the terms below. So, before you use the Service, please read all of the terms. If you don’t agree to all of the terms below, please do not use the Service. Also, if a term does not make sense to you, please let us know by e-mailing [[email protected]](mailto:[email protected]).\n\n### Changes to these Terms\n\nWe reserve the right to modify these Terms at any time. Whenever we make changes to these Terms, the changes are effective 2 days after we post such revised Terms (indicated by revising the date at the top of these Terms) or upon your acceptance if we provide a mechanism for your immediate acceptance of the revised Terms (such as a click-through confirmation or acceptance button). It is your responsibility to check Astro for changes to these Terms.\n\nIf you continue to use the Service after the revised Terms go into effect, then you have accepted the changes to these Terms.\n\n### Privacy Policy\n\nFor information about how we collect and use information about users of the Service, please view our [privacy policy](/privacy).\n\n### Third-Party Services\n\nFrom time to time, we may provide you with links to third party websites or services that we do not own or control. Your use of the Service may also include the use of applications that are developed or owned by a third party. Your use of such third party applications, websites, and services is governed by that party’s own terms of service or privacy policies. We encourage you to read the terms and conditions and privacy policy of any third party application, website or service that you visit or use.\n\n### Creating Accounts\nWhen you create an account or use another service to log in to the Service, you agree to maintain the security of your password and accept all risks of unauthorized access to any data or other information you provide to the Service.\n\nIf you discover or suspect any Service security breaches, please let us know as soon as possible.\n\n### Your Content & Conduct\n\nOur Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness.\n\nWhen you post, link or otherwise make available content to the Service, you grant us the right and license to use, reproduce, modify, publicly perform, publicly display and distribute your content on or through the Service. We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself.\n\nAside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service.\n\nYou can remove the content that you posted by deleting it. Once you delete your content, it will not appear on the Service, but copies of your deleted content may remain in our system or backups for some period of time.\n\nYou may not post, link and otherwise make available on or through the Service any of the following:\n\n- Content that is libelous, defamatory, bigoted, fraudulent or deceptive;\n- Content that is illegal or unlawful, that would otherwise create liability;\n- Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;\n- Mass or repeated promotions, political campaigning or commercial messages directed at users who do not follow you (SPAM);\n- Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and\n- Viruses, corrupted data or other harmful, disruptive or destructive files or code.\n\nAlso, you agree that you will not do any of the following in connection with the Service or other users:\n\n- Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;\n- Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;\n- Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;\n- Create an account or post any content if you are not over 13 years of age years of age; and\n- Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties.\n\n### Astro Materials\n\nWe put a lot of effort into creating the Service including, the logo and all designs, text, graphics, pictures, information and other content (excluding your content). This property is owned by us or our licensors and it is protected by U.S. and international copyright laws. We grant you the right to use it.\n\nHowever, unless we expressly state otherwise, your rights do not include: (i) publicly performing or publicly displaying the Service; (ii) modifying or otherwise making any derivative uses of the Service or any portion thereof; (iii) using any data mining, robots or similar data gathering or extraction methods; (iv) downloading (other than page caching) of any portion of the Service or any information contained therein; (v) reverse engineering or accessing the Service in order to build a competitive product or service; or (vi) using the Service other than for its intended purposes. If you do any of this, we may terminate your use of the Service.\n\n### Hyperlinks and Third Party Content\n\nYou may create a hyperlink to the Service. But, you may not use, frame or utilize framing techniques to enclose any of our trademarks, logos or other proprietary information without our express written consent.\n\nAstro makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern.\n\nIf there is any content on the Service from you and others, we don’t review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content.\n\n### Unavoidable Legal Stuff\n\nTHE SERVICE AND ANY OTHER SERVICE AND CONTENT INCLUDED ON OR OTHERWISE MADE AVAILABLE TO YOU THROUGH THE SERVICE ARE PROVIDED TO YOU ON AN AS IS OR AS AVAILABLE BASIS WITHOUT ANY REPRESENTATIONS OR WARRANTIES OF ANY KIND. WE DISCLAIM ANY AND ALL WARRANTIES AND REPRESENTATIONS (EXPRESS OR IMPLIED, ORAL OR WRITTEN) WITH RESPECT TO THE SERVICE AND CONTENT INCLUDED ON OR OTHERWISE MADE AVAILABLE TO YOU THROUGH THE SERVICE WHETHER ALLEGED TO ARISE BY OPERATION OF LAW, BY REASON OF CUSTOM OR USAGE IN THE TRADE, BY COURSE OF DEALING OR OTHERWISE.\n\nIN NO EVENT WILL ASTRO BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY SPECIAL, INDIRECT, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY KIND ARISING OUT OF OR IN CONNECTION WITH THE SERVICE OR ANY OTHER SERVICE AND/OR CONTENT INCLUDED ON OR OTHERWISE MADE AVAILABLE TO YOU THROUGH THE SERVICE, REGARDLESS OF THE FORM OF ACTION, WHETHER IN CONTRACT, TORT, STRICT LIABILITY OR OTHERWISE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES OR ARE AWARE OF THE POSSIBILITY OF SUCH DAMAGES. OUR TOTAL LIABILITY FOR ALL CAUSES OF ACTION AND UNDER ALL THEORIES OF LIABILITY WILL BE LIMITED TO THE AMOUNT YOU PAID TO ASTRO THIS SECTION WILL BE GIVEN FULL EFFECT EVEN IF ANY REMEDY SPECIFIED IN THIS AGREEMENT IS DEEMED TO HAVE FAILED OF ITS ESSENTIAL PURPOSE.\n\nYou agree to defend, indemnify and hold us harmless from and against any and all costs, damages, liabilities, and expenses (including attorneys’ fees, costs, penalties, interest and disbursements) we incur in relation to, arising from, or for the purpose of avoiding, any claim or demand from a third party relating to your use of the Service or the use of the Service by any person using your account, including any claim that your use of the Service violates any applicable law or regulation, or the rights of any third party, and/or your violation of these Terms.\n\n### Copyright Complaints\n\nWe take intellectual property rights seriously. In accordance with the Digital Millennium Copyright Act (\"DMCA\") and other applicable law, we have adopted a policy of terminating, in appropriate circumstances and, at our sole discretion, access to the service for users who are deemed to be repeat infringers.\n\n### Governing Law\n\nThe validity of these Terms and the rights, obligations, and relations of the parties under these Terms will be construed and determined under and in accordance with the laws of the Delaware state, without regard to conflicts of law principles.\n\n### Jurisdiction\n\nYou expressly agree that exclusive jurisdiction for any dispute with the Service or relating to your use of it, resides in the courts of the Delaware state and you further agree and expressly consent to the exercise of personal jurisdiction in the courts of the Delaware state in connection with any such dispute including any claim involving Service. You further agree that you and Service will not commence against the other a class action, class arbitration or other representative action or proceeding.\n\n### Termination\n\nIf you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service.\n\n### Assignment\n\nWe may assign or delegate these Terms of Service and/or the Privacy Policy, in whole or in part, to any person or entity at any time with or without your consent, including the license grant in the \"Your Content & Conduct\" section. You may not assign or delegate any rights or obligations under the Terms of Service or Privacy Policy without our prior written consent, and any unauthorized assignment and delegation by you is void.\n\n### Entire Agreement\n\nThese Terms constitute the entire agreement between you and Astro. regarding the use of the Service, superseding any prior agreements between you and Astro relating to your use of the Service.\n\n### Feedback\n\nPlease let us know what you think of the Service, these Terms and, in general, Astro. When you provide us with any feedback, comments or suggestions about the Service, these Terms and, in general, Astro, you irrevocably assign to us all of your right, title and interest in and to your feedback, comments and suggestions.\n\n### Questions & Contact Information\n\nQuestions or comments about the Service may be directed to us at the email address [[email protected]](mailto:[email protected])\n",
"html": "<h3 id=\"accepting-these-terms\"><a href=\"#accepting-these-terms\">Accepting these terms</a></h3>\n<p>If you access or use the Service, it means you agree to be bound by all of the terms below. So, before you use the Service, please read all of the terms. If you don’t agree to all of the terms below, please do not use the Service. Also, if a term does not make sense to you, please let us know by e-mailing <a href=\"mailto:[email protected]\">[email protected]</a>.</p>\n<h3 id=\"changes-to-these-terms\"><a href=\"#changes-to-these-terms\">Changes to these Terms</a></h3>\n<p>We reserve the right to modify these Terms at any time. Whenever we make changes to these Terms, the changes are effective 2 days after we post such revised Terms (indicated by revising the date at the top of these Terms) or upon your acceptance if we provide a mechanism for your immediate acceptance of the revised Terms (such as a click-through confirmation or acceptance button). It is your responsibility to check Astro for changes to these Terms.</p>\n<p>If you continue to use the Service after the revised Terms go into effect, then you have accepted the changes to these Terms.</p>\n<h3 id=\"privacy-policy\"><a href=\"#privacy-policy\">Privacy Policy</a></h3>\n<p>For information about how we collect and use information about users of the Service, please view our <a href=\"/privacy\">privacy policy</a>.</p>\n<h3 id=\"third-party-services\"><a href=\"#third-party-services\">Third-Party Services</a></h3>\n<p>From time to time, we may provide you with links to third party websites or services that we do not own or control. Your use of the Service may also include the use of applications that are developed or owned by a third party. Your use of such third party applications, websites, and services is governed by that party’s own terms of service or privacy policies. We encourage you to read the terms and conditions and privacy policy of any third party application, website or service that you visit or use.</p>\n<h3 id=\"creating-accounts\"><a href=\"#creating-accounts\">Creating Accounts</a></h3>\n<p>When you create an account or use another service to log in to the Service, you agree to maintain the security of your password and accept all risks of unauthorized access to any data or other information you provide to the Service.</p>\n<p>If you discover or suspect any Service security breaches, please let us know as soon as possible.</p>\n<h3 id=\"your-content--conduct\"><a href=\"#your-content--conduct\">Your Content & Conduct</a></h3>\n<p>Our Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness.</p>\n<p>When you post, link or otherwise make available content to the Service, you grant us the right and license to use, reproduce, modify, publicly perform, publicly display and distribute your content on or through the Service. We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself.</p>\n<p>Aside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service.</p>\n<p>You can remove the content that you posted by deleting it. Once you delete your content, it will not appear on the Service, but copies of your deleted content may remain in our system or backups for some period of time.</p>\n<p>You may not post, link and otherwise make available on or through the Service any of the following:</p>\n<ul>\n<li>Content that is libelous, defamatory, bigoted, fraudulent or deceptive;</li>\n<li>Content that is illegal or unlawful, that would otherwise create liability;</li>\n<li>Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;</li>\n<li>Mass or repeated promotions, political campaigning or commercial messages directed at users who do not follow you (SPAM);</li>\n<li>Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and</li>\n<li>Viruses, corrupted data or other harmful, disruptive or destructive files or code.</li>\n</ul>\n<p>Also, you agree that you will not do any of the following in connection with the Service or other users:</p>\n<ul>\n<li>Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;</li>\n<li>Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;</li>\n<li>Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;</li>\n<li>Create an account or post any content if you are not over 13 years of age years of age; and</li>\n<li>Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties.</li>\n</ul>\n<h3 id=\"astro-materials\"><a href=\"#astro-materials\">Astro Materials</a></h3>\n<p>We put a lot of effort into creating the Service including, the logo and all designs, text, graphics, pictures, information and other content (excluding your content). This property is owned by us or our licensors and it is protected by U.S. and international copyright laws. We grant you the right to use it.</p>\n<p>However, unless we expressly state otherwise, your rights do not include: (i) publicly performing or publicly displaying the Service; (ii) modifying or otherwise making any derivative uses of the Service or any portion thereof; (iii) using any data mining, robots or similar data gathering or extraction methods; (iv) downloading (other than page caching) of any portion of the Service or any information contained therein; (v) reverse engineering or accessing the Service in order to build a competitive product or service; or (vi) using the Service other than for its intended purposes. If you do any of this, we may terminate your use of the Service.</p>\n<h3 id=\"hyperlinks-and-third-party-content\"><a href=\"#hyperlinks-and-third-party-content\">Hyperlinks and Third Party Content</a></h3>\n<p>You may create a hyperlink to the Service. But, you may not use, frame or utilize framing techniques to enclose any of our trademarks, logos or other proprietary information without our express written consent.</p>\n<p>Astro makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern.</p>\n<p>If there is any content on the Service from you and others, we don’t review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content.</p>\n<h3 id=\"unavoidable-legal-stuff\"><a href=\"#unavoidable-legal-stuff\">Unavoidable Legal Stuff</a></h3>\n<p>THE SERVICE AND ANY OTHER SERVICE AND CONTENT INCLUDED ON OR OTHERWISE MADE AVAILABLE TO YOU THROUGH THE SERVICE ARE PROVIDED TO YOU ON AN AS IS OR AS AVAILABLE BASIS WITHOUT ANY REPRESENTATIONS OR WARRANTIES OF ANY KIND. WE DISCLAIM ANY AND ALL WARRANTIES AND REPRESENTATIONS (EXPRESS OR IMPLIED, ORAL OR WRITTEN) WITH RESPECT TO THE SERVICE AND CONTENT INCLUDED ON OR OTHERWISE MADE AVAILABLE TO YOU THROUGH THE SERVICE WHETHER ALLEGED TO ARISE BY OPERATION OF LAW, BY REASON OF CUSTOM OR USAGE IN THE TRADE, BY COURSE OF DEALING OR OTHERWISE.</p>\n<p>IN NO EVENT WILL ASTRO BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY SPECIAL, INDIRECT, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY KIND ARISING OUT OF OR IN CONNECTION WITH THE SERVICE OR ANY OTHER SERVICE AND/OR CONTENT INCLUDED ON OR OTHERWISE MADE AVAILABLE TO YOU THROUGH THE SERVICE, REGARDLESS OF THE FORM OF ACTION, WHETHER IN CONTRACT, TORT, STRICT LIABILITY OR OTHERWISE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES OR ARE AWARE OF THE POSSIBILITY OF SUCH DAMAGES. OUR TOTAL LIABILITY FOR ALL CAUSES OF ACTION AND UNDER ALL THEORIES OF LIABILITY WILL BE LIMITED TO THE AMOUNT YOU PAID TO ASTRO THIS SECTION WILL BE GIVEN FULL EFFECT EVEN IF ANY REMEDY SPECIFIED IN THIS AGREEMENT IS DEEMED TO HAVE FAILED OF ITS ESSENTIAL PURPOSE.</p>\n<p>You agree to defend, indemnify and hold us harmless from and against any and all costs, damages, liabilities, and expenses (including attorneys’ fees, costs, penalties, interest and disbursements) we incur in relation to, arising from, or for the purpose of avoiding, any claim or demand from a third party relating to your use of the Service or the use of the Service by any person using your account, including any claim that your use of the Service violates any applicable law or regulation, or the rights of any third party, and/or your violation of these Terms.</p>\n<h3 id=\"copyright-complaints\"><a href=\"#copyright-complaints\">Copyright Complaints</a></h3>\n<p>We take intellectual property rights seriously. In accordance with the Digital Millennium Copyright Act (“DMCA”) and other applicable law, we have adopted a policy of terminating, in appropriate circumstances and, at our sole discretion, access to the service for users who are deemed to be repeat infringers.</p>\n<h3 id=\"governing-law\"><a href=\"#governing-law\">Governing Law</a></h3>\n<p>The validity of these Terms and the rights, obligations, and relations of the parties under these Terms will be construed and determined under and in accordance with the laws of the Delaware state, without regard to conflicts of law principles.</p>\n<h3 id=\"jurisdiction\"><a href=\"#jurisdiction\">Jurisdiction</a></h3>\n<p>You expressly agree that exclusive jurisdiction for any dispute with the Service or relating to your use of it, resides in the courts of the Delaware state and you further agree and expressly consent to the exercise of personal jurisdiction in the courts of the Delaware state in connection with any such dispute including any claim involving Service. You further agree that you and Service will not commence against the other a class action, class arbitration or other representative action or proceeding.</p>\n<h3 id=\"termination\"><a href=\"#termination\">Termination</a></h3>\n<p>If you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service.</p>\n<h3 id=\"assignment\"><a href=\"#assignment\">Assignment</a></h3>\n<p>We may assign or delegate these Terms of Service and/or the Privacy Policy, in whole or in part, to any person or entity at any time with or without your consent, including the license grant in the “Your Content & Conduct” section. You may not assign or delegate any rights or obligations under the Terms of Service or Privacy Policy without our prior written consent, and any unauthorized assignment and delegation by you is void.</p>\n<h3 id=\"entire-agreement\"><a href=\"#entire-agreement\">Entire Agreement</a></h3>\n<p>These Terms constitute the entire agreement between you and Astro. regarding the use of the Service, superseding any prior agreements between you and Astro relating to your use of the Service.</p>\n<h3 id=\"feedback\"><a href=\"#feedback\">Feedback</a></h3>\n<p>Please let us know what you think of the Service, these Terms and, in general, Astro. When you provide us with any feedback, comments or suggestions about the Service, these Terms and, in general, Astro, you irrevocably assign to us all of your right, title and interest in and to your feedback, comments and suggestions.</p>\n<h3 id=\"questions--contact-information\"><a href=\"#questions--contact-information\">Questions & Contact Information</a></h3>\n<p>Questions or comments about the Service may be directed to us at the email address <a href=\"mailto:[email protected]\">[email protected]</a></p>"
},
{
"headers": [
{
"depth": 2,
"slug": "responsive-partial-hydration",
"text": "Responsive partial hydration"
},
{
"depth": 2,
"slug": "named-slots-in-astro-components",
"text": "Named slots in Astro components"
},
{ "depth": 2, "slug": "solid-support", "text": "Solid support" },
{ "depth": 2, "slug": "lit-ssr-support", "text": "Lit SSR support" },
{ "depth": 2, "slug": "community", "text": "Community" }
],
"source": "\nA little over a month ago, the first public beta for Astro was released to the world. Since then, we have been fixing bugs and gathering your feedback on what to tackle next. Today, we are excited to announce the release of some of our most requested features.\n\nWe are excited to introduce Astro v0.18, featuring:\n\n* __[Responsive partial hydration:](#responsive-partial-hydration)__ Hydrate components with CSS media queries.\n* __[Named slots:](#named-slots-in-astro-components)__ Support multiple content entrypoints inside of Astro components.\n* __[Solid.js support:](#solid-support)__ Use [Solid.js](https://www.solidjs.com/) components in Astro.\n* __[Lit support:](#solid-support)__ Use [Lit SSR](https://lit.dev/) to get server-side rendering for web components.\n* [`<style global>` support](https://docs.astro.build/guides/styling#overview), [GitHub syntax highlighting](https://twitter.com/n_moore/status/1417881860051509250) and a [shiny new docs site.](https://docs.astro.build/)\n\n## Responsive partial hydration\n\n\n<img src=\"/assets/blog/astro-018/responsive-hydration.jpg\" alt=\"Code example that shows off using the new client:media hydrator.\" />\n<!-- Saved from https://carbon.now.sh/16xchqPVdt5IEAY3Czg3 -->\n\nResponsive websites often load components that are only visible on certain device sizes, like a mobile sidebar menu. As a developer, it can be difficult (impossible?) to avoid loading mobile-only code on non-mobile devices. The result is wasted time spent on code that will never even be seen by the end user.\n\nAstro solves the problem of unnecessary JavaScript with [partial hydration](https://docs.astro.build/core-concepts/component-hydration), a technique that involves only hydrating the components that need interactivity and leaving the rest as static HTML. **Astro v0.18 adds a new way to customize partial hydration using [CSS media queries](https://docs.astro.build/core-concepts/component-hydration#mycomponent-clientmediaquery-) that avoid sending code to devices that don't need it.**\n\nAdd the `client:media` directive to a component and it will only hydrate once the media condition is met. On a mobile phone? Skip any expensive and unneccesary JavaScript for the desktop header that you'll never see. On a desktop or laptop? Don't load that mobile hamburger menu. This is all part of Astro's commitment to minimizing the unnecesary JavaScript that you send to your users.\n\n## Named slots in Astro components\n\n![Using multiple slots to provide the head and body parts of a Layout component.](/assets/blog/astro-018/named-slots.png)\n<!-- https://carbon.now.sh/9UwJkMCezRIOhzac5VVp -->\n\n[Named slots](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_templates_and_slots) are a standard web feature used in [browser APIs](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_templates_and_slots) and web frameworks like [Vue](https://vuejs.org/v2/guide/components-slots.html#Named-Slots). In this release, [Astro adds support for named slots](https://docs.astro.build/core-concepts/astro-components#slots) to Astro components, pages, and layouts.\n\nNamed slots are particularly useful for page layouts. A layout can now specify slots for different sections of the page. You can put metadata tags in \"head\" slot, and page content in the \"body\" or \"content\" slot. Your layout is now completely customizable, with as many or as few slots as you need.\n\n\n## Solid support\n\n<img src=\"/assets/blog/astro-018/solid-logo-dark.svg\" alt=\"Solid.js logo\" style=\"background-color: rgb(65, 64, 66); padding: 2rem 4rem;\" />\n\n[Solid](https://www.solidjs.com/) is a JSX-based UI framework that bills itself as the familiar, modern, more reactive alternative to React. We're really excited about Solid, and with the new [Solid renderer](https://github.com/withastro/astro/tree/main/packages/renderers/renderer-solid) for Astro you can use Solid as a first-class framework in your project.\n\nAdding support for Solid (our third officially-supported JSX framework) wasn't easy, and required a major refactoring of how Astro handles JSX. The final result was worth it: Astro is now much better at supporting different types of JSX and can even support the new React v17 JSX transform. This new foundation for Astro should support us well into the future.\n\nThe release of Solid v1.0 is the perfect showcase for Astro's multi-framework promise: try out your first Solid component in an existing project side-by-side with the rest of your components. Where other build tools force you to choose a single framework and stick with it, Astro makes multi-framework projects easy for short-term code migrations or long-term site architectures.\n\n\n## Lit SSR support\n\n![Lit logo](/assets/blog/astro-018/lit-logo.svg)\n\nServer-side rendering (SSR) for web components is finally here, thanks to Lit and the new [Lit renderer for Astro](https://github.com/withastro/astro/tree/main/packages/renderers/renderer-lit).\n\nThanks to the [Declarative Shadow DOM](https://web.dev/declarative-shadow-dom/) -- a new HTML feature that's now available in Chrome -- the Lit project was able to release experimental SSR support for Lit. Define a custom element in JavaScript and server render it with Astro as you would any other component from React or Vue. Unlike other JS components, you still use the custom element tag name in your HTML.\n\nThe Lit SSR renderer is experimental, and some existing web components may not work with the new API. As other web component libraries adopt declarative shadow DOM and common APIs emerge for rendering, we hope to bring support to those libraries as well. We will keep refining and improving this support as we move towards Astro v1.0.\n\n## Community\n\nWe've been absolutely blown away by the love Astro has recieved in such a short amount of time:\n\n- Featured articles and guides from [Netlify](https://www.netlify.com/blog/2021/07/23/build-a-modern-shopping-site-with-astro-and-serverless-functions/), [Cloudflare](https://developers.cloudflare.com/pages/framework-guides/astro), [CSS Tricks](https://css-tricks.com/a-look-at-building-with-astro/), and more.\n- Over 2,000 developers have downloaded the [Astro VSCode extension](https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode)\n- Over 500 weekly visitors to our [amazing Discord](https://astro.build/chat)\n- Over 300 public projects using Astro [on Github](https://github.com/withastro/astro)\n- 2 (TWO!) Astro jobs already posted on Discord!\n- [GitHub adds support for Astro component syntax highlighting](https://twitter.com/n_moore/status/1417881860051509250)\n\nTo learn more about Astro and start building your first site, check out [the Getting Started guide.](https://docs.astro.build)\n",
"html": "<p>A little over a month ago, the first public beta for Astro was released to the world. Since then, we have been fixing bugs and gathering your feedback on what to tackle next. Today, we are excited to announce the release of some of our most requested features.</p>\n<p>We are excited to introduce Astro v0.18, featuring:</p>\n<ul>\n<li><strong><a href=\"#responsive-partial-hydration\">Responsive partial hydration:</a></strong> Hydrate components with CSS media queries.</li>\n<li><strong><a href=\"#named-slots-in-astro-components\">Named slots:</a></strong> Support multiple content entrypoints inside of Astro components.</li>\n<li><strong><a href=\"#solid-support\">Solid.js support:</a></strong> Use <a href=\"https://www.solidjs.com/\">Solid.js</a> components in Astro.</li>\n<li><strong><a href=\"#solid-support\">Lit support:</a></strong> Use <a href=\"https://lit.dev/\">Lit SSR</a> to get server-side rendering for web components.</li>\n<li><a href=\"https://docs.astro.build/guides/styling#overview\"><code is:raw><style global></code> support</a>, <a href=\"https://twitter.com/n_moore/status/1417881860051509250\">GitHub syntax highlighting</a> and a <a href=\"https://docs.astro.build/\">shiny new docs site.</a></li>\n</ul>\n<h2 id=\"responsive-partial-hydration\"><a href=\"#responsive-partial-hydration\">Responsive partial hydration</a></h2>\n<img src=\"/assets/blog/astro-018/responsive-hydration.jpg\" alt=\"Code example that shows off using the new client:media hydrator.\" />\n<!-- Saved from https://carbon.now.sh/16xchqPVdt5IEAY3Czg3 -->\n<p>Responsive websites often load components that are only visible on certain device sizes, like a mobile sidebar menu. As a developer, it can be difficult (impossible?) to avoid loading mobile-only code on non-mobile devices. The result is wasted time spent on code that will never even be seen by the end user.</p>\n<p>Astro solves the problem of unnecessary JavaScript with <a href=\"https://docs.astro.build/core-concepts/component-hydration\">partial hydration</a>, a technique that involves only hydrating the components that need interactivity and leaving the rest as static HTML. <strong>Astro v0.18 adds a new way to customize partial hydration using <a href=\"https://docs.astro.build/core-concepts/component-hydration#mycomponent-clientmediaquery-\">CSS media queries</a> that avoid sending code to devices that don’t need it.</strong></p>\n<p>Add the <code is:raw>client:media</code> directive to a component and it will only hydrate once the media condition is met. On a mobile phone? Skip any expensive and unneccesary JavaScript for the desktop header that you’ll never see. On a desktop or laptop? Don’t load that mobile hamburger menu. This is all part of Astro’s commitment to minimizing the unnecesary JavaScript that you send to your users.</p>\n<h2 id=\"named-slots-in-astro-components\"><a href=\"#named-slots-in-astro-components\">Named slots in Astro components</a></h2>\n<p><img src=\"/assets/blog/astro-018/named-slots.png\" alt=\"Using multiple slots to provide the head and body parts of a Layout component.\"></p>\n<!-- https://carbon.now.sh/9UwJkMCezRIOhzac5VVp -->\n<p><a href=\"https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_templates_and_slots\">Named slots</a> are a standard web feature used in <a href=\"https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_templates_and_slots\">browser APIs</a> and web frameworks like <a href=\"https://vuejs.org/v2/guide/components-slots.html#Named-Slots\">Vue</a>. In this release, <a href=\"https://docs.astro.build/core-concepts/astro-components#slots\">Astro adds support for named slots</a> to Astro components, pages, and layouts.</p>\n<p>Named slots are particularly useful for page layouts. A layout can now specify slots for different sections of the page. You can put metadata tags in “head” slot, and page content in the “body” or “content” slot. Your layout is now completely customizable, with as many or as few slots as you need.</p>\n<h2 id=\"solid-support\"><a href=\"#solid-support\">Solid support</a></h2>\n<img src=\"/assets/blog/astro-018/solid-logo-dark.svg\" alt=\"Solid.js logo\" style=\"background-color: rgb(65, 64, 66); padding: 2rem 4rem;\" />\n<p><a href=\"https://www.solidjs.com/\">Solid</a> is a JSX-based UI framework that bills itself as the familiar, modern, more reactive alternative to React. We’re really excited about Solid, and with the new <a href=\"https://github.com/withastro/astro/tree/main/packages/renderers/renderer-solid\">Solid renderer</a> for Astro you can use Solid as a first-class framework in your project.</p>\n<p>Adding support for Solid (our third officially-supported JSX framework) wasn’t easy, and required a major refactoring of how Astro handles JSX. The final result was worth it: Astro is now much better at supporting different types of JSX and can even support the new React v17 JSX transform. This new foundation for Astro should support us well into the future.</p>\n<p>The release of Solid v1.0 is the perfect showcase for Astro’s multi-framework promise: try out your first Solid component in an existing project side-by-side with the rest of your components. Where other build tools force you to choose a single framework and stick with it, Astro makes multi-framework projects easy for short-term code migrations or long-term site architectures.</p>\n<h2 id=\"lit-ssr-support\"><a href=\"#lit-ssr-support\">Lit SSR support</a></h2>\n<p><img src=\"/assets/blog/astro-018/lit-logo.svg\" alt=\"Lit logo\"></p>\n<p>Server-side rendering (SSR) for web components is finally here, thanks to Lit and the new <a href=\"https://github.com/withastro/astro/tree/main/packages/renderers/renderer-lit\">Lit renderer for Astro</a>.</p>\n<p>Thanks to the <a href=\"https://web.dev/declarative-shadow-dom/\">Declarative Shadow DOM</a> — a new HTML feature that’s now available in Chrome — the Lit project was able to release experimental SSR support for Lit. Define a custom element in JavaScript and server render it with Astro as you would any other component from React or Vue. Unlike other JS components, you still use the custom element tag name in your HTML.</p>\n<p>The Lit SSR renderer is experimental, and some existing web components may not work with the new API. As other web component libraries adopt declarative shadow DOM and common APIs emerge for rendering, we hope to bring support to those libraries as well. We will keep refining and improving this support as we move towards Astro v1.0.</p>\n<h2 id=\"community\"><a href=\"#community\">Community</a></h2>\n<p>We’ve been absolutely blown away by the love Astro has recieved in such a short amount of time:</p>\n<ul>\n<li>Featured articles and guides from <a href=\"https://www.netlify.com/blog/2021/07/23/build-a-modern-shopping-site-with-astro-and-serverless-functions/\">Netlify</a>, <a href=\"https://developers.cloudflare.com/pages/framework-guides/astro\">Cloudflare</a>, <a href=\"https://css-tricks.com/a-look-at-building-with-astro/\">CSS Tricks</a>, and more.</li>\n<li>Over 2,000 developers have downloaded the <a href=\"https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode\">Astro VSCode extension</a></li>\n<li>Over 500 weekly visitors to our <a href=\"https://astro.build/chat\">amazing Discord</a></li>\n<li>Over 300 public projects using Astro <a href=\"https://github.com/withastro/astro\">on Github</a></li>\n<li>2 (TWO!) Astro jobs already posted on Discord!</li>\n<li><a href=\"https://twitter.com/n_moore/status/1417881860051509250\">GitHub adds support for Astro component syntax highlighting</a></li>\n</ul>\n<p>To learn more about Astro and start building your first site, check out <a href=\"https://docs.astro.build\">the Getting Started guide.</a></p>"
},
{
"headers": [
{
"depth": 2,
"slug": "file-based-routing-inspired-by-nextjs",
"text": "File-based routing, inspired by Next.js"
},
{
"depth": 2,
"slug": "clientonly-loading-directive",
"text": "client:only loading directive"
},
{ "depth": 2, "slug": "astroresolve", "text": "Astro.resolve()" },
{ "depth": 2, "slug": "docs-translations", "text": "Docs Translations" },
{ "depth": 2, "slug": "open-collective", "text": "Open Collective" },
{
"depth": 2,
"slug": "icymi-in-case-you-missed-it",
"text": "ICYMI (In case you missed it)"
},
{ "depth": 2, "slug": "", "text": "👋" }
],
"source": "We are excited to introduce Astro 0.19, featuring:\n\n* __[Next.js-inspired routing:](#file-based-routing-inspired-by-nextjs)__ Define new dynamic URL params.\n* __[`client:only` directive:](#clientonly-loading-directive)__ Opt-out of SSR for individual components.\n* __[`Astro.resolve()`:](#astroresolve)__ Resolve relative URLs to assets in `src/`.\n* __[Community translations:](#docs-translations)__ Read our docs in 10 different languages.\n* __[Astro Open Collective:](#open-collective)__ Now accepting donations & sponsorship!\n\n## File-based routing, inspired by Next.js\n\nAstro has always supported basic file-based routing, where every file in your `pages/` directory becomes a new page at that same URL. Astro 0.19 takes this one step further with support for dynamic URL params in your filename.\n\nInspired by [Next.js](https://nextjs.org/docs/routing/dynamic-routes) and [SvelteKit](https://kit.svelte.dev/docs#routing-pages), you can now add brackets to your page filename (ex: `src/pages/[slug].astro`) to create a dynamic page that matches many different URLs. `[...slug].astro` catch-all syntax is also supported.\n\nWith this new feature you can add support for URL params, slugs, pretty URLs, pagination and more to your website.\n\nTo create a dynamic route, create a file in your pages directory like `pages/posts/[slug].astro`. Create a [`getStaticPaths()`](https://docs.astro.build/reference/api-reference#getstaticpaths) function in your page frontmatter script and tell Astro exactly what paths to build for that route:\n\n```astro\n---\n// src/pages/posts/[slug].astro\n// Tell Astro what pages to build for your route \"/pages/:slug\"\nexport async function getStaticPaths() {\n return [\n // Generates: /pages/hello-world\n { params: { slug: 'hello-world' } },\n // Generates: /pages/my-first-blog-post\n { params: { slug: 'my-first-blog-post' } },\n // Generates: /pages/astro-ftw\n { params: { slug: 'astro-ftw' } },\n // ...\n ];\n}\n---\n<html>\n <head><title>My Page</title></head>\n <body>URL Param is {Astro.params.slug}</body>\n</html>\n```\n\nAstro is a static site builder, so you need to tell Astro what pages to build for every dynamic route. Defining your paths manually might feel like boilerplate, but ahead-of-time page building is exactly what makes static websites so fast for your users.\n\n`getStaticPaths()` is an async function, so you can -- and should! -- use it to load external data into your website. We normally love to use the [Pokemon API](https://pokeapi.co/) in our examples, but you'll probably want to use your favorite headless CMS:\n\n```js\n// src/pages/posts/[id].astro\n// Tell Astro what pages to build for your route \"/pages/:id\"\nexport async function getStaticPaths() {\n // Lets fetch posts from CSS Tricks' Headless CMS:\n const CSS_TRICKS_CMS = 'https://css-tricks.com/wp-json/wp/v2/posts';\n const allPosts = await fetch(CSS_TRICKS_CMS).then(r => r.json());\n // Then, create a new page from every post:\n return allPosts.map((post) => ({\n // Set the URL param \":id\" in the page URL\n params: {id: post.id},\n // Pass the post object as a prop to the page\n props: {post},\n }));\n}\n```\n\nTo learn more, check out our new documentation on [Routing](https://docs.astro.build/core-concepts/routing) and the new [`getStaticPaths()` API.](https://docs.astro.build/reference/api-reference#getstaticpaths) Or, if you prefer to learn by example, check out this great [Wordpress Headless CMS project](https://github.com/chriscoyier/astro-css-trickzz) from Chris Coyier and this [Shopify Ecommerce example](https://github.com/cassidoo/shopify-react-astro) by Cassidy Williams of Netlify. \n\nIf you were a previous user of our original Collections API, this new file-based routing system completely replaces Collections with plenty of friendly warning messages to help you upgrade. We hope that this new API removes all common frustrations that users had reported with the Collections API. \n\n## `client:only` loading directive\n\nSometimes, a UI component can't render on the server. Maybe it's because you've hit a bug in one of your dependencies, or maybe you're just using a library like D3 that can't run without the browser's `window` object. \n\nYou can attempt to wrap browser-only code with your own static server-side fallback UI. However, most users wanted a way to render a browser-only component without the extra boilerplate. Enter, `client:only`.\n\nAstro 0.19 ships with the new `client:only` loading directive to hydrate your component in the browser without server-side rendering. This provides a simple, straightforward fallback for any browser-only components.\n\n```html\n<!-- only renders in the browser, no placeholder HTML -->\n<MyReactComponent client:only />\n```\n\n`client:only` is now our fifth directive to let you completely control you component loading behavior. Visit our docs site to [check out the entire set](https://docs.astro.build/core-concepts/component-hydration#hydrate-interactive-components) and learn more about [Partial Hydration](https://docs.astro.build/core-concepts/component-hydration).\n\n🎉 This awesome feature was contributed by [Tony Sull](https://github.com/tony-sull) of [Navillus](https://navillus.dev/). Thanks, Tony!\n\n## `Astro.resolve()`\n\nAstro 0.19 includes a new [`Astro.resolve()`](https://docs.astro.build/reference/api-reference#astroresolve) helper function to resolve relative file references in your templates. With this new feature, you can reference relative assets (like images) inside of your components and Astro will return the correct URL for the browser.\n\nPreviously, you always had to place files in the `public/` directory and reference them by absolute URL path. Relative paths within the `src/` directory didn't work because they'd be shipped directly to the browser, as-is. Different pages would end up creating different URLs:\n\n```html\n<!-- This works the same on every page: -->\n<img src=\"/logo.png\" />\n<!-- But this means different things on different pages: -->\n<img src=\"../logo.png\" />\n```\n\nStarting in Astro 0.19, you can now use the new `Astro.resolve()` helper function to create an absolute URL reference from any relative path:\n\n```html\n<!-- Astro component input: -->\n<img src={Astro.resolve('../images/logo.png')} />\n<!-- HTML output: -->\n<img src=\"/_astro/src/images/logo.png\" />\n```\n\nIf it helps, you can think of `Astro.resolve()` as a simplified alternative to doing `new URL(yourRelativePath, import.meta.url).pathname` in the browser.\n\n[`Astro.resolve()`](https://docs.astro.build/reference/api-reference#astroresolve) gives you more options and more control over how you structure your project. In the future, this will also unlock our ability to serve optimized images right out of your `src/` directory.\n\n🎉 This awesome feature was contributed by [Jonathan Neal](https://github.com/jonathantneal) & [Matthew Phillips!](https://github.com/matthewp)\n\n## Docs Translations\n\nNot all developers speak English. In fact, most don't. Luckily, some amazing contributors in our community came together to translate the Astro docs site for a global audience. We are currently working on translations in 10 different languages, including: \n\n- [简体中文](https://docs.astro.build/zh-CN/getting-started)\n- [正體中文](https://docs.astro.build/zh-TW/getting-started)\n- [Български](https://docs.astro.build/bg/getting-started)\n- [Deutsch](https://docs.astro.build/de/getting-started)\n- [English](https://docs.astro.build/getting-started)\n- [Español](https://docs.astro.build/es/getting-started)\n- [Français](https://docs.astro.build/fr/getting-started)\n- [Nederlands](https://docs.astro.build/nl/getting-started)\n- [Português](https://docs.astro.build/pt-br/getting-started)\n- [Suomi](https://docs.astro.build/fi/getting-started)\n- [Русский](https://docs.astro.build/ru/getting-started)\n\nThese are still a work in progress, and we'll keep working towards 100% translation as we creep closer to a v1.0 release. If you know a few languages and are able to contribute, [we could really use your help!](https://github.com/withastro/astro/blob/main/CONTRIBUTING.md#translations)\n\n## Open Collective\n\nIt's been a little over two months since [the first release](https://astro.build/blog/introducing-astro) of Astro. In that release, we outlined our commitment to both **a free, open source Astro** and **long-term financial sustainability** for the project. Today, we're announcing our first experiment towards long-term sustainability:\n\n**Companies and individuals can now sponsor Astro's development with Open Collective. [Visit our Open Collective →](https://opencollective.com/astrodotbuild)**\n\nWe created an Open Collective because corporate sponsorship is one of the few proven paths towards financial sustainability in open source. However, [it's far from a perfect model.](https://stackoverflow.blog/2021/01/07/open-source-has-a-funding-problem/) Most contributions only go to a handful of popular projects, and the rest never see any meaningful support. The odds are against us but we believe in Astro, our community, and the excitement that keep growing around this project.\n\nChances are, your company benefits from open source software. Invest in the technologies that power your business by sponsoring Astro and any other open source projects that you use. **Bonus:** thousands of developers will see your logo on our README and the [astro.build homepage](https://astro.build), every day. \n\n100% of funds raised are invested directly back into the project and our community. You can read more about how funds are distributed by reading our [FUNDING.md](https://github.com/withastro/astro/blob/main/FUNDING.md) doc on GitHub.\n\nWe'll be tweeting out personal \"thank you\" messages to every person and company who hits the [\"Sponsor\"](https://opencollective.com/astrodotbuild) button in the next 48 hours. Our first, very special THANK YOU goes out to [Chris Jennings](https://twitter.com/ckj), CCO and co-founder of [Sentry](https://sentry.io/), for being our first official sponsor! 🎉\n\n## ICYMI (In case you missed it)\n\n[Github added official support](https://twitter.com/astrodotbuild/status/1423001137905651714?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1423001137905651714%7Ctwgr%5E%7Ctwcon%5Es1_c10&ref_url=https%3A%2F%2Fastro.build%2Fblog%2Fastro-019%2F) for `.astro` files and `astro` syntax highlighting across their entire platform. Not to be outdone, CodeSandbox [quickly followed up](https://twitter.com/codesandbox/status/1425438635357257728) with support of their own! \n\nThis is such a huge milestone for Astro, especially considering how young the project is! Thank you to everyone who used Astro, created projects, and showed these platforms how valuable Astro really is.\n\n<Tweet src=\"https://twitter.com/astrodotbuild/status/1423001137905651714\">\n It’s official! 🎉 <a href=\"https://twitter.com/github\">@github</a> now supports syntax highlighting for <code>.astro</code> files!<br><br>You can also use code blocks starting with <code>astro</code> to get proper highlighting in Markdown files, issues, and PR comments!\n <br><br><a href=\"https://t.co/CDiGw66Qw6\">pic.twitter.com/CDiGw66Qw6</a></p>— Astro (@astrodotbuild) <a href=\"https://twitter.com/astrodotbuild/status/1423001137905651714?ref_src=twsrc%5Etfw\">August 4, 2021</a></blockquote>\n</Tweet>\n\n## 👋\n\nThank you for reading! [Follow us on Twitter](https://twitter.com/astrodotbuild) to stay up to date as we move closer to a v1.0 release. Also, you can check out [our previous release post](https://astro.build/blog/astro-018) for even more updates on Astro. \n\nAnd, if you've read this far, you should definitely [join us on Discord.](https://astro.build/chat) ;)\n",
"html": "<p>We are excited to introduce Astro 0.19, featuring:</p>\n<ul>\n<li><strong><a href=\"#file-based-routing-inspired-by-nextjs\">Next.js-inspired routing:</a></strong> Define new dynamic URL params.</li>\n<li><strong><a href=\"#clientonly-loading-directive\"><code is:raw>client:only</code> directive:</a></strong> Opt-out of SSR for individual components.</li>\n<li><strong><a href=\"#astroresolve\"><code is:raw>Astro.resolve()</code>:</a></strong> Resolve relative URLs to assets in <code is:raw>src/</code>.</li>\n<li><strong><a href=\"#docs-translations\">Community translations:</a></strong> Read our docs in 10 different languages.</li>\n<li><strong><a href=\"#open-collective\">Astro Open Collective:</a></strong> Now accepting donations & sponsorship!</li>\n</ul>\n<h2 id=\"file-based-routing-inspired-by-nextjs\"><a href=\"#file-based-routing-inspired-by-nextjs\">File-based routing, inspired by Next.js</a></h2>\n<p>Astro has always supported basic file-based routing, where every file in your <code is:raw>pages/</code> directory becomes a new page at that same URL. Astro 0.19 takes this one step further with support for dynamic URL params in your filename.</p>\n<p>Inspired by <a href=\"https://nextjs.org/docs/routing/dynamic-routes\">Next.js</a> and <a href=\"https://kit.svelte.dev/docs#routing-pages\">SvelteKit</a>, you can now add brackets to your page filename (ex: <code is:raw>src/pages/[slug].astro</code>) to create a dynamic page that matches many different URLs. <code is:raw>[...slug].astro</code> catch-all syntax is also supported.</p>\n<p>With this new feature you can add support for URL params, slugs, pretty URLs, pagination and more to your website.</p>\n<p>To create a dynamic route, create a file in your pages directory like <code is:raw>pages/posts/[slug].astro</code>. Create a <a href=\"https://docs.astro.build/reference/api-reference#getstaticpaths\"><code is:raw>getStaticPaths()</code></a> function in your page frontmatter script and tell Astro exactly what paths to build for that route:</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #8B949E\">---</span></span>\n<span class=\"line\"><span style=\"color: #8B949E\">// src/pages/posts/[slug].astro</span></span>\n<span class=\"line\"><span style=\"color: #8B949E\">// Tell Astro what pages to build for your route "/pages/:slug"</span></span>\n<span class=\"line\"><span style=\"color: #FF7B72\">export</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">async</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">function</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #D2A8FF\">getStaticPaths</span><span style=\"color: #C9D1D9\">() {</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">return</span><span style=\"color: #C9D1D9\"> [</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #8B949E\">// Generates: /pages/hello-world</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> { params: { slug: </span><span style=\"color: #A5D6FF\">'hello-world'</span><span style=\"color: #C9D1D9\"> } },</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #8B949E\">// Generates: /pages/my-first-blog-post</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> { params: { slug: </span><span style=\"color: #A5D6FF\">'my-first-blog-post'</span><span style=\"color: #C9D1D9\"> } },</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #8B949E\">// Generates: /pages/astro-ftw</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> { params: { slug: </span><span style=\"color: #A5D6FF\">'astro-ftw'</span><span style=\"color: #C9D1D9\"> } },</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #8B949E\">// ...</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> ];</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\">}</span></span>\n<span class=\"line\"><span style=\"color: #8B949E\">---</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #7EE787\">html</span><span style=\"color: #C9D1D9\">></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> <</span><span style=\"color: #7EE787\">head</span><span style=\"color: #C9D1D9\">><</span><span style=\"color: #7EE787\">title</span><span style=\"color: #C9D1D9\">>My Page</</span><span style=\"color: #7EE787\">title</span><span style=\"color: #C9D1D9\">></</span><span style=\"color: #7EE787\">head</span><span style=\"color: #C9D1D9\">></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> <</span><span style=\"color: #7EE787\">body</span><span style=\"color: #C9D1D9\">>URL Param is {Astro.params.slug}</</span><span style=\"color: #7EE787\">body</span><span style=\"color: #C9D1D9\">></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"></</span><span style=\"color: #7EE787\">html</span><span style=\"color: #C9D1D9\">></span></span></code></pre>\n<p>Astro is a static site builder, so you need to tell Astro what pages to build for every dynamic route. Defining your paths manually might feel like boilerplate, but ahead-of-time page building is exactly what makes static websites so fast for your users.</p>\n<p><code is:raw>getStaticPaths()</code> is an async function, so you can — and should! — use it to load external data into your website. We normally love to use the <a href=\"https://pokeapi.co/\">Pokemon API</a> in our examples, but you’ll probably want to use your favorite headless CMS:</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #8B949E\">// src/pages/posts/[id].astro</span></span>\n<span class=\"line\"><span style=\"color: #8B949E\">// Tell Astro what pages to build for your route "/pages/:id"</span></span>\n<span class=\"line\"><span style=\"color: #FF7B72\">export</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">async</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">function</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #D2A8FF\">getStaticPaths</span><span style=\"color: #C9D1D9\">() {</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #8B949E\">// Lets fetch posts from CSS Tricks' Headless CMS:</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">const</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">CSS_TRICKS_CMS</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">=</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #A5D6FF\">'https://css-tricks.com/wp-json/wp/v2/posts'</span><span style=\"color: #C9D1D9\">;</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">const</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">allPosts</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">=</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">await</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #D2A8FF\">fetch</span><span style=\"color: #C9D1D9\">(</span><span style=\"color: #79C0FF\">CSS_TRICKS_CMS</span><span style=\"color: #C9D1D9\">).</span><span style=\"color: #D2A8FF\">then</span><span style=\"color: #C9D1D9\">(</span><span style=\"color: #FFA657\">r</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">=></span><span style=\"color: #C9D1D9\"> r.</span><span style=\"color: #D2A8FF\">json</span><span style=\"color: #C9D1D9\">());</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #8B949E\">// Then, create a new page from every post:</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">return</span><span style=\"color: #C9D1D9\"> allPosts.</span><span style=\"color: #D2A8FF\">map</span><span style=\"color: #C9D1D9\">((</span><span style=\"color: #FFA657\">post</span><span style=\"color: #C9D1D9\">) </span><span style=\"color: #FF7B72\">=></span><span style=\"color: #C9D1D9\"> ({</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #8B949E\">// Set the URL param ":id" in the page URL</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> params: {id: post.id},</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #8B949E\">// Pass the post object as a prop to the page</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> props: {post},</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> }));</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\">}</span></span></code></pre>\n<p>To learn more, check out our new documentation on <a href=\"https://docs.astro.build/core-concepts/routing\">Routing</a> and the new <a href=\"https://docs.astro.build/reference/api-reference#getstaticpaths\"><code is:raw>getStaticPaths()</code> API.</a> Or, if you prefer to learn by example, check out this great <a href=\"https://github.com/chriscoyier/astro-css-trickzz\">Wordpress Headless CMS project</a> from Chris Coyier and this <a href=\"https://github.com/cassidoo/shopify-react-astro\">Shopify Ecommerce example</a> by Cassidy Williams of Netlify.</p>\n<p>If you were a previous user of our original Collections API, this new file-based routing system completely replaces Collections with plenty of friendly warning messages to help you upgrade. We hope that this new API removes all common frustrations that users had reported with the Collections API.</p>\n<h2 id=\"clientonly-loading-directive\"><a href=\"#clientonly-loading-directive\"><code is:raw>client:only</code> loading directive</a></h2>\n<p>Sometimes, a UI component can’t render on the server. Maybe it’s because you’ve hit a bug in one of your dependencies, or maybe you’re just using a library like D3 that can’t run without the browser’s <code is:raw>window</code> object.</p>\n<p>You can attempt to wrap browser-only code with your own static server-side fallback UI. However, most users wanted a way to render a browser-only component without the extra boilerplate. Enter, <code is:raw>client:only</code>.</p>\n<p>Astro 0.19 ships with the new <code is:raw>client:only</code> loading directive to hydrate your component in the browser without server-side rendering. This provides a simple, straightforward fallback for any browser-only components.</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #8B949E\"><!-- only renders in the browser, no placeholder HTML --></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #FFA198; font-style: italic\">MyReactComponent</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">client:only</span><span style=\"color: #C9D1D9\"> /></span></span></code></pre>\n<p><code is:raw>client:only</code> is now our fifth directive to let you completely control you component loading behavior. Visit our docs site to <a href=\"https://docs.astro.build/core-concepts/component-hydration#hydrate-interactive-components\">check out the entire set</a> and learn more about <a href=\"https://docs.astro.build/core-concepts/component-hydration\">Partial Hydration</a>.</p>\n<p>🎉 This awesome feature was contributed by <a href=\"https://github.com/tony-sull\">Tony Sull</a> of <a href=\"https://navillus.dev/\">Navillus</a>. Thanks, Tony!</p>\n<h2 id=\"astroresolve\"><a href=\"#astroresolve\"><code is:raw>Astro.resolve()</code></a></h2>\n<p>Astro 0.19 includes a new <a href=\"https://docs.astro.build/reference/api-reference#astroresolve\"><code is:raw>Astro.resolve()</code></a> helper function to resolve relative file references in your templates. With this new feature, you can reference relative assets (like images) inside of your components and Astro will return the correct URL for the browser.</p>\n<p>Previously, you always had to place files in the <code is:raw>public/</code> directory and reference them by absolute URL path. Relative paths within the <code is:raw>src/</code> directory didn’t work because they’d be shipped directly to the browser, as-is. Different pages would end up creating different URLs:</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #8B949E\"><!-- This works the same on every page: --></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #7EE787\">img</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">src</span><span style=\"color: #C9D1D9\">=</span><span style=\"color: #A5D6FF\">"/logo.png"</span><span style=\"color: #C9D1D9\"> /></span></span>\n<span class=\"line\"><span style=\"color: #8B949E\"><!-- But this means different things on different pages: --></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #7EE787\">img</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">src</span><span style=\"color: #C9D1D9\">=</span><span style=\"color: #A5D6FF\">"../logo.png"</span><span style=\"color: #C9D1D9\"> /></span></span></code></pre>\n<p>Starting in Astro 0.19, you can now use the new <code is:raw>Astro.resolve()</code> helper function to create an absolute URL reference from any relative path:</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #8B949E\"><!-- Astro component input: --></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #7EE787\">img</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">src</span><span style=\"color: #C9D1D9\">=</span><span style=\"color: #A5D6FF\">{Astro.resolve(</span><span style=\"color: #FFA198; font-style: italic\">'../images/logo.png')}</span><span style=\"color: #C9D1D9\"> /></span></span>\n<span class=\"line\"><span style=\"color: #8B949E\"><!-- HTML output: --></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #7EE787\">img</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">src</span><span style=\"color: #C9D1D9\">=</span><span style=\"color: #A5D6FF\">"/_astro/src/images/logo.png"</span><span style=\"color: #C9D1D9\"> /></span></span></code></pre>\n<p>If it helps, you can think of <code is:raw>Astro.resolve()</code> as a simplified alternative to doing <code is:raw>new URL(yourRelativePath, import.meta.url).pathname</code> in the browser.</p>\n<p><a href=\"https://docs.astro.build/reference/api-reference#astroresolve\"><code is:raw>Astro.resolve()</code></a> gives you more options and more control over how you structure your project. In the future, this will also unlock our ability to serve optimized images right out of your <code is:raw>src/</code> directory.</p>\n<p>🎉 This awesome feature was contributed by <a href=\"https://github.com/jonathantneal\">Jonathan Neal</a> & <a href=\"https://github.com/matthewp\">Matthew Phillips!</a></p>\n<h2 id=\"docs-translations\"><a href=\"#docs-translations\">Docs Translations</a></h2>\n<p>Not all developers speak English. In fact, most don’t. Luckily, some amazing contributors in our community came together to translate the Astro docs site for a global audience. We are currently working on translations in 10 different languages, including:</p>\n<ul>\n<li><a href=\"https://docs.astro.build/zh-CN/getting-started\">简体中文</a></li>\n<li><a href=\"https://docs.astro.build/zh-TW/getting-started\">正體中文</a></li>\n<li><a href=\"https://docs.astro.build/bg/getting-started\">Български</a></li>\n<li><a href=\"https://docs.astro.build/de/getting-started\">Deutsch</a></li>\n<li><a href=\"https://docs.astro.build/getting-started\">English</a></li>\n<li><a href=\"https://docs.astro.build/es/getting-started\">Español</a></li>\n<li><a href=\"https://docs.astro.build/fr/getting-started\">Français</a></li>\n<li><a href=\"https://docs.astro.build/nl/getting-started\">Nederlands</a></li>\n<li><a href=\"https://docs.astro.build/pt-br/getting-started\">Português</a></li>\n<li><a href=\"https://docs.astro.build/fi/getting-started\">Suomi</a></li>\n<li><a href=\"https://docs.astro.build/ru/getting-started\">Русский</a></li>\n</ul>\n<p>These are still a work in progress, and we’ll keep working towards 100% translation as we creep closer to a v1.0 release. If you know a few languages and are able to contribute, <a href=\"https://github.com/withastro/astro/blob/main/CONTRIBUTING.md#translations\">we could really use your help!</a></p>\n<h2 id=\"open-collective\"><a href=\"#open-collective\">Open Collective</a></h2>\n<p>It’s been a little over two months since <a href=\"https://astro.build/blog/introducing-astro\">the first release</a> of Astro. In that release, we outlined our commitment to both <strong>a free, open source Astro</strong> and <strong>long-term financial sustainability</strong> for the project. Today, we’re announcing our first experiment towards long-term sustainability:</p>\n<p><strong>Companies and individuals can now sponsor Astro’s development with Open Collective. <a href=\"https://opencollective.com/astrodotbuild\">Visit our Open Collective →</a></strong></p>\n<p>We created an Open Collective because corporate sponsorship is one of the few proven paths towards financial sustainability in open source. However, <a href=\"https://stackoverflow.blog/2021/01/07/open-source-has-a-funding-problem/\">it’s far from a perfect model.</a> Most contributions only go to a handful of popular projects, and the rest never see any meaningful support. The odds are against us but we believe in Astro, our community, and the excitement that keep growing around this project.</p>\n<p>Chances are, your company benefits from open source software. Invest in the technologies that power your business by sponsoring Astro and any other open source projects that you use. <strong>Bonus:</strong> thousands of developers will see your logo on our README and the <a href=\"https://astro.build\">astro.build homepage</a>, every day.</p>\n<p>100% of funds raised are invested directly back into the project and our community. You can read more about how funds are distributed by reading our <a href=\"https://github.com/withastro/astro/blob/main/FUNDING.md\">FUNDING.md</a> doc on GitHub.</p>\n<p>We’ll be tweeting out personal “thank you” messages to every person and company who hits the <a href=\"https://opencollective.com/astrodotbuild\">“Sponsor”</a> button in the next 48 hours. Our first, very special THANK YOU goes out to <a href=\"https://twitter.com/ckj\">Chris Jennings</a>, CCO and co-founder of <a href=\"https://sentry.io/\">Sentry</a>, for being our first official sponsor! 🎉</p>\n<h2 id=\"icymi-in-case-you-missed-it\"><a href=\"#icymi-in-case-you-missed-it\">ICYMI (In case you missed it)</a></h2>\n<p><a href=\"https://twitter.com/astrodotbuild/status/1423001137905651714?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1423001137905651714%7Ctwgr%5E%7Ctwcon%5Es1_c10&ref_url=https%3A%2F%2Fastro.build%2Fblog%2Fastro-019%2F\">Github added official support</a> for <code is:raw>.astro</code> files and <code is:raw>astro</code> syntax highlighting across their entire platform. Not to be outdone, CodeSandbox <a href=\"https://twitter.com/codesandbox/status/1425438635357257728\">quickly followed up</a> with support of their own!</p>\n<p>This is such a huge milestone for Astro, especially considering how young the project is! Thank you to everyone who used Astro, created projects, and showed these platforms how valuable Astro really is.</p>\n<Tweet src=\"https://twitter.com/astrodotbuild/status/1423001137905651714\">\n It’s official! 🎉 <a href=\"https://twitter.com/github\">@github</a> now supports syntax highlighting for <code>.astro</code> files!<br><br>You can also use code blocks starting with <code>astro</code> to get proper highlighting in Markdown files, issues, and PR comments!\n <br><br><a href=\"https://t.co/CDiGw66Qw6\">pic.twitter.com/CDiGw66Qw6</a></p>— Astro (@astrodotbuild) <a href=\"https://twitter.com/astrodotbuild/status/1423001137905651714?ref_src=twsrc%5Etfw\">August 4, 2021</a></blockquote>\n</Tweet>\n<h2 id=\"\"><a href=\"#\">👋</a></h2>\n<p>Thank you for reading! <a href=\"https://twitter.com/astrodotbuild\">Follow us on Twitter</a> to stay up to date as we move closer to a v1.0 release. Also, you can check out <a href=\"https://astro.build/blog/astro-018\">our previous release post</a> for even more updates on Astro.</p>\n<p>And, if you’ve read this far, you should definitely <a href=\"https://astro.build/chat\">join us on Discord.</a> ;)</p>"
},
{
"headers": [
{ "depth": 2, "slug": "hello-vite", "text": "Hello, Vite!" },
{ "depth": 2, "slug": "hello-wasm", "text": "Hello, WASM!" },
{
"depth": 2,
"slug": "components-in-markdown",
"text": "Components in Markdown"
},
{ "depth": 2, "slug": "hmr-meet-html", "text": "HMR, meet HTML" },
{ "depth": 2, "slug": "try-it-today", "text": "Try it today" }
],
"source": "\nAstro v0.21.0 will be our biggest release yet. At a high-level, it includes:\n\n- [A new build engine, powered by Vite](#hello-vite)\n- [A new WASM compiler, written in Go](#hello-wasm)\n- [Brand new features, like Components-in-Markdown](#components-in-markdown)\n- [A new system for HTML live-updating via HMR](#hmr-meet-html)\n\nYou can try out our latest release today [in the browser](https://gitpod.io#snapshot/5e7cf2f1-8108-4fa5-99d3-ed8de70d8c23) or by running `npm install astro@next--compiler` in a new project directory on your machine.\n\nAstro is quickly becoming the production-ready framework for building faster, content-focused websites. To celebrate this milestone, here are some highlights and details on what you can expect in Astro v0.21.0 and beyond.\n\n## Hello, Vite!\n\nAstro 0.21 is getting an internal build engine upgrade, replacing Snowpack with [Vite](https://vitejs.dev) going forward.\n\nWe ran some early experiments with Vite and came away extremely impressed. Vite is well-maintained, well-documented, a bit faster, has great error messages, and has been building clear community buy-in across multiple frameworks. SSR handling can be a bit flakey, but the Vite team is aware of this and actively working on it.\n\nSo now, when Evan You tweets about [some great performance optimization](https://twitter.com/youyuxi/status/1440718351802646550) that they're making in Vite you can be certain that the same speed is coming to Astro as well. \n\nThe reverse is also true: we can now contribute fixes and improvements back to the larger Vite community. Now, when we fix an SSR bug in Astro (like [adding support for ESM-only npm packages](https://github.com/vitejs/vite/pull/5197)) we're also fixing it for every other Vite user, including [SvelteKit](https://kit.svelte.dev/docs#routing-endpoints).\n\nThere's one other huge benefit to choosing Vite: Rollup plugins. Starting in v0.21.0, you'll be able to connect the entire ecosystem of Rollup plugins to Astro. Enable new features like [image optimizations](https://github.com/JonasKruckenberg/imagetools/tree/main/packages/vite) and [icon loading](https://github.com/antfu/unplugin-icons) with just a few simple plugins. Magic!\n\nThis switch from Snowpack to Vite might come as a surprise to some: Both Drew and myself are maintainers on both projects. This was [a hard decision](https://dev.to/fredkschott/5-more-things-i-learned-building-snowpack-to-20-000-stars-5dc9) for us to make. But ultimately, after working with both tools I can confidently say that Vite will be a great choice for Astro's future.\n\n\n## Hello, WASM!\n\nAstro 0.21 features another huge low-level improvement: the brand new [@astrojs/compiler](https://github.com/withastro/astro-compiler-next). Astro's new compiler is written in Go and distributed as WASM. You can run it right in your browser, or on the server in Node.js and Deno. \n\nThe new [@astrojs/compiler](https://github.com/withastro/astro-compiler-next) unlocks:\n\n- **Flexibility:** Run the compiler anywhere with WASM.\n- **Speed:** Build sites faster with Go's compiled-language performance.\n- **Stability:** Writing our own compiler allowed us to fix some long-standing bugs.\n\nYou can play with the new compiler today right in your browser at https://astro.build/play. This REPL is just one example of what is now possible when you have a fast, runs-anywhere compiler. \n\n<p>Shout out to <Mention name=\"nate\" /> who did an incredible job with this project.</p>\n\n\n## Components in Markdown\n\nOur most requested feature ***by far*** has been the ability to use components directly in Markdown. After months of work, we're excited to announce that this feature is finally coming to Astro.\n\nStarting in v0.21.0, you can import components inside of your Markdown frontmatter via an optional `setup` script. Once imported, your components can be used anywhere on the page:\n\n```markdown\n---\ntitle: 'Astro 0.21 Early Preview'\nsetup: |\n import Logo from '../components/Logo.astro';\n import ReactCounter from '../components/Counter.jsx';\n---\n\n# Astro now supports components in Markdown!\n\n<Logo />\n\n- Back to markdown here. \n- Supports static Astro components.\n- Supports dynamic React/Vue/Svelte components!\n\n<ReactCounter start={0} client:load /> \n```\n\nThis new `setup` script was designed for maximum flexibility. We'll keep improving this API going forward with planned support for default components, default layouts, and markdown component overrides.\n\n\n## HMR, meet HTML\n\nStarting in v0.21.0, Astro will support full HMR for Astro components and pages. Change any `.astro` file in your codebase, and watch the dev server update the page without a full refresh and without losing any client state.\n\nAstro has always supported powerful HMR updates for client-side JavaScript components like React, Preact, Svelte, Vue, and Solid.js. But adding this for Astro was a fun challenge because Astro components are just static HTML. Our \"Zero JavaScript\" approach meant that there was no \"Astro runtime\" to hook into for updates. We had to get creative.\n\nNow, Astro's dev server sends HTML updates to the browser and then runs a small script to diff those updates against the current page. This creates a more granular, component-level HMR update that won't impact the rest of the page.\n\n\n## Try it today\n\nIf you've read this far, we'd love your help trying out the latest release before launch. You can try out our latest release today [in the browser](https://gitpod.io#snapshot/5e7cf2f1-8108-4fa5-99d3-ed8de70d8c23) or by running `npm install astro@next--compiler` in a new project directory. You can follow our progress and leave feedback in the `next` PR on GitHub: https://github.com/withastro/astro/pull/1406\n\nLeave feedback, report bugs, and get involved with Astro's development in our [Discord server](https://astro.build/chat). You can also [follow along](https://twitter.com/astrodotbuild) on Twitter.\n\n<Note type=\"tip\">\n\nKeep your eyes to the sky Astronaut! 🧑🚀🚀\n\nThere will be more news on v0.21 soon.\n\n</Note>\n",
"html": "<p>Astro v0.21.0 will be our biggest release yet. At a high-level, it includes:</p>\n<ul>\n<li><a href=\"#hello-vite\">A new build engine, powered by Vite</a></li>\n<li><a href=\"#hello-wasm\">A new WASM compiler, written in Go</a></li>\n<li><a href=\"#components-in-markdown\">Brand new features, like Components-in-Markdown</a></li>\n<li><a href=\"#hmr-meet-html\">A new system for HTML live-updating via HMR</a></li>\n</ul>\n<p>You can try out our latest release today <a href=\"https://gitpod.io#snapshot/5e7cf2f1-8108-4fa5-99d3-ed8de70d8c23\">in the browser</a> or by running <code is:raw>npm install astro@next--compiler</code> in a new project directory on your machine.</p>\n<p>Astro is quickly becoming the production-ready framework for building faster, content-focused websites. To celebrate this milestone, here are some highlights and details on what you can expect in Astro v0.21.0 and beyond.</p>\n<h2 id=\"hello-vite\"><a href=\"#hello-vite\">Hello, Vite!</a></h2>\n<p>Astro 0.21 is getting an internal build engine upgrade, replacing Snowpack with <a href=\"https://vitejs.dev\">Vite</a> going forward.</p>\n<p>We ran some early experiments with Vite and came away extremely impressed. Vite is well-maintained, well-documented, a bit faster, has great error messages, and has been building clear community buy-in across multiple frameworks. SSR handling can be a bit flakey, but the Vite team is aware of this and actively working on it.</p>\n<p>So now, when Evan You tweets about <a href=\"https://twitter.com/youyuxi/status/1440718351802646550\">some great performance optimization</a> that they’re making in Vite you can be certain that the same speed is coming to Astro as well.</p>\n<p>The reverse is also true: we can now contribute fixes and improvements back to the larger Vite community. Now, when we fix an SSR bug in Astro (like <a href=\"https://github.com/vitejs/vite/pull/5197\">adding support for ESM-only npm packages</a>) we’re also fixing it for every other Vite user, including <a href=\"https://kit.svelte.dev/docs#routing-endpoints\">SvelteKit</a>.</p>\n<p>There’s one other huge benefit to choosing Vite: Rollup plugins. Starting in v0.21.0, you’ll be able to connect the entire ecosystem of Rollup plugins to Astro. Enable new features like <a href=\"https://github.com/JonasKruckenberg/imagetools/tree/main/packages/vite\">image optimizations</a> and <a href=\"https://github.com/antfu/unplugin-icons\">icon loading</a> with just a few simple plugins. Magic!</p>\n<p>This switch from Snowpack to Vite might come as a surprise to some: Both Drew and myself are maintainers on both projects. This was <a href=\"https://dev.to/fredkschott/5-more-things-i-learned-building-snowpack-to-20-000-stars-5dc9\">a hard decision</a> for us to make. But ultimately, after working with both tools I can confidently say that Vite will be a great choice for Astro’s future.</p>\n<h2 id=\"hello-wasm\"><a href=\"#hello-wasm\">Hello, WASM!</a></h2>\n<p>Astro 0.21 features another huge low-level improvement: the brand new <a href=\"https://github.com/withastro/astro-compiler-next\">@astrojs/compiler</a>. Astro’s new compiler is written in Go and distributed as WASM. You can run it right in your browser, or on the server in Node.js and Deno.</p>\n<p>The new <a href=\"https://github.com/withastro/astro-compiler-next\">@astrojs/compiler</a> unlocks:</p>\n<ul>\n<li><strong>Flexibility:</strong> Run the compiler anywhere with WASM.</li>\n<li><strong>Speed:</strong> Build sites faster with Go’s compiled-language performance.</li>\n<li><strong>Stability:</strong> Writing our own compiler allowed us to fix some long-standing bugs.</li>\n</ul>\n<p>You can play with the new compiler today right in your browser at https://astro.build/play. This REPL is just one example of what is now possible when you have a fast, runs-anywhere compiler.</p>\n<p>Shout out to <Mention name=\"nate\" /> who did an incredible job with this project.</p>\n<h2 id=\"components-in-markdown\"><a href=\"#components-in-markdown\">Components in Markdown</a></h2>\n<p>Our most requested feature <em><strong>by far</strong></em> has been the ability to use components directly in Markdown. After months of work, we’re excited to announce that this feature is finally coming to Astro.</p>\n<p>Starting in v0.21.0, you can import components inside of your Markdown frontmatter via an optional <code is:raw>setup</code> script. Once imported, your components can be used anywhere on the page:</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #C9D1D9\">---</span></span>\n<span class=\"line\"><span style=\"color: #7EE787\">title</span><span style=\"color: #C9D1D9\">: </span><span style=\"color: #A5D6FF\">'Astro 0.21 Early Preview'</span></span>\n<span class=\"line\"><span style=\"color: #7EE787\">setup</span><span style=\"color: #C9D1D9\">: </span><span style=\"color: #FF7B72\">|</span></span>\n<span class=\"line\"><span style=\"color: #A5D6FF\"> import Logo from '../components/Logo.astro';</span></span>\n<span class=\"line\"><span style=\"color: #A5D6FF\"> import ReactCounter from '../components/Counter.jsx';</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\">---</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color: #79C0FF; font-weight: bold\"># Astro now supports components in Markdown!</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><Logo /></span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color: #FFA657\">-</span><span style=\"color: #C9D1D9\"> Back to markdown here. </span></span>\n<span class=\"line\"><span style=\"color: #FFA657\">-</span><span style=\"color: #C9D1D9\"> Supports static Astro components.</span></span>\n<span class=\"line\"><span style=\"color: #FFA657\">-</span><span style=\"color: #C9D1D9\"> Supports dynamic React/Vue/Svelte components!</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><ReactCounter start={0} client:load /> </span></span></code></pre>\n<p>This new <code is:raw>setup</code> script was designed for maximum flexibility. We’ll keep improving this API going forward with planned support for default components, default layouts, and markdown component overrides.</p>\n<h2 id=\"hmr-meet-html\"><a href=\"#hmr-meet-html\">HMR, meet HTML</a></h2>\n<p>Starting in v0.21.0, Astro will support full HMR for Astro components and pages. Change any <code is:raw>.astro</code> file in your codebase, and watch the dev server update the page without a full refresh and without losing any client state.</p>\n<p>Astro has always supported powerful HMR updates for client-side JavaScript components like React, Preact, Svelte, Vue, and Solid.js. But adding this for Astro was a fun challenge because Astro components are just static HTML. Our “Zero JavaScript” approach meant that there was no “Astro runtime” to hook into for updates. We had to get creative.</p>\n<p>Now, Astro’s dev server sends HTML updates to the browser and then runs a small script to diff those updates against the current page. This creates a more granular, component-level HMR update that won’t impact the rest of the page.</p>\n<h2 id=\"try-it-today\"><a href=\"#try-it-today\">Try it today</a></h2>\n<p>If you’ve read this far, we’d love your help trying out the latest release before launch. You can try out our latest release today <a href=\"https://gitpod.io#snapshot/5e7cf2f1-8108-4fa5-99d3-ed8de70d8c23\">in the browser</a> or by running <code is:raw>npm install astro@next--compiler</code> in a new project directory. You can follow our progress and leave feedback in the <code is:raw>next</code> PR on GitHub: https://github.com/withastro/astro/pull/1406</p>\n<p>Leave feedback, report bugs, and get involved with Astro’s development in our <a href=\"https://astro.build/chat\">Discord server</a>. You can also <a href=\"https://twitter.com/astrodotbuild\">follow along</a> on Twitter.</p>\n<Note type=\"tip\">\n<p>Keep your eyes to the sky Astronaut! 🧑🚀🚀</p>\n<p>There will be more news on v0.21 soon.</p>\n</Note>"
},
{
"headers": [
{
"depth": 2,
"slug": "dynamic-file-routes",
"text": "Dynamic File Routes"
},
{
"depth": 2,
"slug": "automatic-xss-protection",
"text": "Automatic XSS Protection"
},
{
"depth": 2,
"slug": "new-sethtml-and-settext-directives",
"text": "New set:html and set:text directives"
},
{
"depth": 2,
"slug": "safe-access-to-sensitive-environment-variables",
"text": "Safe access to sensitive environment variables"
},
{
"depth": 2,
"slug": "better-builds-with-vite-v28",
"text": "Better builds with Vite v2.8"
},
{
"depth": 2,
"slug": "better-stability-with-astrocompiler-v011",
"text": "Better stability with @astro/compiler v0.11"
},
{
"depth": 2,
"slug": "better-build-performance",
"text": "Better build performance"
},
{ "depth": 2, "slug": "", "text": "👋" }
],
"source": "\n**Astro v0.23.0** has just been released with some new features and highlights:\n\n- [Dynamic File Routes](#dynamic-file-routes)\n- [Automatic XSS Protection](#automatic-xss-protection)\n- [New `set:html` and `set:text` directives](#new-sethtml-and-settext-directives)\n- [Safe access to sensitive environment variables](#safe-access-to-sensitive-environment-variables)\n- [Better builds with Vite v2.8](#better-builds-with-vite-v28)\n- [Better stability with @astro/compiler v0.11](#better-stability-with-astrocompiler-v011)\n- [Better build performance with `--experimental-static-builds`](#better-build-performance)\n\n## Dynamic File Routes\n\nYou can now build dynamic, non-HTML files in your project by using Astro's new **file routes**. Use file routes to dynamically generate files during your build for things like JSON, XML, or even non-text assets like images. This feature has been one of our most requested since the early days of Astro!\n\nTo create a file route inside of your Astro project, create a new JavaScript or TypeScript file inside of your `src/pages` directory. File routes leverage Astro's existing file-based router, so be sure to include the final built file extension in the filename.\n\n\n```js\n// Example: src/pages/builtwith.json.ts\n// Outputs: /builtwith.json\n\n// File routes export a get() function, which gets called to generate the file.\n// Return an object with `body` to save the file contents in your final build.\nexport async function get() {\n return {\n body: JSON.stringify({\n name: 'Astro',\n url: 'https://astro.build/',\n }),\n };\n}\n```\n\nThis feature is only available with the `--experimental-static-build` flag. [To learn more, check out the docs.](https://docs.astro.build/en/core-concepts/astro-pages/#non-html-pages)\n\n## Automatic XSS Protection\n\nAstro v0.23 begins our migration towards automatic HTML escaping inside of Astro template expressions. This new feature will protect you from accidentally injecting untrusted HTML onto your page. Without it, you open yourself up to Cross Site Scripting (XSS) attacks where malicious users can hijack your site to run untrusted or unexpected code on the page.\n\n```astro\n<!-- Examples of untrusted HTML injection -->\n<div>{`<span>Hello, dangerous HTML</span>`}</div>\n<div>{`<script>alert('oh no');</script>`}</div>\n<div>{untrustedHtml}</div>\n```\n\nThanks to React and other component-based UI libraries, XSS vulnerabilities are becoming a thing of the past. Astro is excited to meet this same bar of zero-effort, built-in, automatic XSS protection.\n\nTo help our users migrate, Astro v0.23 will log a warning to the console when unescaped HTML is encountered inside of a template expression. In the next version, template expressions will always escape their contents.\n\n## New `set:html` and `set:text` directives\n\nTwo new directives are introduced to support better HTML injection when you need it. As we covered in the previous section, setting HTML directly is risky. However, in some special cases it may be required. Astro created the new `set:html` directive for those cases. You can think of it like React's `dangerouslySetInnerHTML`.\n\n```astro\n<!-- Examples of explicit HTML setting -->\n<div set:html={`<span>Hello, trusted or already escaped HTML</span>`}></div>\n<div set:html={`<script>alert('oh yes');</script>`}></div>\n<div set:html={trustedOrAlreadyEscapedHtml}></div>\n```\n\nIf you don't want a `<div>` wrapper, you can also use `set:html` on the Fragment component for zero wrapping HTML:\n\n```\n- {`<span>Hello, dangerous HTML</span>`}\n+ <Fragment set:html={`<span>Hello, trusted or already escaped HTML</span>`} />\n```\n\n`set:text` is also available to set the element text directly, similar to setting the `.text` property on an element in the browser. Together, these two directives give you a bit more control over the Astro output when you need it.\n\n## Safe access to sensitive environment variables\n\nFor security, Vite only loads environment variables that are explicitly opted-in to be exposed with a `PUBLIC_` prefix. This restriction makes sense in the browser, and protects you from accidentally leaking secret tokens and values. However, it also meant that private environment variables weren't available to you at all, even locally inside of server-rendered Astro components.\n\n<p>In Astro v0.23, <code>import.meta.env</code> now lets you access your private environment variables inside of Astro and anytime code renders locally or on the server. Astro will continue to protect you on the client, and only expose <code>PUBLIC_</code> variables to the frontend that ships to your users.</p>\n\n```js\n// DB_PASSWORD is only available when building your site.\n// If any code tried to run this in the browser, it will be empty.\nconst data = await db(import.meta.env.DB_PASSWORD);\n\n// PUBLIC_POKEAPI is available anywhere, thanks to the PUBLIC_ prefix!\nconst data = fetch(`${import.meta.env.PUBLIC_POKEAPI}/pokemon/squirtle`);\n```\n\nSee our [Environment Variables documentation](https://docs.astro.build/en/guides/environment-variables/) to learn more.\n\n## Better builds with Vite v2.8\n\nAstro v0.23 comes with an internal Vite upgrade that brings new features and huge stability improvements. Vite's npm package handling got a boost as well, so that more packages should work in more projects. [Check out their changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) to learn more.\n\n## Better stability with @astro/compiler v0.11\n\nAstro v0.23 also got a compiler upgrade which should result in noticeable performance and stability improvements across all projects. [Check out the changelog](https://github.com/withastro/compiler/releases) to learn more.\n\n## Better build performance\nYou may have noticed the reference to `--experimental-static-build` above, and the fact that some new features are only available behind this flag. This flag is not new in v0.23, but it continues to improve as we get closer to an official release of the feature. This new \"static build\" strategy will soon become the default build behavior in Astro.\n\nIf you haven't tried the `--experimental-static-build` flag out yet in your build, please give it a try and leave us feedback in Discord. Check out our blog post [Scaling Astro to 10,000+ Pages](/blog/experimental-static-build) to learn more about this future build strategy for Astro.\n\n\n## 👋\n\nThank you for reading! [Follow us on Twitter](https://twitter.com/astrodotbuild) to stay up to date on Astro releases and news. \n\nIf you've read this far, you should definitely [join us on Discord.](https://astro.build/chat) ;)\n",
"html": "<p><strong>Astro v0.23.0</strong> has just been released with some new features and highlights:</p>\n<ul>\n<li><a href=\"#dynamic-file-routes\">Dynamic File Routes</a></li>\n<li><a href=\"#automatic-xss-protection\">Automatic XSS Protection</a></li>\n<li><a href=\"#new-sethtml-and-settext-directives\">New <code is:raw>set:html</code> and <code is:raw>set:text</code> directives</a></li>\n<li><a href=\"#safe-access-to-sensitive-environment-variables\">Safe access to sensitive environment variables</a></li>\n<li><a href=\"#better-builds-with-vite-v28\">Better builds with Vite v2.8</a></li>\n<li><a href=\"#better-stability-with-astrocompiler-v011\">Better stability with @astro/compiler v0.11</a></li>\n<li><a href=\"#better-build-performance\">Better build performance with <code is:raw>--experimental-static-builds</code></a></li>\n</ul>\n<h2 id=\"dynamic-file-routes\"><a href=\"#dynamic-file-routes\">Dynamic File Routes</a></h2>\n<p>You can now build dynamic, non-HTML files in your project by using Astro’s new <strong>file routes</strong>. Use file routes to dynamically generate files during your build for things like JSON, XML, or even non-text assets like images. This feature has been one of our most requested since the early days of Astro!</p>\n<p>To create a file route inside of your Astro project, create a new JavaScript or TypeScript file inside of your <code is:raw>src/pages</code> directory. File routes leverage Astro’s existing file-based router, so be sure to include the final built file extension in the filename.</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #8B949E\">// Example: src/pages/builtwith.json.ts</span></span>\n<span class=\"line\"><span style=\"color: #8B949E\">// Outputs: /builtwith.json</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color: #8B949E\">// File routes export a get() function, which gets called to generate the file.</span></span>\n<span class=\"line\"><span style=\"color: #8B949E\">// Return an object with `body` to save the file contents in your final build.</span></span>\n<span class=\"line\"><span style=\"color: #FF7B72\">export</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">async</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">function</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #D2A8FF\">get</span><span style=\"color: #C9D1D9\">() {</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">return</span><span style=\"color: #C9D1D9\"> {</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> body: </span><span style=\"color: #79C0FF\">JSON</span><span style=\"color: #C9D1D9\">.</span><span style=\"color: #79C0FF\">stringify</span><span style=\"color: #C9D1D9\">({</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> name: </span><span style=\"color: #A5D6FF\">'Astro'</span><span style=\"color: #C9D1D9\">,</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> url: </span><span style=\"color: #A5D6FF\">'https://astro.build/'</span><span style=\"color: #C9D1D9\">,</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> }),</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"> };</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\">}</span></span></code></pre>\n<p>This feature is only available with the <code is:raw>--experimental-static-build</code> flag. <a href=\"https://docs.astro.build/en/core-concepts/astro-pages/#non-html-pages\">To learn more, check out the docs.</a></p>\n<h2 id=\"automatic-xss-protection\"><a href=\"#automatic-xss-protection\">Automatic XSS Protection</a></h2>\n<p>Astro v0.23 begins our migration towards automatic HTML escaping inside of Astro template expressions. This new feature will protect you from accidentally injecting untrusted HTML onto your page. Without it, you open yourself up to Cross Site Scripting (XSS) attacks where malicious users can hijack your site to run untrusted or unexpected code on the page.</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #8B949E\"><!-- Examples of untrusted HTML injection --></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\">>{</span><span style=\"color: #A5D6FF\">`<span>Hello, dangerous HTML</span>`</span><span style=\"color: #C9D1D9\">}</</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\">></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\">>{</span><span style=\"color: #A5D6FF\">`<script>alert('oh no');</script>`</span><span style=\"color: #C9D1D9\">}</</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\">></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\">>{untrustedHtml}</</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\">></span></span></code></pre>\n<p>Thanks to React and other component-based UI libraries, XSS vulnerabilities are becoming a thing of the past. Astro is excited to meet this same bar of zero-effort, built-in, automatic XSS protection.</p>\n<p>To help our users migrate, Astro v0.23 will log a warning to the console when unescaped HTML is encountered inside of a template expression. In the next version, template expressions will always escape their contents.</p>\n<h2 id=\"new-sethtml-and-settext-directives\"><a href=\"#new-sethtml-and-settext-directives\">New <code is:raw>set:html</code> and <code is:raw>set:text</code> directives</a></h2>\n<p>Two new directives are introduced to support better HTML injection when you need it. As we covered in the previous section, setting HTML directly is risky. However, in some special cases it may be required. Astro created the new <code is:raw>set:html</code> directive for those cases. You can think of it like React’s <code is:raw>dangerouslySetInnerHTML</code>.</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #8B949E\"><!-- Examples of explicit HTML setting --></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">set:html</span><span style=\"color: #C9D1D9\">={</span><span style=\"color: #A5D6FF\">`<span>Hello, trusted or already escaped HTML</span>`</span><span style=\"color: #C9D1D9\">}></</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\">></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">set:html</span><span style=\"color: #C9D1D9\">={</span><span style=\"color: #A5D6FF\">`<script>alert('oh yes');</script>`</span><span style=\"color: #C9D1D9\">}></</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\">></span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\"><</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">set:html</span><span style=\"color: #C9D1D9\">={trustedOrAlreadyEscapedHtml}></</span><span style=\"color: #7EE787\">div</span><span style=\"color: #C9D1D9\">></span></span></code></pre>\n<p>If you don’t want a <code is:raw><div></code> wrapper, you can also use <code is:raw>set:html</code> on the Fragment component for zero wrapping HTML:</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #c9d1d9\">- {`<span>Hello, dangerous HTML</span>`}</span></span>\n<span class=\"line\"><span style=\"color: #c9d1d9\">+ <Fragment set:html={`<span>Hello, trusted or already escaped HTML</span>`} /></span></span></code></pre>\n<p><code is:raw>set:text</code> is also available to set the element text directly, similar to setting the <code is:raw>.text</code> property on an element in the browser. Together, these two directives give you a bit more control over the Astro output when you need it.</p>\n<h2 id=\"safe-access-to-sensitive-environment-variables\"><a href=\"#safe-access-to-sensitive-environment-variables\">Safe access to sensitive environment variables</a></h2>\n<p>For security, Vite only loads environment variables that are explicitly opted-in to be exposed with a <code is:raw>PUBLIC_</code> prefix. This restriction makes sense in the browser, and protects you from accidentally leaking secret tokens and values. However, it also meant that private environment variables weren’t available to you at all, even locally inside of server-rendered Astro components.</p>\n<p>In Astro v0.23, <code>import.meta.env</code> now lets you access your private environment variables inside of Astro and anytime code renders locally or on the server. Astro will continue to protect you on the client, and only expose <code>PUBLIC_</code> variables to the frontend that ships to your users.</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #8B949E\">// DB_PASSWORD is only available when building your site.</span></span>\n<span class=\"line\"><span style=\"color: #8B949E\">// If any code tried to run this in the browser, it will be empty.</span></span>\n<span class=\"line\"><span style=\"color: #FF7B72\">const</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">data</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">=</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">await</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #D2A8FF\">db</span><span style=\"color: #C9D1D9\">(</span><span style=\"color: #FF7B72\">import</span><span style=\"color: #C9D1D9\">.</span><span style=\"color: #79C0FF\">meta</span><span style=\"color: #C9D1D9\">.env.</span><span style=\"color: #79C0FF\">DB_PASSWORD</span><span style=\"color: #C9D1D9\">);</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color: #8B949E\">// PUBLIC_POKEAPI is available anywhere, thanks to the PUBLIC_ prefix!</span></span>\n<span class=\"line\"><span style=\"color: #FF7B72\">const</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #79C0FF\">data</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #FF7B72\">=</span><span style=\"color: #C9D1D9\"> </span><span style=\"color: #D2A8FF\">fetch</span><span style=\"color: #C9D1D9\">(</span><span style=\"color: #A5D6FF\">`${</span><span style=\"color: #FF7B72\">import</span><span style=\"color: #A5D6FF\">.</span><span style=\"color: #79C0FF\">meta</span><span style=\"color: #A5D6FF\">.</span><span style=\"color: #C9D1D9\">env</span><span style=\"color: #A5D6FF\">.</span><span style=\"color: #79C0FF\">PUBLIC_POKEAPI</span><span style=\"color: #A5D6FF\">}/pokemon/squirtle`</span><span style=\"color: #C9D1D9\">);</span></span></code></pre>\n<p>See our <a href=\"https://docs.astro.build/en/guides/environment-variables/\">Environment Variables documentation</a> to learn more.</p>\n<h2 id=\"better-builds-with-vite-v28\"><a href=\"#better-builds-with-vite-v28\">Better builds with Vite v2.8</a></h2>\n<p>Astro v0.23 comes with an internal Vite upgrade that brings new features and huge stability improvements. Vite’s npm package handling got a boost as well, so that more packages should work in more projects. <a href=\"https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md\">Check out their changelog</a> to learn more.</p>\n<h2 id=\"better-stability-with-astrocompiler-v011\"><a href=\"#better-stability-with-astrocompiler-v011\">Better stability with @astro/compiler v0.11</a></h2>\n<p>Astro v0.23 also got a compiler upgrade which should result in noticeable performance and stability improvements across all projects. <a href=\"https://github.com/withastro/compiler/releases\">Check out the changelog</a> to learn more.</p>\n<h2 id=\"better-build-performance\"><a href=\"#better-build-performance\">Better build performance</a></h2>\n<p>You may have noticed the reference to <code is:raw>--experimental-static-build</code> above, and the fact that some new features are only available behind this flag. This flag is not new in v0.23, but it continues to improve as we get closer to an official release of the feature. This new “static build” strategy will soon become the default build behavior in Astro.</p>\n<p>If you haven’t tried the <code is:raw>--experimental-static-build</code> flag out yet in your build, please give it a try and leave us feedback in Discord. Check out our blog post <a href=\"/blog/experimental-static-build\">Scaling Astro to 10,000+ Pages</a> to learn more about this future build strategy for Astro.</p>\n<h2 id=\"\"><a href=\"#\">👋</a></h2>\n<p>Thank you for reading! <a href=\"https://twitter.com/astrodotbuild\">Follow us on Twitter</a> to stay up to date on Astro releases and news.</p>\n<p>If you’ve read this far, you should definitely <a href=\"https://astro.build/chat\">join us on Discord.</a> ;)</p>"
},
{
"headers": [],
"source": "The Astro team proudly presents the new [Astro REPL:](https://astro.build/play) compile Astro right in your browser. Use it to explore Astro's HTML-based component language, debug issues, or even prototype an entire webpage. It's powered by Astro’s **new WASM compiler** (written in Go) that runs anywhere and can rebuild files in an instant.\n\n![astro](/assets/blog/astro-repl/astro-repl-screenshot.jpg)\n\n<div style=\"display: flex; justify-content: center;\">\n <PixelLink href=\"https://astro.build/play\">Try the REPL now!</PixelLink>\n</div>\n\n<Note>\n\nTo learn more about our new compiler, [join us on Discord](https://astro.build/chat) and tune in to [Astro Demo Days](https://www.youtube.com/watch?v=-ExcBJrXOd8) next Monday, September 20, 2021 at 11am PST.\n\n</Note>\n",
"html": "<p>The Astro team proudly presents the new <a href=\"https://astro.build/play\">Astro REPL:</a> compile Astro right in your browser. Use it to explore Astro’s HTML-based component language, debug issues, or even prototype an entire webpage. It’s powered by Astro’s <strong>new WASM compiler</strong> (written in Go) that runs anywhere and can rebuild files in an instant.</p>\n<p><img src=\"/assets/blog/astro-repl/astro-repl-screenshot.jpg\" alt=\"astro\"></p>\n<div style=\"display: flex; justify-content: center;\">\n <PixelLink href=\"https://astro.build/play\">Try the REPL now!</PixelLink>\n</div>\n<Note>\n<p>To learn more about our new compiler, <a href=\"https://astro.build/chat\">join us on Discord</a> and tune in to <a href=\"https://www.youtube.com/watch?v=-ExcBJrXOd8\">Astro Demo Days</a> next Monday, September 20, 2021 at 11am PST.</p>\n</Note>"
},
{
"headers": [
{
"depth": 2,
"slug": "the-next-astro-release",
"text": "The next Astro release"
}
],
"source": "**Astro Demo Day** was today! We had **4** amazing talks, including one big announcement on the future direction of Astro. If you missed the livestream, fear not! You can see the full event [on YouTube](https://www.youtube.com/watch?v=-ExcBJrXOd8) or watch the talks in any order by visiting the links below. Subscribe to the [Astro YouTube channel](https://www.youtube.com/channel/UCeFjmvZEK-MoefuYXptnX6A) to make sure you don't miss our next demo day. Today's demos were:\n\n* [Developing the Astro VSCode extension](https://youtu.be/-ExcBJrXOd8?t=109) 🧑💻 from [Matthew Phillips](https://twitter.com/matthewcp)\n* [Integrating a CMS - Astro+Forestry+Netlify](https://youtu.be/-ExcBJrXOd8?t=763) 🌳 from [Tony Sullivan](https://twitter.com/navillus_dev)\n* [The Astro SEO component](https://youtu.be/-ExcBJrXOd8?t=1384) 🗃 from [Jonas Schumacher](https://twitter.com/jonasmerlin1)\n* [Astro's v2 Compiler and a Surprise](https://youtu.be/-ExcBJrXOd8?t=2070) 🪄 from [Drew Powers](https://twitter.com/drwpow) and [Nate Moore](https://twitter.com/n_moore)\n\nAs always, our Discord community brought the hype:\n\n<img alt=\"Messages from the Demo Day chat room on Discord\" src=\"/assets/blog/demo-day-2021-09/discord-chat.jpg\" class=\"chat-messages\" />\n\n## The next Astro release\n\nAstro's next release will be our biggest ever, featuring a new WASM-powered compiler plus a new Vite-powered runtime. You can expect a preview release on [npm](https://www.npmjs.com/package/astro) later today or tomorrow. Over the next few weeks, we will continue to polish the new code as we prepare for its official release!\n\nIf you haven't already, follow [@astrodotbuild](https://twitter.com/astrodotbuild) on Twitter for more news and announcements, and [join our Discord](https://astro.build/chat) to learn how you can try out the new previous release.\n",
"html": "<p><strong>Astro Demo Day</strong> was today! We had <strong>4</strong> amazing talks, including one big announcement on the future direction of Astro. If you missed the livestream, fear not! You can see the full event <a href=\"https://www.youtube.com/watch?v=-ExcBJrXOd8\">on YouTube</a> or watch the talks in any order by visiting the links below. Subscribe to the <a href=\"https://www.youtube.com/channel/UCeFjmvZEK-MoefuYXptnX6A\">Astro YouTube channel</a> to make sure you don’t miss our next demo day. Today’s demos were:</p>\n<ul>\n<li><a href=\"https://youtu.be/-ExcBJrXOd8?t=109\">Developing the Astro VSCode extension</a> 🧑💻 from <a href=\"https://twitter.com/matthewcp\">Matthew Phillips</a></li>\n<li><a href=\"https://youtu.be/-ExcBJrXOd8?t=763\">Integrating a CMS - Astro+Forestry+Netlify</a> 🌳 from <a href=\"https://twitter.com/navillus_dev\">Tony Sullivan</a></li>\n<li><a href=\"https://youtu.be/-ExcBJrXOd8?t=1384\">The Astro SEO component</a> 🗃 from <a href=\"https://twitter.com/jonasmerlin1\">Jonas Schumacher</a></li>\n<li><a href=\"https://youtu.be/-ExcBJrXOd8?t=2070\">Astro’s v2 Compiler and a Surprise</a> 🪄 from <a href=\"https://twitter.com/drwpow\">Drew Powers</a> and <a href=\"https://twitter.com/n_moore\">Nate Moore</a></li>\n</ul>\n<p>As always, our Discord community brought the hype:</p>\n<img alt=\"Messages from the Demo Day chat room on Discord\" src=\"/assets/blog/demo-day-2021-09/discord-chat.jpg\" class=\"chat-messages\" />\n<h2 id=\"the-next-astro-release\"><a href=\"#the-next-astro-release\">The next Astro release</a></h2>\n<p>Astro’s next release will be our biggest ever, featuring a new WASM-powered compiler plus a new Vite-powered runtime. You can expect a preview release on <a href=\"https://www.npmjs.com/package/astro\">npm</a> later today or tomorrow. Over the next few weeks, we will continue to polish the new code as we prepare for its official release!</p>\n<p>If you haven’t already, follow <a href=\"https://twitter.com/astrodotbuild\">@astrodotbuild</a> on Twitter for more news and announcements, and <a href=\"https://astro.build/chat\">join our Discord</a> to learn how you can try out the new previous release.</p>"
},
{
"headers": [
{ "depth": 2, "slug": "migrate-to-v021", "text": "Migrate to v0.21" },
{
"depth": 2,
"slug": "why-rewrite-why-now",
"text": "Why Rewrite? Why Now?"
}
],
"source": "\nAstro v0.21.0 is finally here! This is by far our biggest release ever, including a ground-up rewrite of some major Astro internals. After months of development and public testing, we are so excited to get this new version of Astro into your hands, featuring:\n\n- A new Astro compiler, **written in [Go](https://golang.org/)**\n- A new build engine, **powered by [Vite](http://vitejs.dev/)**\n- [Components in Markdown](https://docs.astro.build/migration/0.21.0#components-in-markdown) (like MDX, but without the JSX)\n- Improved npm package support (also powered by Vite!)\n- Improved errors, stack traces, HMR, and overall dev experience\n- A grab-bag of other new features for you to explore\n\n[Try Astro v0.21.0 today](https://astro.new) right in your browser. Or, run `npm install astro@latest` in any new or existing project directory to get started. [Read our v0.21 Early Preview](/blog/astro-021-preview) post for more details on what is included in this release.\n\n<p>\n Thank you to every contributor and early preview tester who made this release possible. Thank you to <Mention name=\"nate\" />, <Mention name=\"matthew\" />, and <Mention name=\"drew\" /> for your tireless work over the last few months getting v0.21 out the door.\n</p>\n\n**With these new long-term investments, Astro isn't going anywhere.** Next stop, v1.0!\n\n## Migrate to v0.21\n\nVery little has changed in the v0.21.0 API to make your migration as easy as possible. Check out the new [v0.21 migration guide](https://docs.astro.build/migration/0.21.0) for a full breakdown of meaningful changes.\n\nLeave feedback, report bugs, and get involved with Astro's development in our [Discord server](https://astro.build/chat). You can also [follow along](https://twitter.com/astrodotbuild) with our community on Twitter.\n\n## Why Rewrite? Why Now?\n\nMost people don't know this, but the first version of the Astro compiler was originally forked from [Svelte](https://svelte.dev/docs#Compile_time). Forking an existing compiler let us get up and running quickly, but cost us some unneccesary complexity that only grew over time.\n\nBig rewrites are rarely easy, and this one was no exception. The timing was right for us to make a big investment in Astro now and deprecate our original forked compiler in favor of something designed with Astro in mind. This new compiler (written in Go) and new Vite-powered build engine will form a stable foundation that will last this project for years to come.\n\n<Note type=\"tip\">\n\nA huge thank you to Rich Harris and the entire Svelte team—you built an incredible open source compiler and it served Astro so well in its early days!\n\n</Note>\n",
"html": "<p>Astro v0.21.0 is finally here! This is by far our biggest release ever, including a ground-up rewrite of some major Astro internals. After months of development and public testing, we are so excited to get this new version of Astro into your hands, featuring:</p>\n<ul>\n<li>A new Astro compiler, <strong>written in <a href=\"https://golang.org/\">Go</a></strong></li>\n<li>A new build engine, <strong>powered by <a href=\"http://vitejs.dev/\">Vite</a></strong></li>\n<li><a href=\"https://docs.astro.build/migration/0.21.0#components-in-markdown\">Components in Markdown</a> (like MDX, but without the JSX)</li>\n<li>Improved npm package support (also powered by Vite!)</li>\n<li>Improved errors, stack traces, HMR, and overall dev experience</li>\n<li>A grab-bag of other new features for you to explore</li>\n</ul>\n<p><a href=\"https://astro.new\">Try Astro v0.21.0 today</a> right in your browser. Or, run <code is:raw>npm install astro@latest</code> in any new or existing project directory to get started. <a href=\"/blog/astro-021-preview\">Read our v0.21 Early Preview</a> post for more details on what is included in this release.</p>\n<p>\n Thank you to every contributor and early preview tester who made this release possible. Thank you to <Mention name=\"nate\" />, <Mention name=\"matthew\" />, and <Mention name=\"drew\" /> for your tireless work over the last few months getting v0.21 out the door.\n</p>\n<p><strong>With these new long-term investments, Astro isn’t going anywhere.</strong> Next stop, v1.0!</p>\n<h2 id=\"migrate-to-v021\"><a href=\"#migrate-to-v021\">Migrate to v0.21</a></h2>\n<p>Very little has changed in the v0.21.0 API to make your migration as easy as possible. Check out the new <a href=\"https://docs.astro.build/migration/0.21.0\">v0.21 migration guide</a> for a full breakdown of meaningful changes.</p>\n<p>Leave feedback, report bugs, and get involved with Astro’s development in our <a href=\"https://astro.build/chat\">Discord server</a>. You can also <a href=\"https://twitter.com/astrodotbuild\">follow along</a> with our community on Twitter.</p>\n<h2 id=\"why-rewrite-why-now\"><a href=\"#why-rewrite-why-now\">Why Rewrite? Why Now?</a></h2>\n<p>Most people don’t know this, but the first version of the Astro compiler was originally forked from <a href=\"https://svelte.dev/docs#Compile_time\">Svelte</a>. Forking an existing compiler let us get up and running quickly, but cost us some unneccesary complexity that only grew over time.</p>\n<p>Big rewrites are rarely easy, and this one was no exception. The timing was right for us to make a big investment in Astro now and deprecate our original forked compiler in favor of something designed with Astro in mind. This new compiler (written in Go) and new Vite-powered build engine will form a stable foundation that will last this project for years to come.</p>\n<Note type=\"tip\">\n<p>A huge thank you to Rich Harris and the entire Svelte team—you built an incredible open source compiler and it served Astro so well in its early days!</p>\n</Note>"
},
{
"headers": [],
"source": "\nAstro is about to get a lot faster! Our new build optimization process is ready to try out in Astro today:\n\n```shell\nastro build --experimental-static-build\n```\n\nOur new build system can scale to tens, or even hundreds, of thousands of pages. If you hang out in our [Discord](https://astro.build/chat) or pay attention to recent releases you might have seen a lot of discussion about a \"static build\". Our new implementation of `astro build` does 2 things:\n\n- Improves build times by up to 75%.\n- Lowers memory usage when building very large sites (10,000+ pages).\n\nThis new build works by first building an SSR version of your app and then rendering each page to HTML. Because the site is pre-optimized it can render each page in parallel and will never run out of memory.\n\nIf you are a current Astro user please try out this new build by passing the flag in your `build` script.\n\nThis build approach will remain flagged for the next few releases until we iron out any issues, at which point we plan to promote it to be the default `astro build` command. Please help us by reporting issues you encounter, either in the [Discord](https://astro.build/chat) or by filing an [issue](https://github.com/withastro/astro/issues/new/choose).",
"html": "<p>Astro is about to get a lot faster! Our new build optimization process is ready to try out in Astro today:</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #C9D1D9\">astro build --experimental-static-build</span></span></code></pre>\n<p>Our new build system can scale to tens, or even hundreds, of thousands of pages. If you hang out in our <a href=\"https://astro.build/chat\">Discord</a> or pay attention to recent releases you might have seen a lot of discussion about a “static build”. Our new implementation of <code is:raw>astro build</code> does 2 things:</p>\n<ul>\n<li>Improves build times by up to 75%.</li>\n<li>Lowers memory usage when building very large sites (10,000+ pages).</li>\n</ul>\n<p>This new build works by first building an SSR version of your app and then rendering each page to HTML. Because the site is pre-optimized it can render each page in parallel and will never run out of memory.</p>\n<p>If you are a current Astro user please try out this new build by passing the flag in your <code is:raw>build</code> script.</p>\n<p>This build approach will remain flagged for the next few releases until we iron out any issues, at which point we plan to promote it to be the default <code is:raw>astro build</code> command. Please help us by reporting issues you encounter, either in the <a href=\"https://astro.build/chat\">Discord</a> or by filing an <a href=\"https://github.com/withastro/astro/issues/new/choose\">issue</a>.</p>"
},
{
"headers": [
{ "depth": 2, "slug": "getting-started", "text": "Getting Started" },
{ "depth": 2, "slug": "how-astro-works", "text": "How Astro Works" },
{
"depth": 2,
"slug": "embracing-the-pit-of-success",
"text": "Embracing the Pit of Success"
},
{
"depth": 2,
"slug": "long-term-sustainability",
"text": "Long-Term Sustainability"
}
],
"source": "There's a simple secret to building a faster website — *just ship less*. \n\nUnfortunately, modern web development has been trending in the opposite direction—towards *more.* More JavaScript, more features, more moving parts, and ultimately more complexity needed to keep it all running smoothly.\n\nToday I'm excited to publicly share Astro: a new kind of static site builder that delivers lightning-fast performance with a modern developer experience. To design Astro, we borrowed the best parts of our favorite tools and then added a few innovations of our own, including:\n\n- **Bring Your Own Framework (BYOF):** Build your site using React, Svelte, Vue, Preact, web components, or just plain ol' HTML + JavaScript.\n- **100% Static HTML, No JS:** Astro renders your entire page to static HTML, removing all JavaScript from your final build by default.\n- **On-Demand Components:** Need some JS? Astro can automatically hydrate interactive components when they become visible on the page. If the user never sees it, they never load it.\n- **Fully-Featured:** Astro supports TypeScript, Scoped CSS, CSS Modules, Sass, Tailwind, Markdown, MDX, and any of your favorite npm packages.\n- **SEO Enabled:** Automatic sitemaps, RSS feeds, pagination and collections take the pain out of SEO and syndication.\n\nThis post marks the first public beta release of Astro. **Missing features and bugs are still to be expected at this early stage.** There are still some months to go before an official 1.0 release, but there are already several fast sites built with Astro in production today. We would love your early feedback as we move towards a v1.0 release later this year.\n\n<Note>\n\n To learn more about Astro and start building your first site, check out [our Getting Started guide.](https://docs.astro.build)\n\n</Note>\n\n## Getting Started\n\nStarting a new project in Astro is easy:\n\n```shell\n# create your project\nmkdir new-project-directory\ncd new-project-directory\nnpm init astro\n\n# install your dependencies\nnpm install\n\n# start the dev server and open your browser\nnpm run dev\n```\n\n## How Astro Works\n\nAstro works a lot like a static site generator. If you have ever used Eleventy, Hugo, or Jekyll (or even a server-side web framework like Rails, Laravel, or Django) then you should feel right at home with Astro. \n\nIn Astro, you compose your website using UI components from your favorite JavaScript web framework (React, Svelte, Vue, etc). Astro renders your entire site to static HTML during the build. The result is a fully static website with all JavaScript removed from the final page. No monolithic JavaScript application required, just static HTML that loads as fast as possible in the browser regardless of how many UI components you used to generate it.\n\nOf course, sometimes client-side JavaScript is inevitable. Image carousels, shopping carts, and auto-complete search bars are just a few examples of things that require some JavaScript to run in the browser. This is where Astro really shines: When a component needs some JavaScript, Astro only loads that one component (and any dependencies). The rest of your site continues to exist as static, lightweight HTML.\n\nIn other full-stack web frameworks this level of per-component optimization would be impossible without loading the entire page in JavaScript, delaying interactivity. In Astro, this kind of [partial hydration](https://addyosmani.com/blog/rehydration/) is built into the tool itself. \n\nYou can even [automatically defer components](https://codepen.io/jonneal/full/ZELvMvw) to only load once they become visible on the page with the `:visible` modifier.\n\nThis new approach to web architecture is called [islands architecture](https://jasonformat.com/islands-architecture/). We didn't coin the term, but Astro may have perfected the technique. We are confident that an HTML-first, JavaScript-only-as-needed approach is the best solution for the majority of content-based websites.\n\n## Embracing the Pit of Success\n\n<Blockquote>\n <Fragment slot=\"quote\">\n A well-designed system makes it easy to do the right things and annoying (but not impossible) to do the wrong things\n </Fragment>\n\n <Fragment slot=\"cite\">Jeff Atwood, <a href=\"https://blog.codinghorror.com/falling-into-the-pit-of-success/\">Falling Into The Pit of Success</a></Fragment>\n</Blockquote>\n\n\nPoor performance is often framed as a failure of the developer, but we respectfully disagree. In many cases, poor performance is a failure of tooling. It should be difficult to build a slow website. \n\nAstro's main design principle is to lead developers into what [Rico Mariani](https://twitter.com/ricomariani) dubbed \"the pit of success\". It is our goal to build every site \"fast by default\" while also delivering a familiar, modern developer experience. \n\nBy building your site to static HTML by default, Astro makes it difficult (but never impossible 😉) to build a slow site.\n\n## Long-Term Sustainability\n\nAstro is built by the team of open source developers behind [Snowpack](https://snowpack.dev) and [Skypack](https://skypack.dev), with additional contributions from the community.\n\n**Astro is and always will be free.** It is an open source project released under the [MIT license](https://github.com/withastro/astro/blob/main/LICENSE). \n\nWe care deeply about building a more sustainable future for open source software. At the same time, we need to support Astro's development long-term. This requires money (donations alone aren't enough.) \n\nWe're inspired by the early success of projects like [Tailwind](https://tailwindcss.com/), [Rome](https://rome.tools/), [Remix](https://remix.run/), [Ionic](https://ionicframework.com/), and others who are experimenting with long-term financial sustainability on top of Open Source. Over the next year we'll be exploring how we can create a sustainable business to support a 100% free, open source Astro for years to come. \n\nIf your company is as excited about Astro as we are, [we'd love to hear from you.](https://astro.build/chat)\n\n<Note type=\"tip\">\n\n Finally, I'd like to give a **HUGE** thanks to the 300+ developers who joined our earliest private beta. Your feedback has been essential in shaping Astro into the tool it is today. If you're interested in getting involved (or just following along with development) please [join us on Discord.](https://astro.build/chat)\n\n</Note>\n",
"html": "<p>There’s a simple secret to building a faster website — <em>just ship less</em>.</p>\n<p>Unfortunately, modern web development has been trending in the opposite direction—towards <em>more.</em> More JavaScript, more features, more moving parts, and ultimately more complexity needed to keep it all running smoothly.</p>\n<p>Today I’m excited to publicly share Astro: a new kind of static site builder that delivers lightning-fast performance with a modern developer experience. To design Astro, we borrowed the best parts of our favorite tools and then added a few innovations of our own, including:</p>\n<ul>\n<li><strong>Bring Your Own Framework (BYOF):</strong> Build your site using React, Svelte, Vue, Preact, web components, or just plain ol’ HTML + JavaScript.</li>\n<li><strong>100% Static HTML, No JS:</strong> Astro renders your entire page to static HTML, removing all JavaScript from your final build by default.</li>\n<li><strong>On-Demand Components:</strong> Need some JS? Astro can automatically hydrate interactive components when they become visible on the page. If the user never sees it, they never load it.</li>\n<li><strong>Fully-Featured:</strong> Astro supports TypeScript, Scoped CSS, CSS Modules, Sass, Tailwind, Markdown, MDX, and any of your favorite npm packages.</li>\n<li><strong>SEO Enabled:</strong> Automatic sitemaps, RSS feeds, pagination and collections take the pain out of SEO and syndication.</li>\n</ul>\n<p>This post marks the first public beta release of Astro. <strong>Missing features and bugs are still to be expected at this early stage.</strong> There are still some months to go before an official 1.0 release, but there are already several fast sites built with Astro in production today. We would love your early feedback as we move towards a v1.0 release later this year.</p>\n<Note>\n<p>To learn more about Astro and start building your first site, check out <a href=\"https://docs.astro.build\">our Getting Started guide.</a></p>\n</Note>\n<h2 id=\"getting-started\"><a href=\"#getting-started\">Getting Started</a></h2>\n<p>Starting a new project in Astro is easy:</p>\n<pre is:raw class=\"astro-code\" style=\"background-color: #0d1117; overflow-x: auto;\"><code><span class=\"line\"><span style=\"color: #8B949E\"># create your project</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\">mkdir new-project-directory</span></span>\n<span class=\"line\"><span style=\"color: #79C0FF\">cd</span><span style=\"color: #C9D1D9\"> new-project-directory</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\">npm init astro</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color: #8B949E\"># install your dependencies</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\">npm install</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color: #8B949E\"># start the dev server and open your browser</span></span>\n<span class=\"line\"><span style=\"color: #C9D1D9\">npm run dev</span></span></code></pre>\n<h2 id=\"how-astro-works\"><a href=\"#how-astro-works\">How Astro Works</a></h2>\n<p>Astro works a lot like a static site generator. If you have ever used Eleventy, Hugo, or Jekyll (or even a server-side web framework like Rails, Laravel, or Django) then you should feel right at home with Astro.</p>\n<p>In Astro, you compose your website using UI components from your favorite JavaScript web framework (React, Svelte, Vue, etc). Astro renders your entire site to static HTML during the build. The result is a fully static website with all JavaScript removed from the final page. No monolithic JavaScript application required, just static HTML that loads as fast as possible in the browser regardless of how many UI components you used to generate it.</p>\n<p>Of course, sometimes client-side JavaScript is inevitable. Image carousels, shopping carts, and auto-complete search bars are just a few examples of things that require some JavaScript to run in the browser. This is where Astro really shines: When a component needs some JavaScript, Astro only loads that one component (and any dependencies). The rest of your site continues to exist as static, lightweight HTML.</p>\n<p>In other full-stack web frameworks this level of per-component optimization would be impossible without loading the entire page in JavaScript, delaying interactivity. In Astro, this kind of <a href=\"https://addyosmani.com/blog/rehydration/\">partial hydration</a> is built into the tool itself.</p>\n<p>You can even <a href=\"https://codepen.io/jonneal/full/ZELvMvw\">automatically defer components</a> to only load once they become visible on the page with the <code is:raw>:visible</code> modifier.</p>\n<p>This new approach to web architecture is called <a href=\"https://jasonformat.com/islands-architecture/\">islands architecture</a>. We didn’t coin the term, but Astro may have perfected the technique. We are confident that an HTML-first, JavaScript-only-as-needed approach is the best solution for the majority of content-based websites.</p>\n<h2 id=\"embracing-the-pit-of-success\"><a href=\"#embracing-the-pit-of-success\">Embracing the Pit of Success</a></h2>\n<Blockquote>\n <Fragment slot=\"quote\">\n A well-designed system makes it easy to do the right things and annoying (but not impossible) to do the wrong things\n </Fragment>\n<Fragment slot=\"cite\">\nJeff Atwood, \n<a href=\"https://blog.codinghorror.com/falling-into-the-pit-of-success/\">\nFalling Into The Pit of Success\n</a>\n</Fragment>\n</Blockquote>\n<p>Poor performance is often framed as a failure of the developer, but we respectfully disagree. In many cases, poor performance is a failure of tooling. It should be difficult to build a slow website.</p>\n<p>Astro’s main design principle is to lead developers into what <a href=\"https://twitter.com/ricomariani\">Rico Mariani</a> dubbed “the pit of success”. It is our goal to build every site “fast by default” while also delivering a familiar, modern developer experience.</p>\n<p>By building your site to static HTML by default, Astro makes it difficult (but never impossible 😉) to build a slow site.</p>\n<h2 id=\"long-term-sustainability\"><a href=\"#long-term-sustainability\">Long-Term Sustainability</a></h2>\n<p>Astro is built by the team of open source developers behind <a href=\"https://snowpack.dev\">Snowpack</a> and <a href=\"https://skypack.dev\">Skypack</a>, with additional contributions from the community.</p>\n<p><strong>Astro is and always will be free.</strong> It is an open source project released under the <a href=\"https://github.com/withastro/astro/blob/main/LICENSE\">MIT license</a>.</p>\n<p>We care deeply about building a more sustainable future for open source software. At the same time, we need to support Astro’s development long-term. This requires money (donations alone aren’t enough.)</p>\n<p>We’re inspired by the early success of projects like <a href=\"https://tailwindcss.com/\">Tailwind</a>, <a href=\"https://rome.tools/\">Rome</a>, <a href=\"https://remix.run/\">Remix</a>, <a href=\"https://ionicframework.com/\">Ionic</a>, and others who are experimenting with long-term financial sustainability on top of Open Source. Over the next year we’ll be exploring how we can create a sustainable business to support a 100% free, open source Astro for years to come.</p>\n<p>If your company is as excited about Astro as we are, <a href=\"https://astro.build/chat\">we’d love to hear from you.</a></p>\n<Note type=\"tip\">\n<p>Finally, I’d like to give a <strong>HUGE</strong> thanks to the 300+ developers who joined our earliest private beta. Your feedback has been essential in shaping Astro into the tool it is today. If you’re interested in getting involved (or just following along with development) please <a href=\"https://astro.build/chat\">join us on Discord.</a></p>\n</Note>"
},
{
"headers": [],
"source": "\nWe are thrilled to announce that [Netlify](https://www.netlify.com/?utm_campaign=devex-jl&utm_source=astro&utm_medium=blog) has become Astro's first corporate sponsor and official hosting partner, donating [$2,500 each month](https://opencollective.com/astrodotbuild) towards the ongoing open source maintenance and development of Astro.\n\nNetlify is the company responsible for kicking off the modern [Jamstack](https://jamstack.org/) movement. Today, their hosting + serverless platform is loved by developers around the world. [Astro](http://astro.build/) can build you a blazing-fast website, but you'll always need a great host like Netlify to deliver that snappy experience to your users.\n\nHere's what Jason told us about Astro:\n\n<Blockquote>\n\n <Sprite slot=\"logo\" name=\"logos/netlify\" height=\"48\" />\n\n <Fragment slot=\"quote\">\n\nAstro is tackling an extremely hard problem: **how do we keep the advantages of powerful frameworks but stop making end users pay the cost of developer experience?** Shipping only HTML and CSS for the vast majority of web content that doesn't need to be dynamic and only including JavaScript when it's actually necessary is a huge win for developers and users alike.\n </Fragment>\n\n <Fragment slot=\"cite\">\n \n [Jason Lengstorf](https://twitter.com/jlengstorf), VP of Developer Experience\n \n </Fragment>\n\n</Blockquote>\n\nAstro is honored and excited to have Netlify as our first official corporate sponsor. We are grateful for the support of Jason Lengstorf, Cassidy Williams, and the entire Netlify team for their help and evangelism. It's because of support from companies like Netlify that we are able to receive ongoing maintenance and keep developing Astro in an open, financially-sustainable way.\n\nOur first integration with Netlify will be to add the [\"Deploy with Netlify\"](https://www.netlify.com/blog/2016/11/29/introducing-the-deploy-to-netlify-button/) button to our official Astro starter templates. This will make it even easier to create new, hosted Astro websites in just a few clicks. Check out all of our batteries-included starter templates in the brand new [Astro Theme Showcase.](https://docs.astro.build/themes)\n\nThanks, Netlify!\n\n<Note title=\"Oh hey, PS...\">\n\nIf your company relies on free, open source software (hint: it almost definitely does!) please [donate to support Astro](https://opencollective.com/astrodotbuild) and other projects like it. \n\nYou can browse projects accepting funding on [Open Collective](https://opencollective.com/discover), [GitHub Sponsors](https://github.com/sponsors), or by running the `npm fund` command inside of any existing npm project.\n\n</Note>\n",
"html": "<p>We are thrilled to announce that <a href=\"https://www.netlify.com/?utm_campaign=devex-jl&utm_source=astro&utm_medium=blog\">Netlify</a> has become Astro’s first corporate sponsor and official hosting partner, donating <a href=\"https://opencollective.com/astrodotbuild\">$2,500 each month</a> towards the ongoing open source maintenance and development of Astro.</p>\n<p>Netlify is the company responsible for kicking off the modern <a href=\"https://jamstack.org/\">Jamstack</a> movement. Today, their hosting + serverless platform is loved by developers around the world. <a href=\"http://astro.build/\">Astro</a> can build you a blazing-fast website, but you’ll always need a great host like Netlify to deliver that snappy experience to your users.</p>\n<p>Here’s what Jason told us about Astro:</p>\n<Blockquote>\n <Sprite slot=\"logo\" name=\"logos/netlify\" height=\"48\" />\n <Fragment slot=\"quote\">\nAstro is tackling an extremely hard problem: \n<strong>how do we keep the advantages of powerful frameworks but stop making end users pay the cost of developer experience?</strong>\n Shipping only HTML and CSS for the vast majority of web content that doesn’t need to be dynamic and only including JavaScript when it’s actually necessary is a huge win for developers and users alike.\n\n</Fragment>\n <Fragment slot=\"cite\">\n<p><a href=\"https://twitter.com/jlengstorf\">Jason Lengstorf</a>, VP of Developer Experience</p>\n </Fragment>\n</Blockquote>\n<p>Astro is honored and excited to have Netlify as our first official corporate sponsor. We are grateful for the support of Jason Lengstorf, Cassidy Williams, and the entire Netlify team for their help and evangelism. It’s because of support from companies like Netlify that we are able to receive ongoing maintenance and keep developing Astro in an open, financially-sustainable way.</p>\n<p>Our first integration with Netlify will be to add the <a href=\"https://www.netlify.com/blog/2016/11/29/introducing-the-deploy-to-netlify-button/\">“Deploy with Netlify”</a> button to our official Astro starter templates. This will make it even easier to create new, hosted Astro websites in just a few clicks. Check out all of our batteries-included starter templates in the brand new <a href=\"https://docs.astro.build/themes\">Astro Theme Showcase.</a></p>\n<p>Thanks, Netlify!</p>\n<Note title=\"Oh hey, PS...\">\n<p>If your company relies on free, open source software (hint: it almost definitely does!) please <a href=\"https://opencollective.com/astrodotbuild\">donate to support Astro</a> and other projects like it.</p>\n<p>You can browse projects accepting funding on <a href=\"https://opencollective.com/discover\">Open Collective</a>, <a href=\"https://github.com/sponsors\">GitHub Sponsors</a>, or by running the <code is:raw>npm fund</code> command inside of any existing npm project.</p>\n</Note>"
},
{
"headers": [
{ "depth": 2, "slug": "what-is-astro", "text": "What is Astro?" },
{
"depth": 2,
"slug": "what-does-this-funding-mean-for-astro-users",
"text": "What does this funding mean for Astro users?"
},
{ "depth": 2, "slug": "join-us", "text": "Join us!" }
],
"source": "\n\nI am thrilled to announce the creation of **The Astro Technology Company** along with **$7M** in seed funding to help us build a better platform for web development. The round was led by Lightspeed Venture Partners with participation from Haystack, Gradient, and Uncorrelated Ventures. \n\nWith this funding, the core team has moved from [Skypack](https://www.skypack.dev/) (formerly Pika) and joined The Astro Technology Company to continue working on Astro, growing our open source community, and driving towards our upcoming v1.0 release.\n\n## **What is Astro?**\n\nAstro is a modern web build tool that helps you build fast websites, faster. Astro leverages a technique called [partial hydration](https://docs.astro.build/en/core-concepts/component-hydration/) to automatically eliminate unused JavaScript from your site, often reducing your overall payload by 90% or more. This makes Astro the perfect choice for content-focused websites like ecommerce, marketing, and blogs.\n\nAstro offers a modern, HTML-based component syntax that works across frameworks. React, Preact, Svelte, and Vue are all supported. Your existing components will continue to work in Astro. You can even mix frameworks when you need to, preventing that expensive rewrite when The Next Big Thing™️ comes along.\n\nThe Astro open source project launched in June 2021 and captured immediate buzz, taking home the “Ecosystem Innovation Award” at the [2021 Jamstack Awards.](https://jamstackconf.com/jammies/) Today, Astro supports 10,000+ users including developers at Google, Netlify, Firebase, DivRIOTS, and Monogram. The project is still young, but we have accomplished so much in such little time!\n\n## What does this funding mean for Astro users?\n\nThis funding will allow our team to continue to focus full-time on Astro, improving the developer experience and investing more resources towards our amazing ecosystem of 10,000+ users and 3,000+ community members. \n\n**Astro is and will always be MIT-licensed.** Our team has decades of combined open-source experience leading and maintaining projects like Skypack, Snowpack, Polymer, Microsite, Haunted, and PostCSS. I can’t over-state just how important open source software is to this team and we will continue to support a healthy open source ecosystem.\n\nAstro will continue to operate as an open source community project. We will continue to grow our sponsorship on Open Collective and invest in our amazing partners and sponsors. 100% of collected funds will continue to go directly back to our open source community members.\n\nOur goal is to grow Astro into the next great platform for web developers. We see Astro as so much more than just a build tool, and this funding will give us the resources to realize that vision. I can’t wait to share more about what we have planned for Astro over the next year!\n\n## Join us!\n\nLove web development? Love developer tooling? Love the thought of working with talented, thoughtful people full-time? [**We're hiring!**](/company)\n\nYou can also [join us on Discord](https://astro.build/chat) to learn more about Astro and the community behind it.\n",
"html": "<p>I am thrilled to announce the creation of <strong>The Astro Technology Company</strong> along with <strong>$7M</strong> in seed funding to help us build a better platform for web development. The round was led by Lightspeed Venture Partners with participation from Haystack, Gradient, and Uncorrelated Ventures.</p>\n<p>With this funding, the core team has moved from <a href=\"https://www.skypack.dev/\">Skypack</a> (formerly Pika) and joined The Astro Technology Company to continue working on Astro, growing our open source community, and driving towards our upcoming v1.0 release.</p>\n<h2 id=\"what-is-astro\"><a href=\"#what-is-astro\"><strong>What is Astro?</strong></a></h2>\n<p>Astro is a modern web build tool that helps you build fast websites, faster. Astro leverages a technique called <a href=\"https://docs.astro.build/en/core-concepts/component-hydration/\">partial hydration</a> to automatically eliminate unused JavaScript from your site, often reducing your overall payload by 90% or more. This makes Astro the perfect choice for content-focused websites like ecommerce, marketing, and blogs.</p>\n<p>Astro offers a modern, HTML-based component syntax that works across frameworks. React, Preact, Svelte, and Vue are all supported. Your existing components will continue to work in Astro. You can even mix frameworks when you need to, preventing that expensive rewrite when The Next Big Thing™️ comes along.</p>\n<p>The Astro open source project launched in June 2021 and captured immediate buzz, taking home the “Ecosystem Innovation Award” at the <a href=\"https://jamstackconf.com/jammies/\">2021 Jamstack Awards.</a> Today, Astro supports 10,000+ users including developers at Google, Netlify, Firebase, DivRIOTS, and Monogram. The project is still young, but we have accomplished so much in such little time!</p>\n<h2 id=\"what-does-this-funding-mean-for-astro-users\"><a href=\"#what-does-this-funding-mean-for-astro-users\">What does this funding mean for Astro users?</a></h2>\n<p>This funding will allow our team to continue to focus full-time on Astro, improving the developer experience and investing more resources towards our amazing ecosystem of 10,000+ users and 3,000+ community members.</p>\n<p><strong>Astro is and will always be MIT-licensed.</strong> Our team has decades of combined open-source experience leading and maintaining projects like Skypack, Snowpack, Polymer, Microsite, Haunted, and PostCSS. I can’t over-state just how important open source software is to this team and we will continue to support a healthy open source ecosystem.</p>\n<p>Astro will continue to operate as an open source community project. We will continue to grow our sponsorship on Open Collective and invest in our amazing partners and sponsors. 100% of collected funds will continue to go directly back to our open source community members.</p>\n<p>Our goal is to grow Astro into the next great platform for web developers. We see Astro as so much more than just a build tool, and this funding will give us the resources to realize that vision. I can’t wait to share more about what we have planned for Astro over the next year!</p>\n<h2 id=\"join-us\"><a href=\"#join-us\">Join us!</a></h2>\n<p>Love web development? Love developer tooling? Love the thought of working with talented, thoughtful people full-time? <a href=\"/company\"><strong>We’re hiring!</strong></a></p>\n<p>You can also <a href=\"https://astro.build/chat\">join us on Discord</a> to learn more about Astro and the community behind it.</p>"
}
]