Aug 22, 2018


add Context.Params#GetUint64

@kataras kataras released this Aug 11, 2018 · 8 commits to master since this release

Assets 2


Looking for free and real-time support?

Looking for previous versions?

Should I upgrade my Iris?

Developers are not forced to upgrade if they don't really need it. Upgrade whenever you feel ready.

Iris uses the vendor directory feature, so you get truly reproducible builds, as this method guards against upstream renames and deletes.

How to upgrade: Open your command-line and execute this command: go get -u or let the automatic updater do that for you.

Sat, 11 August 2018 | v10.7.0

I am overjoyed to announce stage 1 of the the Iris Web framework 10.7 stable release is now available.

Version 10.7.0 is part of the official releases.

This release does not contain any breaking changes to existing Iris-based projects built on older versions of Iris. Iris developers can upgrade with absolute safety.

Read below the changes and the improvements to the framework's internals. We also have more examples for beginners in our community.

New Examples

Also, all "sessions" examples have been customized to include the AllowReclaim: true option.



  • Add json field tags and new functions such as ChangeMethod, SetStatusOffline and RestoreStatus to the Route structure, these type of changes to the routes at runtime have effect after the manual call of the Router/Application.RefreshRouter() (not recommended but useful for custom Iris web server's remote control panels)
  • Add GetRoutesReadOnly function to the APIBuilder structure


  • Add GetReferrer, GetContentTypeRequested and URLParamInt32Default functions
  • Insert Trace, Tmpl and MainHandlerName functions to the RouteReadOnly interface
  • Add OnConnectionClose function listener to fire a callback when the underline tcp connection is closed, extremely useful for SSE or other loop-forever implementations inside a handler -- and OnClose which is the same as OnConnectionClose(myFunc) and defer myFunc() *

This release contains minor grammar and typo fixes and more meaningful godoc code comments too.


I am glad to announce that Iris has been chosen as the main development kit for eight medium-to-large sized companies and a new very promising India-based startup. I want to thank you once again for the unwavering support and trust you have shown me, especially this year, despite the past unfair rumours and defamation that we suffered by the merciless competition.

Aug 22, 2018
add Context.Params#GetUint64
Aug 11, 2018
Release stable version 10.7 -
I want to thank you once again for the unwavering support and trust you have shown me

@kataras kataras released this Jul 29, 2018 · 39 commits to master since this release

Assets 2

Same as but with more examples and fixes an annomaly with dep and the new go 1.11's package manager.

@kataras kataras released this Jun 26, 2018 · 47 commits to master since this release

Assets 2

Tu, 05 June 2018 | v10.6.6

  • view/pug: update vendor for Pug (Jade) parser and add Iris + Pug examples via this commit, relative to issue #1003 opened by @DjLeChuck
  • middleware/logger: new configuration field, defaults to false: Query bool, if true prints the full path, including the URL query as requested at issue #1017 by @andr33z. Example here. Implemented by this commit
  • cookies: some minor but helpful additions, like CookieOption relative to issue #1018 asked by @dibyendu. Cookies examples added too. Implemented by this commit
  • cookies: ability to set custom cookie encoders to encode the cookie's value before sent by context#SetCookie and context#SetCookieKV and cookie decoders to decode the cookie's value when retrieving from context#GetCookie. That was the second and final part relative to a community's question at: issue #1018. Implemented by this commit
  • fix: issue #1020 via this commit, redis database stores the int as float64, don't change that native behavior, just grab it nicely.

Translations (2)

Thank you

Thank you for your honest support once again, your posts are the heart of this framework.

Don't forget to star the Iris' github repository whenever you can and spread the world about its potentials!

Be part of this,

@kataras kataras released this May 21, 2018 · 63 commits to master since this release

Assets 2

Mo, 21 May 2018 | v10.6.5

First of all, special thanks to @haritsfahreza for translating the entire Iris' README page & Changelogs to the Bahasa Indonesia language via PR: #1000!

New Feature: Execution Rules

From the begin of the Iris' journey we used to use the ctx.Next() inside handlers in order to call the next handler in the route's registered handlers chain, otherwise the "next handler" would never be executed.

We could always "force-break" that handlers chain using the ctx.StopExecution() to indicate that any future ctx.Next() calls will do nothing.

These things will never change, they were designed in the lower possible level of the Iris' high-performant and unique router and they're working like a charm:)

