Skip to content

Releases: encoredev/encore

v1.44.0 — Object Storage is here!

18 Nov 16:44
fc85581
Compare
Choose a tag to compare

We're very excited to announce that Encore (both Go and TypeScript versions) now supports Object Storage as a first-class cloud infrastructure resource! As always, update to the latest release with encore version update!

Object Storage

Object Storage is a simple and scalable way to store files and unstructured data in your backend application. The most well-known implementation is Amazon S3 ("Simple Storage Service"), but it's universally supported by every major cloud provider.

Encore now provides a cloud-agnostic API for working with Object Storage, allowing you to store and retrieve files with ease. It has support for Amazon S3, Google Cloud Storage, as well as any other S3-compatible implementation (such as DigitalOcean Spaces, MinIO, etc.).

Here's how you might use it in Encore.ts:

import { Bucket } from "encore.dev/storage/objects";

export const profilePictures = new Bucket("profile-pictures", {
  versioned: false
});

// Then use `profilePictures`:
profilePictures.upload(...);
profilePictures.download(...);
profilePictures.list(...);

Additionally, when you use Encore's Object Storage APIs you also automatically get:

  • Automatic tracing and instrumentation of all Object Storage operations
  • Built-in local development support, storing objects on the local filesystem
  • Support for integration testing, using a local, in-memory storage backend

And with Encore's Cloud Platform you also get:

  • Automatic infrastructure provisioning of Object Storage buckets
  • Automatic fine-grained permission management of per-service storage operations (read, list, write, delete, etc.)
  • Support for Object Storage in Preview Environments
  • Native support for Object Storage in the Encore Platform's CI/CD pipeline

See the documentation (Encore.ts / Encore.go) for more information!

TypeScript parsing improvements

Encore.ts now has improved support for parsing more TypeScript language features:

  • Interfaces extending other interfaces
  • Namespaces and qualified names
  • Re-exports (export * from "./file")

Together, these improvements enable much wider support for referencing types defined in external libraries.

We're constantly working on bringing more improvements to the TypeScript parser, with more coming in the near future.
If you have use cases that the TypeScript parser doesn't support, please let us know in Discord!

What's Changed

Thanks to our new contributors! ❤️

Full Changelog: v1.43.9...v1.44.0

v1.43.9 — First class ORM support in Encore.ts

12 Nov 10:55
bdae9b7
Compare
Choose a tag to compare

In this release we've added greatly improved support for using ORMs and migration frameworks with Encore.ts.
Remember to update: encore version update

Since Encore’s approach to database management is flexible, i.e. it uses standard SQL migration files, it now supports integration with most popular ORMs.

📚 We've created examples and docs for how to use:

Many other ORMs are also supported. Here's how you can reason about it:

  • ORM Compatibility: If an ORM can connect to a database via a standard SQL driver, it will work with Encore.
  • Migration Tool Compatibility: If your migration tool generates SQL migration files without additional customization, it can be used with Encore.

Learn more in the ORM docs

Other improvements & Bugfixes

Full Changelog: v1.43.7...v1.43.9

v1.43.7 - Minor improvements & Bugfixes

31 Oct 14:06
8084ef6
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.43.3...v1.43.7

v1.43 - Date support in Encore.ts

25 Oct 15:48
4e98856
Compare
Choose a tag to compare

We're excited to announce that Encore.ts now supports using Date types in API schemas, Pub/Sub topic messages, streaming APIs, and more! As always, update with encore version update!

That means you can now do things like this:

export interface CreateBlogPostParams {
  body: string;
  publishAt?: Date; // set to schedule the publish in the future
}

export const createBlogPost = api(
  {expose: true, method: "POST", path: "/blogpost" },
  async (params: CreateBlogPostParams): Promise<BlogPost> {
    // ...
  }
)

Encore.ts will automatically validate the incoming request, ensuring the provided data is a valid RFC3339 timestamp,
and pass the data to the API handler as a fully constructed Date object. No need to manually parse dates ever again. Additionally, Encore.ts's built-in API Explorer and Service Catalogs have also been updated to fully support dates.

Hiding internal messages in public errors

Encore.ts's errors can contain additional information in the internal_message field. This field is now stripped when calling from the outside, ensuring private information about the error isn't leaked to external users. (This functionality is disabled when developing locally, to aid development.)

All changes

  • cli: Move tutorial config flag to example repo by @ekerfelt in #1519
  • runtimes/core+js: hide error internal message in responses by @fredr in #1518
  • date handling by @eandre in #1504
  • Include internal_message in all errors for local dev by @eandre in #1522
  • runtimes/core: don't run gateway during tests by @fredr in #1524
  • dashproxy caching by @eandre in #1523
  • cli: improve app create form responsiveness by @eandre in #1525
  • pkg/dockerbuild: handle junction points by @eandre in #1526

Full Changelog: v1.42.3...v1.43.3

v1.42.3 - Interactive tutorial

24 Oct 13:16
eb1df15
Compare
Choose a tag to compare

In this release we've added an interactive tutorial to help people learn how to use the framework.
In the tutorial, you get to take on coding challenges and answer quizzes about how Encore works.

