Skip to content

Releases: encoredev/encore

Introducing the Encore App Metadata API

13 May 13:40
2dcc7ee
Compare
Choose a tag to compare

As developers, we often find ourselves in situations where we need to change something in our codebase, but don't want to change it everywhere the code is deployed.

Using Encore's new App Metadata API, you can now query the runtime to find out what environment the application is running in. Which means you can easily load the appropriate configuration files into memory and get the correct behavior for each environment.

This makes it a breeze to do things like:

  • Use different cloud services per environment
  • Define environment specific business logic

Check out the docs to learn more.

Upgrading

With this release, we've updated the runtime API with the new metadata API's and types. To upgrade you will need to both:

  • Run encore version update to download v1.1.0 of the Encore compiler.
  • In each of your Encore applications, you will also need to run go get -u encore.dev to upgrade to the latest runtime API.

Bugfixes and other improvements

  • We've made a ton of improvements to Encore's SQLDB handling! Including upgrading to PostgreSQL 14, and adding support for external DB clusters for CI/CD.
  • The Encore runtime now shuts down with grace.
  • Encore now runs on Go 1.18.2.
  • In case you've missed it, we've launched a new visual identity and have given the website a lot of love!
  • ...and much more.

— Thanks to @davidmytton, @klemmster, @ValeriaVG, @vilhelmmelkstam, @kwihl, and @MaxDanielsson for your contributions, bug reports, and feedback!

Join the most pioneering developer community

Developers building with Encore are forward-thinkers working on exciting and innovative products. Join the conversation on Slack to see what's going on, learn from others, and share what you're working on.

What's next

Over the coming weeks we'll be releasing a vastly improved web UI, and focus on adding much requested flexibility to the Encore framework. We'll add improved support for things like: http headers in Encore APIs, middleware, and dependency injection.

As always, if you have questions or feedback, tell us on Slack or just reply to this email.
We're excited to hear your feedback! ❤️

Catch you in the cloud,
The Encore team

Encore v1.0 — A new day for backend dev

26 Apr 14:44
Compare
Choose a tag to compare

We're incredibly excited to announce Encore v1.0. With this release, Encore is fully prepared to support you in your next creative endeavour.

It's our belief that Encore will transform developers' lives. Our work will become far more joyful and creative. Rather than it being 80% about configuring tools and services that have been reconfigured thousands of times before, we'll spend our days building new products that have a real impact. And that could have huge benefits for society. Imagine the exciting innovations if the world's 25+ million developers are freed up to be five times more productive!

We hope that Encore will open things up to a broader range of folk. You won't need to have a deep understanding of the nuances of cloud services to develop world-changing software that is available on a global scale. Now more people who are passionate about real-world issues which they're trying to solve will be empowered to have an incredible impact.

Highlights of what's been added in this release

AWS Cloud deployments now generally available

We're happy to announce that we've added full support for deploying your Encore applications to Amazon Web Services. This is a huge milestone, as Encore now supports deploying seamlessly to all major cloud providers.

If you wish, you can easily deploy your application to all of them, for those multi-cloud bragging rights.
With Encore it's as easy as connecting your cloud account. There's no second step.

Check out the docs to learn how to connect your Encore app to your AWS account and start deploying in minutes.

Speedier builds and structured logs

When you deploy your Encore application, the platform takes care of building your app, provisioning the necessary infrastructure, and orchestrating the deployment. With this release, we've made builds blazing fast and laid the foundation for better and more structured build logs. Behind the scenes we've ripped out GCP Cloud Build and replaced it with our own firecracker based builder. If this tickles your fancy, we're busy writing an in-depth article on this very topic. Watch this space for more details.

structured build logs

Improvements & Bugfixes

  • We've upgraded the Encore fork of the Go runtime to 1.18.1 (it's now 0.0.1 better than before)

Catch you in the cloud,
The Encore Team

Full support for Azure is here! (This is not a joke.) ​

01 Apr 14:38
5c5746a
Compare
Choose a tag to compare

One of the core beliefs behind Encore is that developers shouldn't need to worry about the intricacies of cloud infrastructure. Instead you should focus on being creative and crafting unique software for your users.

To achieve this, Encore enables you to deploy your applications to any supported clouds (yes plural), without making code changes. We're super excited to announce we've now added full support for Microsoft Azure to the list!

Float into the flow with Azure:

  • Create a new environment and deploy your app to Azure in minutes.
  • Keep using all Encore features in exactly the same way as before!
  • Run multiple environments across Azure / GCP / Encore for the same app. (AWS dropping soon!)

