Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here


Productive. Reliable. Fast.

Subscribe to updates I use phoenix

Statistics on phoenix

Number of watchers on Github 11389
Number of open issues 21
Average time to close an issue 3 days
Main language Elixir
Average time to merge a PR 1 day
Open pull requests 46+
Closed pull requests 98+
Last commit over 1 year ago
Repo Created almost 6 years ago
Repo Last Updated over 1 year ago
Size 8.97 MB
Homepage http://www.phoeni...
Organization / Authorphoenixframework
Latest Releasev1.3.0-rc.0
Page Updated
Do you use phoenix? Leave a review!
View open issues (21)
View phoenix activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating phoenix for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

phoenix logo

Productive. Reliable. Fast.

A productive web framework that does not compromise speed and maintainability.

Build Status Inline docs

Getting started

See the official site at


API documentation is available at

Phoenix.js documentation is available at


We appreciate any contribution to Phoenix. Check our and guides for more information. We usually keep a list of features and bugs in the issue tracker.

Generating a Phoenix project from unreleased versions

You can create a new project using the latest Phoenix source installer (the Mix task) with the following steps:

  1. Remove any previously installed phx_new archives so that Mix will pick up the local source code. This can be done with mix archive.uninstall phx_new or by simply deleting the file, which is usually in ~/.mix/archives/.
  2. Copy this repo via git clone or by downloading it
  3. Run the mix task from within the installer directory, for example:
$ cd installer
$ mix dev_app --dev

The --dev flag will configure your new project's :phoenix dep as a relative path dependency, pointing to your local Phoenix checkout:

defp deps do
  [{:phoenix, path: "../..", override: true},

To create projects outside of the installer/ directory, add the latest archive to your machine by following the instructions in installer/

Building phoenix.js

$ npm install
$ npm run watch

Building docs from source

$ MIX_ENV=docs mix docs

Important links

Copyright and License

Copyright (c) 2014, Chris McCord.

Phoenix source code is licensed under the MIT License.

phoenix open issues Ask a question     (View All Issues)
  • almost 3 years Warn on unhanded handle_info in channel
  • about 3 years mix phoenix.digest should base the hash of a CSS file on the digested_contents after linked assets have been replaced
  • about 3 years It is impossible to broadcast to channel without the Phoenix.Socket.Broadcast struct
  • about 3 years Documentation Feature Request: Secure Transport for Channels
  • about 3 years Remove force_ssl option
  • about 3 years Phoenix.ChannelTest __stringify__/1 fails when the value is a struct (like Ecto.DateTime)
  • about 3 years Consider dynamic check_origin
  • about 3 years Improve Phoenix.Token verify examples
  • about 3 years Model generators not consistent with given command
  • over 3 years Provide send_attachment/3
  • over 3 years Add Presence.get_by_key
  • over 3 years Erlang 19 Causing Compile Error
  • over 3 years Use the new calendar types in Ecto generators
  • over 3 years Investigate performance regression when running inside releases
  • over 3 years Asset paths are wrong when forwarding in router
  • over 3 years Invalid migration generated by gen.model and run-time errors after omitting `_id` postfix in association column name
  • over 3 years Generated controller tests with namespaced models have wrong path
  • almost 4 years Update Phoenix website
phoenix open pull requests (View All Pulls)
  • Add Presence generator. Closes #1523
  • Allow forwarding twice to a plug with different options
  • Warn on router paths without leading slash
  • Change errors to match Ecto nomalised format
  • Configurable template lookup pattern
  • Improving error message when invalid redirect to: path
  • fixup socket docs
  • Potential fix for issue 1605
  • Add additional information to prod.secret.exs
  • Added type specs to socket messages
  • Extend model generation specs
  • Extract serialization into a separate class
  • Don't copy static files when both --no-brunch & --no-html are present.
  • Expose source es6 file too in npm package
  • Add new experimental project generator
  • Add required babel presets to static template
  • Include Phoenix guides in framework docs
  • Enhance new generators
  • Envisage field of type map in phoenix.gen
  • Add configurable logging to channels
  • Adding foreign key to the generated belongs to
  • Tweaked `Phoenix.Token` documentation.
  • Fix IE Bug
  • Add socket.js tests
  • Adds Presence.get_by_key with default
  • Add channel js tests
  • Fix function argument inconsistencies in docs for scope
  • Update phoenix_guide and add pages from phoenix_guides
  • Fix nested context module name (#2240)
  • Fixed newline in migration template
  • Bug fix channel join with timeout behavior
  • Improve error messages for references, with context consideration
  • Adds documentation to Phoenix.Router about nested resources in the router
  • Replace all occurences of `mix phoenix` with `mix phx`
  • Phoenix now uses Makeup for syntax highlighting
  • Progress output during code reloading
  • Use new plug init mode to reduce compile-time plug deps
  • Update brunch to 2.10.12 in project generator
  • Update .gitignore templates
  • Allow Websocket Transport to copy conn fields to params
  • Resolve presence race and introduce new Presence API
  • Rework the introduction and organization of the Channels guide
  • Use static_push by default for the JS and CSS
  • Add instructions for custom domains on Heroku deploys
  • Upgrade expose-loader to 0.7.5
  • Add additional information on TLS config and HSTS to the Endpoint guilde.
phoenix questions on Stackoverflow (View All Questions)
  • Redirection inside a plug in Phoenix framework
  • Postgres - Phoenix/Elixir install errors
  • Elixir phoenix error when starting server
  • error during installing phoenix framework
  • Dynamically defining top level routes in Phoenix routes.ex
  • In a Phoenix app, where do the prepare_changes calls belong?
  • apache phoenix Join query performance
  • org.apache.hadoop.hbase.TableNotFoundException: SYSTEM.CATALOG exception with phoenix 4.5.2
  • Phoenix Error while trying to create table
  • Apache Phoenix DAO Testing
  • Apache Phoenix Current Time
  • parsing of where clause in phoenix
  • Can I use phoenix to achieve the feature like SQL's duplicate key?
  • Phoenix frameworks and validating embeds
  • Trying to use axios to make API call in a React/Phoenix App (using Brunch)
  • Phoenix Framework - How to populate a map field through a form_for?
  • How to add plug in router in phoenix elixir
  • How to make Javascript code run in Phoenix?
  • How to send emails with Phoenix framework
  • How to write a custom model in elixir / phoenix without being object-oriented?
  • Deploying phoenix framework on heroku with webpack
  • How to create a Phoenix Table / View over an Existing Hbase table
  • creating a Phoenix index in Hortonworks sandbox doesnt work
  • Does Phoenix Code_Reloader Only Reload Elixir Code?
  • Apache Phoenix - Insert multiple rows with one upsert statement
  • Render many to many relationship JSON in Phoenix Framework
  • Phoenix Framework with code reloading enabled, is pretty slow on Windows
  • Using Phoenix with Cloudera Hbase (installed from repo)
  • Not finding my HBase table columns in my Phoenix table
  • APACHE PHOENIX : Identify each column name and its data in region server coprocessor
phoenix list of languages used
phoenix latest release notes

For those interested in a detailed overview of the changes and design decisions, check out my LonestarElixir keynote that just went live:

To use the new project generator, you can install the archive with the following command:

$ mix archive.install

As always, we have an upgrade guide with detailed instructions for migrating from 1.2.x projects:

Full changelog:

1.3.0-rc.0 (2017-03-01)

  • Enhancements
    • [Generator] Add new,, project generators with improved application structure and support for umbrella applications
    • [Generator] Add new phx.gen.html and phx.gen.json resource generators with improved isolation of API boundaries
    • [Controller] Add current_path and current_url to generate a connection's path and url
    • [Controller] Introduce action_fallback to registers a plug to call as a fallback to the controller action
    • [Controller] Wrap exceptions at controller to maintain connection state
    • [Channel] Add ability to configure channel event logging with :log_join and :log_handle_in options
    • [Channel] Warn on unhandled handle_info/2 messages
    • [Channel] Channels now distinguish from graceful exits and application restarts, allowing clients to enter error mode and reconnected after cold deploys.
    • [Router] document match support for matching on any http method with the special :* argument
    • [ConnTest] Add redirected_params/1 to return the named params matched in the router for the redirected URL
  • Deprecations
    • [Generator] All phoenix.* mix tasks have been deprecated in favor of new phx.* tasks
  • JavaScript client enhancements
    • Add ability to pass encode and decode functions to socket constructor for custom encoding and decoding of outgoing and incoming messages.
    • Detect heartbeat timeouts on client to handle ungraceful connection loss for faster socket error detection
    • Add support for AMD/RequireJS
  • Enhancements
    • [Router] Improve errors for invalid route paths
    • [Plug] Include new development error pages
  • Bug Fixes
    • [Endpoint] Fixed issue where endpoint would fail to code reload on next request after an endpoint compilation error

1.2.0 (2016-6-23)

See these 1.1.x to 1.2.x upgrade instructions to bring your existing apps up to speed.

  • Enhancements
    • [CodeReloader] The lib/ directory is now code reloaded by default along with web/ in development
    • [Channel] Add :phoenix_channel_join instrumentation hook
    • [View] Generate private render_template/2 clauses for views to allow overriding render/2 clauses before rendering templates
    • [View] Add :path and :pattern options to allow wildcard template inclusion as well as customized template directory locations
  • Deprecations

    • [Endpoint] Generated subscribe/3 and unsubscribe/2 clauses have been deprecated in favor of subscribe/2 and unsubscribe/1 which uses the caller's pid
    • [PubSub] Phoenix.PubSub.subscribe/3 and Phoenix.PubSub.unsubscribe/2 have been deprecated in favor of subscribe/2 and unsubscribe/1 which uses the caller's pid
    • [Watcher] Using the :root endpoint configuration for watchers is deprecated. Pass the :cd option at the end of your watcher argument list in config/dev.exs. For example:
    watchers: [node: ["node_modules/brunch/bin/brunch", "watch", "--stdin",
               cd: Path.expand("../", __DIR__)]]
  • Bug Fixes

    • [Template] Prevent infinite call stack when rendering a non-existent template from template_not_found
  • JavaScript client enhancements

    • Add Presence object for syncing presence state between client and server
    • Use return value of channel onMessage callback for specialized message transformations before dispatching to the channel
  • JavaScript client backward incompatible changes

    • Presence.syncState and Presence.syncDiff now return a copy of the state instead of mutating it
Other projects in Elixir