# Go SDK migration guide: v0.7 to v0.8
Source: https://www.inngest.com/docs/reference/go/migrations/v0.7-to-v0.8

This guide will help you migrate your Inngest Go SDK from v0.7 to v0.8 by providing a summary of the breaking changes.

## High-level

A minimal Inngest app looks like this:

```go
!snippet:path=snippets/go/v0_8/migration_to/high_level.go
```

## `Client`

The `DefaultClient` was removed. You should now use the `NewClient` function to create a new client:

```go
!snippet:path=snippets/go/v0_8/migration_to/client.go
```

<Warning>
`AppID` is now a required field. `NewClient` will return an error if it is not provided.
</Warning>

The removal of `DefaultClient` also means that `inngestgo.Send` and `inngestgo.SendMany` are no longer available. You should now use the `Client.Send` and `Client.SendMany` methods.

## `Handler`

The `Handler` was removed, along with `DefaultHandler` and the `NewHandler` function. The handler is predominately replaced by the `Client`, with `HandlerOpts` being replaced by `ClientOpts`.

## `CreateFunction`

`CreateFunction` now accepts a `Client` argument and returns an error. Calling `CreateFunction` automatically registers the function, obviating the `Handler.Register` method.

```go
!snippet:path=snippets/go/v0_8/migration_to/create_function.go
```

<Warning>
`ID` is now a required field. `CreateFunction` will return an error if it is not provided.

If you were previously only setting the `Name` field, you can use `inngestgo.Slugify` to generate the same ID we used internally.
</Warning>

If `inngestgo.CreateFunction` is called in a different package than `inngestgo.NewClient`, then you must use a side-effect import to include the function:

```go
import (
	"github.com/inngest/inngestgo"

	// Side-effect import to include functions declared in a different package.
	_ "github.com/myorg/myapp/fns"
)

func main() {
	client, err := inngestgo.NewClient(inngestgo.ClientOpts{AppID: "my-app"})

	// ...
}
```