Check out the docs to learn more.

image

Bugfixes and other improvements

  • Added support for line based comments on struct fields.
    – Thanks to Javi Alvarez, Valeria Viana Gusmao, Denis Denis, Vilhelm Melkstam, Max D, Alessandro Resta and Richard Palm for your contributions and bug reports. (WOW, what a long list, and what a great community!)

What's next

Over the coming weeks we'll be adding AWS to the mix, dropping a huge UI update, and get on with adding native support for Queues and Object storage.

– Remember, you can share your comments and ideas on our Public Roadmap.

As always, if you have questions or feedback, join us on Slack or just reply to this email.

We're excited to hear your feedback!

Shipping with Encore just got better

28 Mar 13:42
f526e7d
Compare
Choose a tag to compare

We're continuously refining the Encore experience to make it even more frictionless, and give you more control and flexibility. This week we've released a bunch of big improvements to how deployments work for all your Encore applications.

Highlights of what we shipped the past week:

  • Much improved overview – Builds, infrastructure changes, and deploys in one view.
  • No surprises in your cloud bills – You can now choose whether you want to manually approve any infrastructure changes for each environment.
  • You can now easily re-trigger deploys from the Web Platform.

deployments improved

Bugfixes and other improvements

  • We refined the internal alerting and monitoring for the Web Platform to ensure availability.
  • We fixed a subtle bug related to parsing errors in app log messages.
    – Thanks to Valeria Viana Gusmao, Dinesh Katwal, and Glenn Lewis for their bug reports and contributions!

Join the most pioneering developer community

Developers building with Encore are forward thinkers working on interesting and exciting projects. Join the conversation on Slack to see what's going on, and share what you're working on.

What’s next

Over the coming weeks we’ll be reactivating AWS and Azure support for all Encore users, releasing a polished version of the Web Platform, adding native support for queues and object storage, and much more.
– Remember, you can share your comments and ideas on our Public Roadmap.

As always, if you have questions or feedback, join us on Slack.
We’re excited to hear your feedback! ❤️

Go 1.18 Support – Generics, API fuzzing, and more

18 Mar 12:56
Compare
Choose a tag to compare

To celebrate the release of Go 1.18, we’ve updated Encore with first-class support for generics, API fuzzing, and more!
Simply run encore version update to upgrade and get all these goodies.

Generics are here!

Encore v0.21 comes with full support for Go 1.18's generics! You can now write generic code with Encore, use generic types in API request and response schemas, and more:

  • The automated API documentation has been taught to understand and render generic types
  • The client code generation has been extended to generate generic types

Fuzzing

Encore extends Go 1.18's support for fuzzing to include fuzz testing Encore APIs. Use encore test -fuzz=. to start fuzzing! Fuzzing is a great way to improve the security of your APIs by ensuring they can handle arbitrary inputs.

✨ Join the most pioneering developer community

Developers building with Encore are forward thinkers working on interesting and exciting projects.
Join the conversation on Slack to see what's going on, and share what you're working on.

🗓️ What's next

We'll shortly be releasing improvements to the Deployment UX, and in the coming weeks give you more knobs in the Distributed Tracing dashboard, add native support for Object Storage, and much more!

— Remember, you can share your comments and ideas on our Public Roadmap.

We're excited to hear your feedback! ❤️

Keep building,
André (Founder) & the Encore team

Custom domains, Cron in PR environments, Go Upgrade, and more

11 Mar 13:17
3f47d7a
Compare
Choose a tag to compare

🎁 Bring Your Own Domain Names

Custom Domains
You asked for it, and so it's here! We've just released Custom Domains, which lets you serve your Encore powered backend API's from your own domains. No proxy, no certificates, and no hassle!

The best part? No need to update your CLI tools, just head to the Web Platform and try it out yourself!

📚 Check out the docs to learn more.

🔥 PR Environments just got even better

One of the lesser known — but very powerful — features of Encore just got even better!

In case you didn't know: When you've linked your app with GitHub, Encore will automatically provision dedicated Preview Environments for each pull request. (See how in the docs)

PR environments work just like regular development environments, and lets you test your changes before merging.
This week, we made PR environments even better, and added full support for Encore's native Cron Jobs!

💡 Improvements & Bugfixes

  • We've added support for GitHub login to make things even smoother.
  • We upgraded the platform to Go 1.17.8, and are standing ready for the release of 1.18.

— Thanks to @MaxDanielsson, @VilhelmMelkstam, and @gmlewis for giving us feedback!

