Skip to content

Releases: encoredev/encore

v1.46.1 — Updated behavior when generating clients

23 Jan 13:44
8184e3d
Compare
Choose a tag to compare

Changes when generating clients

  • encore gen client now default to --env=local instead of defaulting to your primary cloud environment. If you rely on the previous default, update you command and set --env=<cloud-env-name>
  • The generated code for calling raw endpoints no longer hard-code Content-Type: application/json for generated TS/JS clients. This means fetch will begin auto-detecting the content type if it is not explicitly provided, which enables better support for using FormData for uploading files via the generated client. You can preserve the previous behavior by explicitly setting the Content-Type header in the fetch options provided to the raw endpoint.

What's Changed

Full Changelog: v1.46.0...v1.46.1

v1.46.0 — Signed URLs for Storage Objects & Local Dashboard improvements

21 Jan 15:41
019677f
Compare
Choose a tag to compare

Signed Upload/Download URLs for Storage Objects

This has been a highly requested feature since we launched object storage, and it's finally here!

Signed URLs provide a secure way for clients to upload directly to storage, and to download directly from private buckets. This leaves the heavy lifting to the specialized cloud storage services, and frees your API service from handling large content payloads.

Generating a URL to let a client upload directly to a bucket:

const uploadUrl = await profilePictures.signedUploadUrl("my-user-id", {ttl: 7200})
// Pass url to client
curl -X PUT --data-binary @/home/me/dog-wizard.jpeg "https://storage.googleapis.com/profile-pictures/my-user-id/?x-goog-signature=b7a1<...>"

Please check out the docs for more info, and we wish you happy transfers!

Remember to update using: encore version update

Infra dashboard in the Local Development Dashboard

You can now see your locally running infrastructure in the local development dashboard!

This helps you verify that everything is running as expected and simplifies actions like triggering Cron Jobs when developing locally.
We plan on expanding the dashboard with much more functionality, e.g. database management.
Please let us know on Discord what would be most useful to you! ❤️

localinfra.mp4

Event Details in Trace Viewer

It's been a long time coming, but we've finally shipped a key improvement to Encore's trace viewer: Event Details

This small but mighty change makes it much easier to view complex traces with many separate events. Simply click to expand and view each event on the timeline in a list.

tracedetails.mp4

What's Changed

Full Changelog: v1.45.6...v1.46.0

v1.45.6 — Minor improvements & bugfixes

13 Jan 14:12
4102905
Compare
Choose a tag to compare

What's Changed

Thanks to our new contributor ❤️

Full Changelog: v1.45.1...v1.45.6

v1.45.1 — Custom Middleware / Public Buckets & CDN / Value-based Validation

12 Dec 14:01
2b0336c
Compare
Choose a tag to compare

Custom Middlware

Launched during launch week day 1, read all about it here: https://encore.dev/blog/custom-middleware

Public Buckets & CDN support

Launched during launch week day 2, read all about it here: https://encore.dev/blog/public-buckets

Value-based validation

Launched during launch week day 4, read all about it here: https://encore.dev/blog/advanced-validation

Other improvements & Bugfixes

Full Changelog: v1.44.9...v1.45.1

v1.44.9 — Enhanced error messages in Encore.ts

04 Dec 08:28
403b489
Compare
Choose a tag to compare

This release comes with huge improvements to Encore.ts' error messages:

  • No more Rust stack traces when you get compilation errors.
  • All errors now have proper line of code references to help you find what's wrong.
  • We've improved plenty of error messages to make them more helpful.
  • We're continuously working through more cases and improving on error messages to make easier to understand.

Just check out this before/after comparison to see the difference in practice:
before / after

Thanks to all contributors

🙏 We continue to be overwhelmed by your support, feedback, and suggestions!
Together we're building the future of backend development and we couldn't be more excited.

❤️ As always, we're excited to hear what you think!
Please share your feedback on Discord.

Full Changelog: v1.44.6...v1.44.9

v1.44.4 — Minor improvements & Bugfixes

22 Nov 08:35
7589d7f
Compare
Choose a tag to compare

What's Changed

Thanks to our new contributors! ❤️

Full Changelog: v1.44.0...v1.44.4

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