We have introduced Iris MVC Applications two years later. Iris is the first and the only one Go web framework with a realistic point-view and feature-rich MVC architectural pattern support without sacrifices, always with speed in mind (handlers vs mvc have almost the same speed here!!!).

A bit later we introduced another two unique features, Hero Handlers and Service/Dynamic Bindings (see the very bottom of this HISTORY page).
You loved it, you're using it a lot, just take a look at the recent github issues the community raised about MVC and etc.

Two recent discussions/support were about calling Done handlers inside MVC applications, you could simply do that by implementing the optional BaseController as examples shown, i.e:

func (c *myController) BeginRequest(ctx iris.Context) {}
func (c *myController) EndRequest(ctx iris.Context) {
    ctx.Next() // Call of any `Done` handlers.

But for some reason you found that confused. This is where the new feature comes: The option to change the default behavior of handlers execution's rules PER PARTY.

For example, we want to run all handlers(begin, main and done handlers) with the order you register but without the need of the ctx.Next() (in that case the only remained way to stop the lifecycle of an http request when next handlers are registered is to use the ctx.StopExecution() which, does not allow the next handler(s) to be executed even if ctx.Next() called in some place later on, but you're already know this, I hope :)).

package main

import (

func main() {
    app := iris.New()
    app.Get("/", func(ctx iris.Context) { ctx.Redirect("/example") })

    m := mvc.New(app.Party("/example"))

    // the new feature, all options can be filled with Force:true, they are all play nice together.
        // Begin:  <- from `Use[all]` to `Handle[last]` future route handlers, execute all, execute all even if `ctx.Next()` is missing.
        // Main:   <- all `Handle` future route handlers, execute all >> >>.
        Done: iris.ExecutionOptions{Force: true}, // <- from `Handle[last]` to `Done[all]` future route handlers, execute all >> >>.
    // m.Router.Done(...)
    // ...



func doneHandler(ctx iris.Context) {
    ctx.WriteString("\nFrom Done Handler")

type exampleController struct{}

func (c *exampleController) Get() string {
    return "From Main Handler"
    // Note that here we don't binding the `Context`, and we don't call its `Next()`
    // function in order to call the `doneHandler`,
    // this is done automatically for us because we changed the execution rules with the `SetExecutionRules`.
    // Therefore, the final output is:
    // From Main Handler
    // From Done Handler

Example at: _examples/mvc/middleware/without-ctx-next.

This feature can be applied to any type of application, the example is an MVC Application because many of you asked for this exactly flow the past days.

Thank you

Thank you for your honest support once again, your posts are the heart of this framework.

Don't forget to star the Iris' github repository whenever you can and spread the world about its potentials!

Be part of this,

Gerasimos Maropoulos.

@kataras kataras released this May 14, 2018 · 70 commits to master since this release

Assets 2

We, 09 May 2018 | v10.6.4

@kataras kataras released this Apr 22, 2018 · 73 commits to master since this release

Assets 2


Video Courses

We, 02 May 2018 | v10.6.3

Every server should be upgraded to this version, it contains an important, but easy, fix for the websocket/Connection#Emit##To.

  • Websocket: fix #991

Tu, 01 May 2018 | v10.6.2

  • Websocket: added OnPong to Connection via PR: #988
  • Websocket: OnError accepts a func(error) now instead of func(string), as requested at: #987

We, 25 April 2018 | v10.6.1

Su, 22 April 2018 | v10.6.0

  • Fix open redirect by @wozz via PR: #972.
  • Fix when destroy session can't remove cookie in subdomain by @chengyumeng via PR: #964.
  • Add OnDestroy(sid string) on sessions for registering a listener when a session is destroyed with commit: d17d7fe.
  • Finally, sessions are in full-sync with the registered database now. That required a lot of internal code changed but zero code change requirements by your side. We kept only badger and redis as the back-end built'n supported sessions storages, they are enough. Made with commit: f2c3a5f relative to many issues that you've requested it.
Apr 22, 2018
Update to Version 10.6.0 and add Video Courses section at READMEs