✨ Join the most pioneering developer community

Developers building with Encore are forward thinkers working on interesting and exciting projects.
Join the conversation on Slack to see what's going on, and share what you're working on.

🗓️ What's next

Over the coming weeks we'll be improving the Deployment UX, give you more knobs in the Distributed Tracing dashboard, add native support for Object Storage, and much more!

— Remember, you can share your comments and ideas on our Public Roadmap.

We're excited to hear your feedback! ❤️

Keep building,
André (Founder) & the Encore team

It's about time — Cron Jobs are here!

02 Mar 16:10
Compare
Choose a tag to compare

When building backend applications you often need to run periodic and recurring tasks. For example, to send a welcome email to everyone who signed up recently. Encore provides native support for these types of use cases using Cron Jobs. Here's how easy it is:

import "encore.dev/cron"

// Send a welcome email to everyone who signed up in the last two hours.
var _ = cron.NewJob("welcome-email", cron.JobConfig{
    Title:    "Send welcome emails",
    Every:    2 * cron.Hour,
    Endpoint: SendWelcomeEmail,
})

That's it! When this is deployed, the Encore Platform will call the SendWelcomeEmail endpoint (not pictured) every 2 hours. There is no need to maintain any infrastructure; Encore itself takes care of the scheduling, monitoring and execution. Hooray! ✨

What's more, Encore's web platform has a shiny new Cron Jobs dashboard to help you keep track of all your jobs. Check it out:

Cron Job dashboard

This means you can now schedule recurring tasks without worrying about:

  • How yet another configuration language works –– it's just plain Go.
  • Setting up and maintaining servers or third-party services –– it's all handled by Encore.
  • Keeping track of what jobs are running in each environment – just check the dashboard!

To get started, install the latest Encore release with encore version update and upgrade your application's dependency with go get encore.dev@latest.

Check out the docs 📚 to learn more.

Bugfixes and other improvements

Thanks to @ValeriaVG and @wisdommatt for the contributions!

Faster, Reliabler™, Better

15 Feb 18:30
b6b7534
Compare
Choose a tag to compare