interactive tutorial

Here's how you can try it out:

  • Update to the latest version using encore version update and then
  • Run encore app create and select TypeScript (Go version coming soon)
  • Select the Intro to Encore.ts template.
  • Enter Y to start the app
  • You should now see the Introduction screen in the local development dashboard, here you can complete lessons to learn how Encore.ts works.

We hope you have fun completing these lessons and that you learn something new about Encore!

We'd love your feedback and bug-reports, join Discord and share your thoughts: https://encore.dev/discord 💙

Other improvements & Bugfixes

Full Changelog: v1.42.1...v1.42.3

v1.42.1 - Simpler self-hosting, Infra cleanup, Cloud Platform API, Service-to-Service streaming, and more

18 Oct 13:49
276e3b4
Compare
Choose a tag to compare

We want to ensure it's simple to deploy your Encore application anywhere. In this release, we're very excited to introduce: encore build. It's a much improved version of the old encore eject functionality that makes it simpler to deploy your Encore application and requires much less manual configuration.

Remember to update Encore: encore version update

Deploy anywhere that supports Docker images

You can now build your own Docker image using encore build docker MY-IMAGE:TAG from the CLI.

By default, all your services will be included and started by the Docker image. You can also specify specific services and gateways to include, using the --services and --gateways flags.

Learn more in the docs.

Infra cleanup

Encore's Cloud Platform now shows you if you have any unused infrastructure in your cloud environments and supports deleting unused infrastructure. This is based on Encore's understanding of what infrastructure is used by your application code, and any infrastructure resources that are no longer in use are automatically identified.

To use it, simply open your app in app.encore.dev and go to the Infrastructure page for your desired environment. If you have any unused infrastructure it will be listed in the section Unused infrastructure and by clicking the trashcan icon you can mark it for deletion at the next deploy.

Export-1729243598463.mp4

Cloud Platform API

Encore's Cloud Platform now provides an API to simplify integrations with your existing tooling and systems.
For instance you can hook into Encore's Rollouts system handling builds and deployments.

Learn more in the API reference

Service-to-Service streaming

Encore.ts now supports streaming APIs between services by importing ~encore/clients.
You can configure the stream to only be reachable by other services in your application (and not from the public internet) by setting the expose option to false.

Learn more in the docs

encore db shell Roles support

encore db shell is a simple way of connecting to your databases using Encore's CLI.
Based on your feedback and to improve security, the default role is now read-only and we've introduced support for specifying access roles when using the command.

Use the flags --write, --admin and --superuser to modify which permissions you connect with.
For example, to connect to a database using an admin user you can use encore db shell --admin -e staging.

Remember to upgrade Encore: encore version update

Encore.ts custom API error details

Encore.ts now supports the ability to add custom error details to any API error, using the new .withDetails({ key: "value" }) method.
Any details added will be encoded as JSON and added to the API response under the new "details" field (which defaults to null if not provided).

Other improvements & Bugfixes

Thanks to our new Contributors ❤️

We want your feedback

Join Encore's Discord community to share your feedback, ask questions, and have fun: https://encore.dev/discord 👋

Full Changelog: v1.41.9...v1.42.1

v1.41.9 - Improved Encore.ts error messages and Encore.go middleware

11 Oct 15:00
d3b31d5
Compare
Choose a tag to compare

In this release we're shipping a bunch of improvements to Encore.ts error messages, hopefully making the developer experience a lot smoother!

Remember to update Encore: encore version update

  • Improve path parsing error by @fredr in #1456
  • tsparser: better syntax errors by @fredr in #1460
  • tsparser: better errors when defining secrets by @fredr in #1461
  • tsparser: better endpoint parser errors by @fredr in #1463
  • tsparser: detect conflicting paths in endpoints by @fredr in #1465
  • Allow importing json files and handle module loader errors better by @fredr in #1459

Encore.go Middleware improvements

A small but mighty change: Incoming HTTP Request Headers are now available for introspection in middleware. This makes it simple to do things like IP rate limiting. Thanks to everyone in the community who suggested this!

Remember to update Encore: encore version update

  • runtimes/go: expose request headers for middleware by @eandre in #1469

Bounties - You can help fund community contributions

We're now set up to use Polar.sh to enable crowdfunding bounties for community driven open source contributions to Encore. If you create an issue in this repo, you can now use the label Fund and it will automatically add a Polar.sh funding badge so that you and other community members can contribute to a bounty for whoever completes the issue.

polar badge

Other improvements

Thanks to our new contributors ❤️

Tell us what you think

We love to hear your feedback, join Discord to share your thoughts and ask questions! 👋

Full Changelog: v1.41.7...v1.41.9

v1.41.7 - Minor improvements & bugfixes

03 Oct 14:48
93a9bb0
Compare
Choose a tag to compare

What's Changed

Thanks to our first time contributors ❤️

Full Changelog: v1.41.4...v1.41.7

v1.41.4 - Minor improvements & bugfixes

21 Sep 06:51
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.41.3...v1.41.4

v1.41.3 - Minor improvements & bugfixes

18 Sep 07:51
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.41.1...v1.41.3