Happy 2022! (We're a bit late to the party, we know...) We’ve been heads down improving our platform and are super excited to finally announce these product updates. 🎉

  • If you'd like to give Encore a go for the first time, check out our quick start.
  • If you already have Encore installed, you can update with encore version update.

We’ve just shipped some huge platform improvements to make your applications faster, and ensure our service is more reliable as you’re developing.

Encore now offers full support for Google Cloud Run, adding an even easier and cheaper way to deploy to your own cloud account. Perfect for getting your next idea up and running quickly.

We’ve also integrated with Cloudflare, giving you the full power of their edge network, for even lower latency and higher performance. This works transparently across all the cloud providers we support, including Encore Cloud.

Infrastructure

🔑 Auth Keys

Sometimes it’s practical to use the Encore CLI in an automated fashion, for instance to automatically run tests in a CI/CD pipeline beyond what Encore already provides. That was trickier than it should have been, since the CLI required interactive login. But no longer!

We now support pre-authenticated keys that grant a machine user access to a single Encore application, perfect for your CI environments and other automated tools.
Read more about auth keys in the docs.

Auth Keys

🚪 Password-based & Social Login

Logging in with one-time codes over email can be annoying because you can’t use your password manager. We hear you! That’s why we’re happy to announce we’ve now rolled out password-based login and social login.
— Next time you log in you’ll need to set a password using “Reset password” on the login screen, using the same email address as before.

🗓️ What’s next

Over the next fews weeks we’ll be adding lots more powerful features to help you build your next great product faster. Soon we’re adding native support for Cron Jobs, Custom API Domains, Object Storage (S3), Pub/Sub, and more.
— Remember, you can share your comments and ideas on our Public Roadmap.

That’s it for this time!
As always, if you have questions or feedback, join us on Slack. We’re excited to hear your feedback.

v0.17.2: REST APIs, ORM Support, and more!

20 Sep 09:05
8149041
Compare
Choose a tag to compare

We're excited to announce Encore v0.17, our most feature-packed and best release yet!

If you'd like to give Encore a go for the first time, check out our quick start.
If you already have Encore installed, you can update with encore version update.

The simplest way to build a REST API

We've heard you: the Encore developer experience is great, but building REST APIs was too cumbersome. No more! You can now define REST APIs with incredible speed and productivity, through the power of Encore's static analysis and code generation engine. Just take a look:

// The List endpoint returns a list of blog articles.
// It can be called simply as:
//
//     GET /blog?limit=30&offset=0
//
//encore:api public method=GET path=/blog
func List(ctx context.Context, p *ListParams) (*ListResponse, error) {
	// Fetch results...
}

// ListParams are the query parameters for the List endpoint.
type ListParams struct {
	Limit int
	Offset int
}

// ListResponse is the response schema for the List endpoint.
type ListResponse struct {
	Posts []*Post
}

If it looks just like regular, plain Go code, you'd be exactly right! Since it's a GET endpoint, Encore automatically parses the ListParams fields and parses them from the query string in the HTTP request.

This approach lets you think and develop your API in terms of functions and data structures, instead of worrying about low-level HTTP request parsing. The end result is a remarkably simple programming paradigm that dramatically increases productivity.

We call it the Encore Application Model — a combination of static analysis and code generation — and it's all about understanding what you're trying to do and helps you achieve it faster and easier than ever before. By taking all the boilerplate out of backend development we're left with a much more enjoyable developer experience as well.

ORM Support and Query Helpers

Encore's SQL Database support now works seamlessly with the large Go ecosystem of ORMs and query helpers! This means if you want to use tools like:

... and so on, you can! In your Encore service, use the new sqldb.Named function to get a database object, and then use its Stdlib method to get a *sql.DB object that you can integrate with any of these packages as you see fit.

package foo

// db is a *sql.DB that is automatically connected
// to the database belonging to the "foo" service.
//
// Like always with Encore, you don't need to worry
// about provisioning, database passwords, or having
// to set up schema migrations. It's all taken care of.
var db = sqldb.Named("foo").Stdlib()

Testing auth endpoints

If you're building an application with Encore's built-in authentication support, you're in luck! Testing endpoints that required authentication is now much easier than before, with the introduction of auth.WithContext:

import "encore.dev/beta/auth"

func TestAuthEndpoint(t *testing.T) {
	ctx = auth.WithContext(context.Background(), "some-user-id", &AuthData{})
	err := MyAuthEndpoint(ctx)
	// ...
}

//encore:api auth
func MyAuthEndpoint(ctx context.Context) error {
	// ....
}

This functionality is actually not limited to testing, and can be used anywhere, including in your business logic for cases where you need to make an API call on behalf of an authenticated user.

Bugfixes and other improvements

We also made lots of smaller improvements and bugfixes:

  • Added --port and --listen options to encore run to change listen port/address (#94)
  • Overhauled code generation for increased performance and maintainability
  • Fixed database request tracking in tests (#89)
  • Fixed a bug where the Dev Dashboard sometimes didn't show the latest result (#53)
  • Fixed return type mismatch between Encore runtime and client library (#55)
  • Fixed using unicode in API Explorer (#97)

We're looking forward to seeing what you build! Join us in Slack to participate in the growing community of Encore developers, and stay tuned for more updates soon!

v0.16.3: UX Improvement Bonanza!

25 Aug 08:48
Compare
Choose a tag to compare

Encore now has much improved documentation, and an improved encore run experience!

Revamped Documentation

  • Reworked documentation site from the ground up
  • Open sourced docs so anybody can contribute to better docs
  • Added documentation search
  • Improved CONTRIBUTING.md instructions

Encore Docs

Improved encore run experience

We added more real-time feedback about what Encore is doing when starting up. This especially helps when starting to use Encore and there's lots of things happening (compiling the Go standard library and all app dependencies, pulling docker images for PostgreSQL, creating the database, etc) that take time. See screenshot below!

encore run

Minor improvements and bugfixes

  • Added support for GitHub Codespaces (#54)
  • Encore now recognizes both Authorization: Token foo as well as Authorization: Bearer foo for authentication
  • Added ENCORE_DAEMON_DEV=1 to make it easier to develop the Encore daemon
  • Fixed Windows terminal handling (#56)
  • Fixed building from source on Windows (#57)
  • Fixed json.RawMessage handling in generated TypeScript client (#73)
  • Fixed API Explorer sometimes inferring the wrong HTTP method (#74)
  • Fixed incorrectly passing in HTTP body for GET requests (#45)
  • Fixed API Explorer default payload for float64 (#43)
  • Fixed CORS headers for less common HTTP methods
  • Fixed int and uint handling in the API Explorer

Contributions and thanks

  • @vilhelmmelkstam for his numerous bug reports and bug fixes!
  • @frzam for fixing several bugs related to Windows and terminal handling!
  • @mvp-joe for lots of great feedback and bug reports over in Encore's Slack community
  • And thanks as always to everybody for helping make Encore great.